mirror of
https://github.com/hpd840321/starRiverProperty.git
synced 2026-06-09 08:20:31 +08:00
fix: relocate cwos-portal decompiled output to correct path; remove nested directory
Former-commit-id: dc30d42a8c55ed8b2382a41dc2434233fbed9930
This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
# docs/ — 文档中心
|
||||
|
||||
## OVERVIEW
|
||||
starRiverProperty 全仓文档集中地:架构说明、业务走查、构建环境、代码风格、运维脚本。原 `dev-support/` 内容已迁入此处。
|
||||
|
||||
## STRUCTURE
|
||||
```
|
||||
docs/
|
||||
├── README.md # 文档索引与当前排期
|
||||
├── AGENTS.md # ← 本文件
|
||||
├── architecture/ # 工程结构
|
||||
│ ├── Maven聚合工程说明.md # 5 个聚合工程定位
|
||||
│ ├── 对外接口不变-远程调用与性能优化约定.md # HTTP/Feign 契约约束
|
||||
│ └── 对外接口不变-走查任务与状态.md # 代码走查清单
|
||||
├── business/ # 业务说明
|
||||
│ ├── 访客注册与派梯楼层业务流程走查.md # 访客派梯 Feign 调用链
|
||||
│ └── 租户访客默认楼层技术产品方案.md # 多租户默认楼层方案
|
||||
├── build/ # 构建环境
|
||||
│ └── ORIGINAL_BUILD_JDK.txt # JDK 8 依据
|
||||
├── style/ # 代码风格
|
||||
│ └── alibaba-eclipse-codestyle.xml # P3C Eclipse Formatter
|
||||
└── operations/ # 运维脚本
|
||||
└── deploy_cw_elevator_v1_lib_to_nexus.py # V1 lib → Nexus
|
||||
```
|
||||
|
||||
## WHERE TO LOOK
|
||||
|
||||
| Task | Location | Notes |
|
||||
|------|----------|-------|
|
||||
| 当前迭代排期 | `README.md` | 前端跳过、后端优先的迭代范围 |
|
||||
| 聚合工程关系 | `architecture/Maven聚合工程说明.md` | 模块依赖与工程定位 |
|
||||
| 接口契约约束 | `architecture/对外接口不变-远程调用与性能优化约定.md` | 不可扩展的 HTTP/Feign 边界 |
|
||||
| 走查任务清单 | `architecture/对外接口不变-走查任务与状态.md` | 可修正与须确认项 |
|
||||
| 代码风格配置 | `style/alibaba-eclipse-codestyle.xml` | P3C 格式化 XML |
|
||||
| JDK 版本依据 | `build/ORIGINAL_BUILD_JDK.txt` | JDK 8 强制依据 |
|
||||
| Nexus 上传 | `operations/deploy_cw_elevator_v1_lib_to_nexus.py` | V1 lib 批量部署 |
|
||||
|
||||
## CONVENTIONS
|
||||
|
||||
- 文档用中文撰写(README.md 及所有架构/业务文档)
|
||||
- `docs/` 是文档唯一定位点,`dev-support/` 已废弃
|
||||
- 格式化 XML 路径:所有 `maven-*/pom.xml` 的 `alibaba.eclipse.codestyle.path` 均指向 `docs/style/`
|
||||
- 运行 JAR 还原产物不在 `docs/`,而在 `artifacts/decompiled/`
|
||||
@@ -0,0 +1,51 @@
|
||||
# V1 / V2 电梯应用 API 调用链源码比对白名单
|
||||
|
||||
本文约定:**每次发布或横向对拍异常排查**时,优先仅对下列文件做 V1 与 V2 的语义级 diff,避免整仓反编译树与 Maven 源码的「格式噪声」干扰判断。
|
||||
|
||||
## 用途
|
||||
|
||||
- 核对「HTTP 入口 → Service → Feign/DAO」是否与历史 V1 行为一致。
|
||||
- 与 `maven-cw-elevator-application/tools/elevator_api_parity/` 对拍清单互补:白名单覆盖曾出现 **code_only 不一致** 的典型链路。
|
||||
|
||||
## 比对基线(仓库内路径)
|
||||
|
||||
| 侧 | 根路径 |
|
||||
|----|--------|
|
||||
| **V2(Maven 源码)** | `maven-cw-elevator-application/cw-elevator-application-web/src/main/java/cn/cloudwalk/elevator/`(web)<br>`maven-cw-elevator-application/cw-elevator-application-service/src/main/java/cn/cloudwalk/elevator/`(service) |
|
||||
| **V1(反编译树,与 1.0-SNAPSHOT 模块 JAR 对齐)** | `artifacts/decompiled/trees/cw-elevator-application-web-1.0-SNAPSHOT.jar.src/cn/cloudwalk/elevator/`(web)<br>`artifacts/decompiled/trees/cw-elevator-application-service-1.0-SNAPSHOT.jar.src/cn/cloudwalk/elevator/`(service) |
|
||||
|
||||
若线网 V1 为 **另一 fat-jar**,应先确认其反编译树或 CFR 输出与上表 V1 根是否同源,再执行比对。
|
||||
|
||||
## 白名单(相对上述「根」的类路径)
|
||||
|
||||
| 优先级 | 相对路径 | 说明 |
|
||||
|--------|----------|------|
|
||||
| P0 | `person/controller/AcsPersonController.java` | `person/add`、`person/edit`、`person/pageByApp`、`timeDetail` 等 |
|
||||
| P0 | `record/controller/AcsElevatorRecordController.java` | `record/page`、`analyse/cycle|count`、`page/request` |
|
||||
| P0 | `passrule/controller/AcsPassRuleController.java` | `passRule/add` 等规则入口 |
|
||||
| P0 | `person/impl/PersonRuleServiceImpl.java` | `person/add` 业务链、`76260527` 空设备等 |
|
||||
| P0 | `person/impl/AcsPersonServiceImpl.java` | `edit`、`pageByApp`、`timeDetail`、图库/设备 Feign 组装 |
|
||||
| P0 | `record/impl/AcsElevatorRecordServiceImpl.java` | `openRecord`、`analyseCycle`、`analyseCount`、`pageInfo` |
|
||||
| P1 | `passrule/impl/AcsPassRuleServiceImpl.java` | 规则新增/编辑主流程 |
|
||||
| P1 | `passrule/impl/ImageRuleRefServiceImpl.java` | `addOnlyRule` 等与 `76260527` 相关分支 |
|
||||
| P1 | `common/AbstractCloudwalkController.java` | `getCloudwalkContext()` 等与请求头/会话相关 |
|
||||
|
||||
按需扩展时,应先在 `api_catalog.json` 或走查清单中标注接口 id,再增补对应 Controller/Service,**避免无界扫 diff**。
|
||||
|
||||
## 建议命令(忽略空白,便于看语义)
|
||||
|
||||
在仓库根目录执行,示例(web 单文件):
|
||||
|
||||
```bash
|
||||
diff -uw \
|
||||
artifacts/decompiled/trees/cw-elevator-application-web-1.0-SNAPSHOT.jar.src/cn/cloudwalk/elevator/person/controller/AcsPersonController.java \
|
||||
maven-cw-elevator-application/cw-elevator-application-web/src/main/java/cn/cloudwalk/elevator/person/controller/AcsPersonController.java
|
||||
```
|
||||
|
||||
`service` 模块将两条根路径中的 `...-web-...` / `cw-elevator-application-web` 换成 `...-service-...` / `cw-elevator-application-service` 即可。
|
||||
|
||||
## 相关文档
|
||||
|
||||
- V1/V2 依赖比对(`lib`/`cw_lib` 与反应堆坐标):`V1-V2-电梯依赖比对.md`
|
||||
- 对拍约定与清单说明:`../../maven-cw-elevator-application/tools/elevator_api_parity/API-RECONCILIATION.md`
|
||||
- 走查任务总览:`对外接口不变-走查任务与状态.md`
|
||||
@@ -0,0 +1,169 @@
|
||||
# V1 与 V2 电梯应用依赖:详细比对说明
|
||||
|
||||
本文说明 **V1 历史运行包** 与 **V2 Maven 反应堆** 在依赖上的对应关系、已核对的一致项、已知差异与后续可执行动作。比对以仓库内 `**cw-elevator-application-V1.0.0.20211103`** 为 V1 基线。
|
||||
|
||||
---
|
||||
|
||||
## 1. V1 运行包 classpath 结构(与 V2 可执行 JAR 的对应)
|
||||
|
||||
|
||||
| 位置 | 路径 | 数量 | 含义 |
|
||||
| -------------------- | ------------------------------------------------------ | ------- | --------------------------------------------------------------------------------- |
|
||||
| **第三方与 Spring 栈** | `cw-elevator-application-V1.0.0.20211103/lib/*.jar` | **245** | 与 Boot 1.5、Spring Cloud、MyBatis、Netty、Feign 等一致;文件名即 **artifactId-version** 形态为主。 |
|
||||
| **云从 + 电梯模块 + 智能组件** | `cw-elevator-application-V1.0.0.20211103/cw_lib/*.jar` | **24** | 与 V2 `pom.xml` 中 **显式声明版本** 的坐标对齐;电梯四模块以 **1.0-SNAPSHOT** JAR 形式落盘。 |
|
||||
|
||||
|
||||
V2 可执行包由 `spring-boot-maven-plugin` repackage 后,上述两类依赖会进入 `**BOOT-INF/lib/`**;概念上 **V2 ≈ cw_lib ∪ lib 的传递闭包**,但 **具体 JAR 列表以 Maven 解析结果为准**。
|
||||
|
||||
**完整文件名清单(机器可读)**:
|
||||
|
||||
- `docs/architecture/data/v1-elevator-lib-jars.txt`(245 行)
|
||||
- `docs/architecture/data/v1-elevator-cw-lib-jars.txt`(24 行)
|
||||
|
||||
---
|
||||
|
||||
## 2. `cw_lib`(24)与 V2 反应堆版本:逐项一致
|
||||
|
||||
下列 JAR 在 V1 `cw_lib` 中的 **文件名** 与 V2 `maven-cw-elevator-application/pom.xml` 的 `<properties>` / `dependencyManagement` **一致**(脚本已自动核对):
|
||||
|
||||
|
||||
| # | V1 `cw_lib` 文件名 | V2 约束来源 |
|
||||
| --- | --------------------------------------------------------- | ----------------------------------------------------------------------------- |
|
||||
| 1 | `cloudwalk-common-event-3.7.2-Brussels-SRX.jar` | `cloudwalk.internal.version` |
|
||||
| 2 | `cloudwalk-common-result-3.7.2-Brussels-SRX.jar` | `cloudwalk.legacy.public.version` |
|
||||
| 3 | `cloudwalk-common-serial-3.7.2-Brussels-SRX.jar` | `cloudwalk.legacy.public.version` |
|
||||
| 4 | `cloudwalk-common-service-3.7.2-Brussels-SRX.jar` | `cloudwalk.internal.version` |
|
||||
| 5 | `cloudwalk-common-web-3.7.2-Brussels-SRX.jar` | `cloudwalk.legacy.public.version` |
|
||||
| 6 | `cloudwalk-device-manager-common-2.0.2.jar` | V1 随包固定;V2 由 `**intelligent-cwoscomponent-rest`** 等传递引入(反应堆未单独 pin 版本,以解析树为准) |
|
||||
| 7 | `cloudwalk-device-manager-interface-2.0.2.jar` | 同上 |
|
||||
| 8 | `cloudwalk-device-sdk-protocol-entity-2.2.0.jar` | 同上 |
|
||||
| 9 | `cloudwalk-intelligent-component-lock-1.1.1-SNAPSHOT.jar` | `intelligent.lock.version` |
|
||||
| 10 | `cw-elevator-application-common-1.0-SNAPSHOT.jar` | V2:`cn.cloudwalk.elevator:cw-elevator-application-common:**2.0-SNAPSHOT`** |
|
||||
| 11 | `cw-elevator-application-data-1.0-SNAPSHOT.jar` | V2:`…-data:**2.0-SNAPSHOT`** |
|
||||
| 12 | `cw-elevator-application-service-1.0-SNAPSHOT.jar` | V2:`…-service:**2.0-SNAPSHOT**` |
|
||||
| 13 | `cw-elevator-application-web-1.0-SNAPSHOT.jar` | V2:`…-web:**2.0-SNAPSHOT**` |
|
||||
| 14 | `cwos-common-aks-interface-1.0.0-SNAPSHOT.jar` | V1 随包;V2 若未在反应堆显式声明则来自传递依赖 |
|
||||
| 15 | `cwos-component-resource-data-1.0.0-SNAPSHOT.jar` | 同上 |
|
||||
| 16 | `cwos-component-resource-interface-1.0.0-SNAPSHOT.jar` | 同上 |
|
||||
| 17 | `cwos-device-authentication-interface-1.0.0-SNAPSHOT.jar` | 同上 |
|
||||
| 18 | `cwos-java-sdk-resource-1.0.0-SNAPSHOT.jar` | `cwos.sdk.resource.version` |
|
||||
| 19 | `cwos-portal-interface-1.0.0-SNAPSHOT.jar` | V1 随包;V2 传递 |
|
||||
| 20 | `cwos-sdk-event-1.5.0-SNAPSHOT.jar` | `cwos.sdk.event.version` |
|
||||
| 21 | `davinci-manager-common-1.1.7-SNAPSHOT.jar` | 与 `davinci-manager-storage` 同族 |
|
||||
| 22 | `davinci-manager-storage-1.1.7-SNAPSHOT.jar` | `davinci.manager.storage.version` |
|
||||
| 23 | `intelligent-cwoscomponent-interface-2.9.2-xinghewan.jar` | `intelligent.cwoscomponent.version` |
|
||||
| 24 | `intelligent-cwoscomponent-rest-2.9.2-xinghewan.jar` | `intelligent.cwoscomponent.version` |
|
||||
|
||||
|
||||
**结论(云从/智能主干)**:与对拍、校验切面相关的 `**cloudwalk-common-*` 3.7.2-Brussels-SRX** 与 `**intelligent-cwoscomponent-*` 2.9.2-xinghewan** 等,**V1 cw_lib 与 V2 POM 显式口径一致**;对拍行为差异 **不宜** 首先归因于「cloudwalk 主版本不一致」。
|
||||
|
||||
**电梯自研模块**:V1 为 **1.0-SNAPSHOT** 四 JAR,V2 反应堆为 **2.0-SNAPSHOT** —— 属 **预期版本升级**,需用源码白名单比对(见 `V1-V2-电梯API源码比对白名单.md`),而非依赖坐标「偷偷不一致」。
|
||||
|
||||
---
|
||||
|
||||
## 3. V1 `lib`(245)与 V2 `dependencyManagement`:显式对齐项
|
||||
|
||||
V2 反应堆在 `<properties>` 中 **主动钉死**、且与 V1 `lib` 中 **常见文件名** 对齐的第三方包括(节选):
|
||||
|
||||
|
||||
| 属性 | 值 | V1 `lib` 中典型 JAR |
|
||||
| ------------------------------------------------------- | --------------- | --------------------------------------------- |
|
||||
| `fastjson.version` | 1.2.73 | `fastjson-1.2.73.jar` |
|
||||
| `guava.version` | 20.0 | `guava-20.0.jar` |
|
||||
| `poi.version` | 3.15 | `poi-3.15.jar`、`poi-ooxml-3.15.jar` |
|
||||
| `ant.version` | 1.9.6 | 见下节「多版本」 |
|
||||
| `mybatis-spring-boot.version` | 1.3.1 | `mybatis-spring-boot-starter-1.3.1.jar` |
|
||||
| `pagehelper.version` / `pagehelper-spring-boot.version` | 5.1.2 / 1.2.5 | `pagehelper-5.1.2.jar` 等 |
|
||||
| `shardingsphere.version` | 4.0.0 | `sharding-jdbc-spring-boot-starter-4.0.0.jar` |
|
||||
| `spring-cloud.version` | **Edgware.SR6** | 见下节 |
|
||||
|
||||
|
||||
**Spring Boot**:V2 父 POM 为 `**spring-boot-starter-parent` 1.5.17.RELEASE**;V1 `lib` 中可见 `**spring-boot-*-1.5.17.RELEASE.jar`**,主版本一致。
|
||||
|
||||
---
|
||||
|
||||
## 4. V1 `lib` 中的「多版本并存」风险(V2 由 BOM 收敛)
|
||||
|
||||
对 `lib` 内文件名做 **artifact 前缀聚合** 后,典型 **多版本** 包括:
|
||||
|
||||
|
||||
| 前缀 | 并存版本(示例) | 说明 |
|
||||
| ------------ | --------------- | ------------------------------------------------------------------- |
|
||||
| `feign-core` | 8.18.0 与 9.5.0 | 历史传递与 Netflix/OpenFeign 栈叠加;**实际生效顺序依赖 fat JAR Class-Path / 装载顺序**。 |
|
||||
| `ant` | 1.6.5 与 1.9.6 等 | V2 反应堆仅钉 `**ant.version` = 1.9.6**;V1 物理目录仍含旧 ant。 |
|
||||
| `rxjava` | 1.x 与 2.x | 常见于 Netflix + 其它客户端并存。 |
|
||||
|
||||
|
||||
V2 由 `**spring-boot-dependencies` + `spring-cloud-dependencies`(Edgware.SR6)** 统一解析,**理论上** 比「手工铺 245 个 jar」更可重复;若需 **字节级** 证明与 V1 运行时一致,应在 **同一 JDK** 下导出 `**mvn dependency:tree`** 与 V1 进程 `**jcmd <pid> VM.classloader_hierarchy`** / 或解压 fat JAR 的 `BOOT-INF/lib` 做集合 diff。
|
||||
|
||||
---
|
||||
|
||||
## 5. V2 反应堆「直接依赖」模块一览(非传递闭包)
|
||||
|
||||
|
||||
| 模块 | 直接引入的典型坐标(无版本处由 `dependencyManagement` 解析) |
|
||||
| --------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `cw-elevator-application-starter` | `spring-boot-starter-web`、MyBatis、Actuator、Cache、AOP、OpenFeign、`cw-elevator-application-web` |
|
||||
| `cw-elevator-application-web` | `cloudwalk-common-web`、`cw-elevator-application-service` |
|
||||
| `cw-elevator-application-service` | `cloudwalk-common-service`、`spring-tx`、`cloudwalk-common-serial`、`cwos-java-sdk-resource`、`jackson-datatype-jsr310`、`cloudwalk-intelligent-component-lock`、`cloudwalk-common-event`、`cwos-sdk-event`、`cw-elevator-application-data`、`davinci-manager-storage`、`intelligent-cwoscomponent-rest`、`spring-cloud-starter-openfeign`、`javax.annotation-api`、`jsr305` |
|
||||
| `cw-elevator-application-common` | `cloudwalk-common-result`、Guava、POI、Ant、thumbnailator、`commons-io`、fastjson、`tomcat-embed-core`、`cloudwalk-common-web`、`spring-boot-autoconfigure`、`commons-lang3`、ZXing、zip4j、`spring-web`、`spring-data-redis`、lombok、`jackson-datatype-jsr310` |
|
||||
| `cw-elevator-application-data` | `cw-elevator-application-common`、`cloudwalk-common-result`、`spring-beans`/`context`、MyBatis、mysql、`mybatis-spring-boot-starter`、HikariCP、pagehelper、shardingsphere |
|
||||
|
||||
|
||||
**与 V1 的差异点**:V2 `**cw-elevator-application-common`** 显式增加 `**spring-boot-autoconfigure`**(见模块内注释:私服上 `cloudwalk-common-web` 传递不完整时的 **编译 classpath 补齐**)。V1 若完全依赖传递,**编译期/工具链** 与 V2 可能略有不同,但 **运行时** 通常仍由 Boot 引入同一类库。
|
||||
|
||||
---
|
||||
|
||||
## 5.1 反应堆子模块报「在 nexus-public 找不到 sibling SNAPSHOT」
|
||||
|
||||
**现象**:`data` 拉 `cw-elevator-application-common`、`web` 拉 `service` 等,日志只出现 `Downloading from nexus-public: .../elevator/...`。
|
||||
|
||||
**原因**:全局 `~/.m2/settings.xml` 中 `**mirrorOf=*`**(或等价过宽)时,Maven 易把 **本反应堆未发布到私服的 SNAPSHOT** 也导向 Nexus,导致失败。**不需要**为此逐个 `deploy` 电梯子模块到私服。
|
||||
|
||||
**本仓库已落盘**:`maven-cw-elevator-application/.mvn/maven.config` + `.mvn/settings.xml`:用 `-s` **绕过** `~/.m2`;profile 激活 `**nexus-public`(http)**;并含 一条 `id=maven-default-http-blocker`、`mirrorOf=dummy` 的占位 `<mirror>`,用于覆盖 Maven 3.8.1+ 安装目录里对 `**external:http:*`** 的默认拦截(否则会出现 `Blocked mirror for repositories: [nexus-public (...http...)]`)。**不是** `mirrorOf=*`,不会把反应堆 sibling 整体导向私服。私服若需账号,请在 `.mvn/settings.xml` 内补 `<servers>`(勿提交密钥)。若 Nexus 已支持 **HTTPS**,更推荐改仓库 URL 为 `https://` 并删除该占位 mirror。
|
||||
|
||||
**隔离构建**:`./scripts/build_nexus_only.sh` 会额外 `purge` `**cn/cloudwalk/elevator`** 下 `*.lastUpdated`,并在使用 `clean install` 时把 sibling 写入隔离库。
|
||||
|
||||
---
|
||||
|
||||
## 6. 生成「V2 全量传递依赖树」与与 V1 的集合 diff(推荐下一步)
|
||||
|
||||
当前环境若 **无法安装反应堆子模块** 或 **无法访问 Nexus**,则无法在 CI 外自动生成 **V2 完整 245+ 级传递树**。请在 **可解析依赖** 的环境、于 `**maven-cw-elevator-application` 根**执行(**自动使用 `.mvn/settings.xml`**;与 `build_nexus_only.sh` 对齐隔离库时可加 `-Dmaven.repo.local=$PWD/.m2-elevator-nexus-only`):
|
||||
|
||||
```bash
|
||||
cd maven-cw-elevator-application
|
||||
mvn -pl cw-elevator-application-starter -am -DskipTests clean install
|
||||
mvn -pl cw-elevator-application-starter -am -DskipTests dependency:tree \
|
||||
-DoutputFile=cw-elevator-application-starter/target/v2-starter-dependency-tree.txt
|
||||
```
|
||||
|
||||
然后将 `**target/v2-starter-dependency-tree.txt**` 中的 `groupId:artifactId:jar:version` 与 `**docs/architecture/data/v1-elevator-lib-jars.txt**` 做集合差集(仅 artifactId-version 对齐即可),即可得到 **「V2 有而 V1 lib 无」** 与 **「V1 lib 有而 V2 未解析到」** 的完整列表。
|
||||
|
||||
---
|
||||
|
||||
## 7. 自动化脚本(可重复输出摘要)
|
||||
|
||||
仓库根目录执行:
|
||||
|
||||
```bash
|
||||
python3 scripts/compare_v1_v2_elevator_dependencies.py
|
||||
```
|
||||
|
||||
将打印:`cw_lib` 与 V2 属性对齐核对、V1 `lib` 多版本示例、以及生成 `dependency:tree` 的 Maven 命令提示。
|
||||
|
||||
---
|
||||
|
||||
## 8. 总括结论(供评估「下一步计划」)
|
||||
|
||||
1. **云从公共件 + intelligent 2.9.2 + davinci/cwos 等与对拍强相关的坐标**:V1 `cw_lib` 与 V2 `pom.xml` **已对齐**。
|
||||
2. **电梯四模块**:V1 **1.0-SNAPSHOT** JAR vs V2 **2.0-SNAPSHOT** 源码 —— **预期差异**,行为差应结合 **源码白名单 diff + 运行时** 看。
|
||||
3. **245 个第三方 JAR**:V2 由 **Boot 1.5.17 + Cloud Edgware.SR6 BOM** 收敛;V1 物理目录存在 **Feign/Ant/RxJava 多版本**,**与「仅业务源码不同」假设不完全相容** —— 若要对齐到「与 V1 进程 classpath 完全一致」,需 **依赖树 diff**,不能只盯 `cw_lib`。
|
||||
4. **下一步建议优先级**:① 在 CI 生成并归档 `**dependency:tree`**;② 与 `v1-elevator-lib-jars.txt` 做 **差集报告**;③ 对差集中 **多版本冲突** 项做 **运行时类加载验证**(仅静态比对不足以解释偶发 NPE/空响应)。
|
||||
|
||||
---
|
||||
|
||||
## 相关文档
|
||||
|
||||
- API 调用链源码比对白名单:`V1-V2-电梯API源码比对白名单.md`
|
||||
- 对拍与根因说明:`../../maven-cw-elevator-application/tools/elevator_api_parity/API-RECONCILIATION.md`
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
cloudwalk-common-event-3.7.2-Brussels-SRX.jar
|
||||
cloudwalk-common-result-3.7.2-Brussels-SRX.jar
|
||||
cloudwalk-common-serial-3.7.2-Brussels-SRX.jar
|
||||
cloudwalk-common-service-3.7.2-Brussels-SRX.jar
|
||||
cloudwalk-common-web-3.7.2-Brussels-SRX.jar
|
||||
cloudwalk-device-manager-common-2.0.2.jar
|
||||
cloudwalk-device-manager-interface-2.0.2.jar
|
||||
cloudwalk-device-sdk-protocol-entity-2.2.0.jar
|
||||
cloudwalk-intelligent-component-lock-1.1.1-SNAPSHOT.jar
|
||||
cw-elevator-application-common-1.0-SNAPSHOT.jar
|
||||
cw-elevator-application-data-1.0-SNAPSHOT.jar
|
||||
cw-elevator-application-service-1.0-SNAPSHOT.jar
|
||||
cw-elevator-application-web-1.0-SNAPSHOT.jar
|
||||
cwos-common-aks-interface-1.0.0-SNAPSHOT.jar
|
||||
cwos-component-resource-data-1.0.0-SNAPSHOT.jar
|
||||
cwos-component-resource-interface-1.0.0-SNAPSHOT.jar
|
||||
cwos-device-authentication-interface-1.0.0-SNAPSHOT.jar
|
||||
cwos-java-sdk-resource-1.0.0-SNAPSHOT.jar
|
||||
cwos-portal-interface-1.0.0-SNAPSHOT.jar
|
||||
cwos-sdk-event-1.5.0-SNAPSHOT.jar
|
||||
davinci-manager-common-1.1.7-SNAPSHOT.jar
|
||||
davinci-manager-storage-1.1.7-SNAPSHOT.jar
|
||||
intelligent-cwoscomponent-interface-2.9.2-xinghewan.jar
|
||||
intelligent-cwoscomponent-rest-2.9.2-xinghewan.jar
|
||||
@@ -0,0 +1,245 @@
|
||||
activation-1.1.jar
|
||||
aliyun-java-sdk-core-3.2.8.jar
|
||||
aliyun-java-sdk-dysmsapi-1.1.0.jar
|
||||
animal-sniffer-annotation-1.0.jar
|
||||
annotations-2.0.0.jar
|
||||
ant-1.6.5.jar
|
||||
ant-1.9.6.jar
|
||||
ant-apache-bsf-1.9.4.jar
|
||||
ant-jakarta-oro-1.6.1.jar
|
||||
ant-launcher-1.9.6.jar
|
||||
antlr4-runtime-4.7.2.jar
|
||||
ant-nodeps-1.8.1.jar
|
||||
archaius-core-0.6.6.jar
|
||||
asm-5.0.3.jar
|
||||
asm-analysis-5.0.3.jar
|
||||
asm-tree-5.0.3.jar
|
||||
asm-util-5.0.3.jar
|
||||
aspectjweaver-1.8.13.jar
|
||||
bcpkix-jdk15on-1.55.jar
|
||||
bcprov-jdk15on-1.55.jar
|
||||
bsf-2.4.0.jar
|
||||
byte-buddy-1.9.6.jar
|
||||
cache-api-1.0.0.jar
|
||||
classmate-1.3.4.jar
|
||||
classworlds-1.1-alpha-2.jar
|
||||
commons-codec-1.10.jar
|
||||
commons-collections-3.2.2.jar
|
||||
commons-collections4-4.1.jar
|
||||
commons-compress-1.9.jar
|
||||
commons-configuration-1.8.jar
|
||||
commons-fileupload-1.3.1.jar
|
||||
commons-io-2.5.jar
|
||||
commons-lang-2.6.jar
|
||||
commons-lang3-3.5.jar
|
||||
commons-logging-1.2.jar
|
||||
commons-pool2-2.4.3.jar
|
||||
consul-api-1.3.0.jar
|
||||
core-3.3.3.jar
|
||||
curvesapi-1.04.jar
|
||||
d3js-3.4.11.jar
|
||||
dom4j-1.6.1.jar
|
||||
ehcache-2.10.5.jar
|
||||
encrypt-core-merge-4.0.0.jar
|
||||
encrypt-core-rewrite-4.0.0.jar
|
||||
fastjson-1.2.73.jar
|
||||
feign-core-8.18.0.jar
|
||||
feign-core-9.5.0.jar
|
||||
feign-form-3.0.3.jar
|
||||
feign-form-spring-3.0.3.jar
|
||||
feign-hystrix-9.5.0.jar
|
||||
feign-okhttp-8.18.0.jar
|
||||
feign-slf4j-9.5.0.jar
|
||||
freemarker-2.3.28.jar
|
||||
fst-2.56.jar
|
||||
groovy-2.4.5-indy.jar
|
||||
gson-2.8.5.jar
|
||||
guava-20.0.jar
|
||||
hamcrest-core-1.3.jar
|
||||
HdrHistogram-2.1.9.jar
|
||||
hibernate-validator-5.3.6.Final.jar
|
||||
HikariCP-2.5.1.jar
|
||||
httpclient-4.5.6.jar
|
||||
httpcore-4.4.10.jar
|
||||
hystrix-core-1.5.12.jar
|
||||
hystrix-javanica-1.5.12.jar
|
||||
hystrix-metrics-event-stream-1.5.12.jar
|
||||
hystrix-serialization-1.5.12.jar
|
||||
jackson-annotations-2.11.2.jar
|
||||
jackson-core-2.11.2.jar
|
||||
jackson-databind-2.11.2.jar
|
||||
jackson-dataformat-yaml-2.11.2.jar
|
||||
jackson-datatype-jsr310-2.11.2.jar
|
||||
jackson-module-afterburner-2.11.2.jar
|
||||
jade-plugin-common-1.3.8.jar
|
||||
javassist-3.21.0-GA.jar
|
||||
javax.inject-1.jar
|
||||
jboss-logging-3.3.2.Final.jar
|
||||
jcl-over-slf4j-1.7.25.jar
|
||||
jdom-1.1.2.jar
|
||||
jedis-2.9.0.jar
|
||||
jersey-apache-client4-1.19.1.jar
|
||||
jersey-client-1.19.1.jar
|
||||
jersey-core-1.19.1.jar
|
||||
joda-time-2.9.9.jar
|
||||
jodd-bean-3.7.1.jar
|
||||
jodd-core-3.7.1.jar
|
||||
jquery-2.1.1.jar
|
||||
jsoup-1.9.2.jar
|
||||
jsqlparser-1.2.jar
|
||||
jsr311-api-1.1.1.jar
|
||||
jul-to-slf4j-1.7.25.jar
|
||||
junit-4.12.jar
|
||||
kafka-clients-2.3.0.jar
|
||||
log4j-over-slf4j-1.7.25.jar
|
||||
logback-classic-1.1.11.jar
|
||||
logback-core-1.1.11.jar
|
||||
lombok-1.16.18.jar
|
||||
lz4-java-1.6.0.jar
|
||||
mail-1.4.4.jar
|
||||
maven-artifact-2.0.5.jar
|
||||
maven-artifact-manager-2.0.5.jar
|
||||
maven-model-2.0.5.jar
|
||||
maven-plugin-anno-1.4.1.jar
|
||||
maven-plugin-api-2.0.5.jar
|
||||
maven-profile-2.0.5.jar
|
||||
maven-project-2.0.5.jar
|
||||
maven-repository-metadata-2.0.5.jar
|
||||
maven-settings-2.0.5.jar
|
||||
mybatis-3.4.6.jar
|
||||
mybatis-spring-1.3.2.jar
|
||||
mybatis-spring-boot-autoconfigure-1.3.1.jar
|
||||
mybatis-spring-boot-starter-1.3.1.jar
|
||||
mysql-connector-java-5.1.47.jar
|
||||
netflix-commons-util-0.1.1.jar
|
||||
netflix-statistics-0.1.1.jar
|
||||
netty-buffer-4.1.33.Final.jar
|
||||
netty-codec-4.1.33.Final.jar
|
||||
netty-codec-dns-4.1.33.Final.jar
|
||||
netty-common-4.1.33.Final.jar
|
||||
netty-handler-4.1.33.Final.jar
|
||||
netty-resolver-4.1.33.Final.jar
|
||||
netty-resolver-dns-4.1.33.Final.jar
|
||||
netty-transport-4.1.33.Final.jar
|
||||
objenesis-2.1.jar
|
||||
okhttp-3.2.0.jar
|
||||
okio-1.6.0.jar
|
||||
opencsv-2.3.jar
|
||||
pagehelper-5.1.2.jar
|
||||
pagehelper-spring-boot-autoconfigure-1.2.5.jar
|
||||
parboiled-core-1.1.7.jar
|
||||
parboiled-java-1.1.7.jar
|
||||
pegdown-1.6.0.jar
|
||||
plexus-container-default-1.0-alpha-9.jar
|
||||
plexus-utils-1.1.jar
|
||||
poi-3.15.jar
|
||||
poi-ooxml-3.15.jar
|
||||
poi-ooxml-schemas-3.15.jar
|
||||
reactive-streams-1.0.2.jar
|
||||
reactor-core-2.0.8.RELEASE.jar
|
||||
reactor-stream-2.0.8.RELEASE.jar
|
||||
redisson-2.15.2.jar
|
||||
redisson-spring-boot-starter-2.15.2.jar
|
||||
redisson-spring-data-18-2.15.2.jar
|
||||
reflections-0.9.9-RC2.jar
|
||||
reflections-maven-0.9.9-RC2.jar
|
||||
ribbon-2.2.5.jar
|
||||
ribbon-core-2.2.5.jar
|
||||
ribbon-httpclient-2.2.5.jar
|
||||
ribbon-loadbalancer-2.2.5.jar
|
||||
ribbon-transport-2.2.5.jar
|
||||
rxjava-1.2.0.jar
|
||||
rxjava-2.1.13.jar
|
||||
rxnetty-0.4.9.jar
|
||||
rxnetty-contexts-0.4.9.jar
|
||||
rxnetty-servo-0.4.9.jar
|
||||
servo-core-0.10.1.jar
|
||||
servo-internal-0.10.1.jar
|
||||
sharding-core-api-4.0.0.jar
|
||||
sharding-core-common-4.0.0.jar
|
||||
sharding-core-entry-4.0.0.jar
|
||||
sharding-core-execute-4.0.0.jar
|
||||
sharding-core-merge-4.0.0.jar
|
||||
sharding-core-rewrite-4.0.0.jar
|
||||
sharding-core-route-4.0.0.jar
|
||||
sharding-jdbc-core-4.0.0.jar
|
||||
sharding-jdbc-spring-boot-starter-4.0.0.jar
|
||||
shardingsphere-execute-4.0.0.jar
|
||||
shardingsphere-merge-4.0.0.jar
|
||||
shardingsphere-rewrite-engine-4.0.0.jar
|
||||
shardingsphere-spi-4.0.0.jar
|
||||
shardingsphere-sql-parser-engine-4.0.0.jar
|
||||
shardingsphere-sql-parser-mysql-4.0.0.jar
|
||||
shardingsphere-sql-parser-oracle-4.0.0.jar
|
||||
shardingsphere-sql-parser-postgresql-4.0.0.jar
|
||||
shardingsphere-sql-parser-relation-4.0.0.jar
|
||||
shardingsphere-sql-parser-spi-4.0.0.jar
|
||||
shardingsphere-sql-parser-sql92-4.0.0.jar
|
||||
shardingsphere-sql-parser-sqlserver-4.0.0.jar
|
||||
sharding-spring-boot-util-4.0.0.jar
|
||||
sharding-transaction-core-4.0.0.jar
|
||||
slf4j-api-1.7.25.jar
|
||||
snakeyaml-1.17.jar
|
||||
snappy-java-1.1.7.3.jar
|
||||
spring-aop-4.3.29.RELEASE.jar
|
||||
spring-aspects-4.3.29.RELEASE.jar
|
||||
spring-beans-4.3.29.RELEASE.jar
|
||||
spring-boot-1.5.17.RELEASE.jar
|
||||
spring-boot-actuator-1.5.17.RELEASE.jar
|
||||
spring-boot-autoconfigure-1.5.17.RELEASE.jar
|
||||
spring-boot-starter-1.5.17.RELEASE.jar
|
||||
spring-boot-starter-actuator-1.5.17.RELEASE.jar
|
||||
spring-boot-starter-aop-1.5.17.RELEASE.jar
|
||||
spring-boot-starter-cache-1.5.17.RELEASE.jar
|
||||
spring-boot-starter-data-redis-1.5.17.RELEASE.jar
|
||||
spring-boot-starter-freemarker-1.5.17.RELEASE.jar
|
||||
spring-boot-starter-jdbc-1.5.17.RELEASE.jar
|
||||
spring-boot-starter-logging-1.5.17.RELEASE.jar
|
||||
spring-boot-starter-tomcat-1.5.17.RELEASE.jar
|
||||
spring-boot-starter-web-1.5.17.RELEASE.jar
|
||||
spring-cloud-commons-1.3.5.RELEASE.jar
|
||||
spring-cloud-consul-core-1.3.5.RELEASE.jar
|
||||
spring-cloud-consul-discovery-1.3.5.RELEASE.jar
|
||||
spring-cloud-context-1.3.5.RELEASE.jar
|
||||
spring-cloud-netflix-core-1.4.6.RELEASE.jar
|
||||
spring-cloud-netflix-hystrix-dashboard-1.4.6.RELEASE.jar
|
||||
spring-cloud-starter-1.3.5.RELEASE.jar
|
||||
spring-cloud-starter-consul-1.3.5.RELEASE.jar
|
||||
spring-cloud-starter-consul-discovery-1.3.5.RELEASE.jar
|
||||
spring-cloud-starter-netflix-archaius-1.4.6.RELEASE.jar
|
||||
spring-cloud-starter-netflix-hystrix-1.4.6.RELEASE.jar
|
||||
spring-cloud-starter-netflix-hystrix-dashboard-1.4.6.RELEASE.jar
|
||||
spring-cloud-starter-netflix-ribbon-1.4.6.RELEASE.jar
|
||||
spring-cloud-starter-openfeign-1.4.6.RELEASE.jar
|
||||
spring-cloud-starter-ribbon-1.4.6.RELEASE.jar
|
||||
spring-context-4.3.29.RELEASE.jar
|
||||
spring-context-support-4.3.29.RELEASE.jar
|
||||
spring-core-4.3.29.RELEASE.jar
|
||||
spring-data-commons-1.13.16.RELEASE.jar
|
||||
spring-data-keyvalue-1.2.16.RELEASE.jar
|
||||
spring-data-redis-1.8.16.RELEASE.jar
|
||||
spring-expression-4.3.29.RELEASE.jar
|
||||
spring-jdbc-4.3.29.RELEASE.jar
|
||||
spring-oxm-4.3.29.RELEASE.jar
|
||||
spring-security-crypto-4.2.9.RELEASE.jar
|
||||
spring-security-rsa-1.0.3.RELEASE.jar
|
||||
springside-core-4.2.3-GA.jar
|
||||
spring-tx-4.3.29.RELEASE.jar
|
||||
spring-web-4.3.29.RELEASE.jar
|
||||
spring-webmvc-4.3.29.RELEASE.jar
|
||||
stax-api-1.0.1.jar
|
||||
thumbnailator-0.4.8.jar
|
||||
tomcat-annotations-api-8.5.34.jar
|
||||
tomcat-embed-core-8.5.34.jar
|
||||
tomcat-embed-el-8.5.34.jar
|
||||
tomcat-embed-websocket-8.5.34.jar
|
||||
tomcat-jdbc-8.5.34.jar
|
||||
tomcat-juli-8.5.34.jar
|
||||
validation-api-1.1.0.Final.jar
|
||||
wagon-provider-api-1.0-beta-2.jar
|
||||
xml-apis-1.4.01.jar
|
||||
xmlbeans-2.6.0.jar
|
||||
xpp3-1.1.3.4-RC8.jar
|
||||
xstream-1.1.3.jar
|
||||
zip4j-2.6.2.jar
|
||||
zstd-jni-1.4.0-1.jar
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,209 @@
|
||||
# frontend-source/ 反编译与重建方案设计
|
||||
|
||||
**日期**: 2026-04-29
|
||||
**版本**: 1.0
|
||||
**状态**: 待审查
|
||||
|
||||
## 1. 背景与目标
|
||||
|
||||
### 背景
|
||||
- `frontend/` 目录包含 28 个 Vue 2 + Element UI 前端应用,均为 webpack 构建的 dist 产物
|
||||
- 原始源码(.vue / webpack.config.js / package.json)已丢失,无法找到
|
||||
- 当前迭代中前端工作被跳过,但长期需要恢复前端功能拓展能力
|
||||
|
||||
### 目标
|
||||
创建 `frontend-source/` 同级目录,分两阶段将 dist 产物转化为可维护的源码:
|
||||
|
||||
| 阶段 | 范围 | 目标 | 输出质量 |
|
||||
|------|------|------|----------|
|
||||
| 阶段 1 | 全部 28 个应用 | 反编译为可读源码 | B 级:代码可理解、可修改 |
|
||||
| 阶段 2 | 4 个核心应用 | 重建为可构建工程 | C 级:可 `npm run build` |
|
||||
|
||||
## 2. 目录结构
|
||||
|
||||
```
|
||||
反编译/
|
||||
├── frontend/ # 现有 dist 产物(只读)
|
||||
└── frontend-source/ # 新建目标目录
|
||||
├── AGENTS.md
|
||||
├── .gitignore # node_modules/
|
||||
│
|
||||
├── decompiled/ # 阶段 1 产物(B 级反编译)
|
||||
│ ├── cwos-portal/
|
||||
│ ├── elevator-front/
|
||||
│ ├── alarm-front/
|
||||
│ ├── front_acs/
|
||||
│ ├── ...(其余 24 个)
|
||||
│ │
|
||||
│ └── [每个应用结构]:
|
||||
│ ├── README.md # API 清单 + 路由表 + 组件树
|
||||
│ ├── src/
|
||||
│ │ ├── views/ # 页面级模块
|
||||
│ │ ├── components/ # 自定义组件
|
||||
│ │ ├── api/ # API 端点清单
|
||||
│ │ └── router/ # 路由定义
|
||||
│ ├── static/ # CSS/img/font 复用
|
||||
│ └── index.html # 原样
|
||||
│
|
||||
├── projects/ # 阶段 2 产物(C 级重建)
|
||||
│ ├── cwos-portal/ # 物业管理门户
|
||||
│ │ ├── package.json
|
||||
│ │ ├── vue.config.js
|
||||
│ │ ├── src/
|
||||
│ │ │ ├── main.js
|
||||
│ │ │ ├── App.vue
|
||||
│ │ │ ├── views/
|
||||
│ │ │ ├── components/
|
||||
│ │ │ ├── api/
|
||||
│ │ │ ├── router/
|
||||
│ │ │ └── store/
|
||||
│ │ └── public/
|
||||
│ ├── elevator-front/ # 电梯管理
|
||||
│ ├── alarm-front/ # 报警管理
|
||||
│ └── front_acs/ # 门禁管理
|
||||
│
|
||||
└── scripts/ # 反编译工具
|
||||
├── unpack-webpack.js # webpack bundle 解包
|
||||
├── extract-api-calls.js # API 端点提取
|
||||
├── extract-router.js # 路由表提取
|
||||
├── beautify-all.sh # 批量格式化
|
||||
└── compare-output.sh # 产物对比
|
||||
```
|
||||
|
||||
## 3. 阶段 1:B 级反编译(全部 28 个)
|
||||
|
||||
### 3.1 反编译流水线
|
||||
|
||||
```
|
||||
frontend/<app>/*.js ──► [1. 解包] ──► modules/*.raw.js
|
||||
──► [2. 格式化] ──► modules/*.formatted.js
|
||||
──► [3. 分析] ──► api-calls.json
|
||||
router-tree.json
|
||||
component-tree.json
|
||||
──► [4. 组织] ──► decompiled/<app>/
|
||||
```
|
||||
|
||||
### 3.2 各步骤详细说明
|
||||
|
||||
**步骤 1 — 解包**
|
||||
- 识别 webpack bundle 的模块结构(`__webpack_modules__` 或 `__webpack_require__`)
|
||||
- 按模块 ID 拆分为独立文件
|
||||
- 处理 chunk 文件的异步加载引用
|
||||
|
||||
**步骤 2 — 格式化**
|
||||
- 使用 `js-beautify` 处理缩进、换行
|
||||
- 使用 `prettier` 统一代码风格
|
||||
- 保留注释(如有)
|
||||
|
||||
**步骤 3 — AST 分析**
|
||||
- 使用 `@babel/parser` 解析格式化后的 JS
|
||||
- 提取:
|
||||
- **API 调用**:`axios.get/post`、`this.$http` 等 HTTP 请求模式
|
||||
- **路由定义**:`vue-router` 的 `routes` 数组和 `path/component` 映射
|
||||
- **组件注册**:`Vue.component()`、`components: {}` 局部注册
|
||||
- **Element UI 引用**:`this.$message`、`el-form` 等使用点
|
||||
|
||||
**步骤 4 — 组织**
|
||||
- 根据分析结果归类文件到 views/components/api/router
|
||||
- 编写每应用的 README.md(API 清单、路由表、组件树)
|
||||
- 原样复制 static/ 下的 CSS/img/font
|
||||
|
||||
### 3.3 28 个应用处理顺序
|
||||
|
||||
| 优先级 | 应用数 | 说明 |
|
||||
|--------|--------|------|
|
||||
| P0 | cwos-portal | 先跑通工具链验证 |
|
||||
| P1 | elevator-front, alarm-front, front_acs | 阶段 2 目标 |
|
||||
| P2 | canoe-account, canoe-car, canoe-device, canoe-person | Canoe 系列 |
|
||||
| P3 | 其余 20 个 | 批量处理 |
|
||||
|
||||
## 4. 阶段 2:C 级重建(4 个核心)
|
||||
|
||||
### 4.1 技术栈
|
||||
|
||||
| 项 | 选用 | 理由 |
|
||||
|----|------|------|
|
||||
| 框架 | Vue 2.6 | 与原始一致(chunk-elementUI 确认) |
|
||||
| UI 库 | Element UI 2.15 | 原始使用 Element UI |
|
||||
| 构建 | Vue CLI 4.5 | 稳定版本 |
|
||||
| HTTP | axios 0.21 | 与 V1 时代匹配 |
|
||||
| 路由 | vue-router 3.x | 与 Vue 2 配套 |
|
||||
| 状态管理 | vuex 3.x | 仅使用到的应用引入 |
|
||||
|
||||
### 4.2 重建流程(每个应用)
|
||||
|
||||
1. **工程脚手架**:`vue create` 或手动搭建 Vue 2 + Element UI 项目结构
|
||||
2. **路由重建**:根据阶段 1 提取的 router-tree.json 还原 `router/index.js`
|
||||
3. **API 层**:根据 api-calls.json 建立 `api/` 模块(axios 封装)
|
||||
4. **页面重建**:逐页面创建 `.vue` SFC,参考原 dist 的 CSS 样式
|
||||
5. **组件重建**:抽取可复用组件为独立 `.vue` 文件
|
||||
6. **构建验证**:`npm run build` 并对比产物与原 dist
|
||||
|
||||
### 4.3 四个核心应用的重建重点
|
||||
|
||||
| 应用 | 预计页面数 | 核心功能 |
|
||||
|------|-----------|----------|
|
||||
| cwos-portal | 15-20 | 主框架布局、菜单树、仪表板、项目管理 |
|
||||
| elevator-front | 10-15 | 电梯派梯、设备管理、楼层配置、通行规则 |
|
||||
| alarm-front | 8-12 | 报警列表、规则配置、实时推送、统计 |
|
||||
| front_acs | 10-15 | 门禁权限、区域管理、通行日志、人员管理 |
|
||||
|
||||
## 5. 工具脚本设计
|
||||
|
||||
### 5.1 `unpack-webpack.js`
|
||||
```
|
||||
输入: <app>/static/js/app.xxx.js
|
||||
处理: 解析 webpack bundle 结构,按模块 ID 拆分
|
||||
输出: modules/<module-id>.js
|
||||
```
|
||||
|
||||
### 5.2 `extract-api-calls.js`
|
||||
```
|
||||
输入: modules/*.formatted.js
|
||||
处理: AST 遍历查找 HTTP 调用模式
|
||||
输出: api-calls.json (端点、方法、参数)
|
||||
```
|
||||
|
||||
### 5.3 `extract-router.js`
|
||||
```
|
||||
输入: modules/*.formatted.js
|
||||
处理: 查找 vue-router 的 routes 定义
|
||||
输出: router-tree.json (path → component 映射)
|
||||
```
|
||||
|
||||
### 5.4 `beautify-all.sh`
|
||||
```
|
||||
输入: modules/*.js
|
||||
处理: 批量 js-beautify + prettier
|
||||
输出: modules/*.formatted.js
|
||||
```
|
||||
|
||||
## 6. 质量验证
|
||||
|
||||
### 阶段 1 验证
|
||||
- [ ] 每个应用产出 README.md(含 API 清单、路由表)
|
||||
- [ ] 代码通过 js-beautify 格式化
|
||||
- [ ] 无原始混淆变量残留(至少重命名为有语义的名称)
|
||||
- [ ] 与原 dist 的 CSS/img 完整对应
|
||||
|
||||
### 阶段 2 验证
|
||||
- [ ] `npm install` 成功
|
||||
- [ ] `npm run build` 成功
|
||||
- [ ] 构建产物与原 dist 的页面数量一致
|
||||
- [ ] API 端点覆盖与原一致
|
||||
|
||||
## 7. 风险与限制
|
||||
|
||||
| 风险 | 影响 | 缓解措施 |
|
||||
|------|------|----------|
|
||||
| 变量名无法完全还原 | 代码可读性下降 | 通过上下文推断 + 手工标注语义名 |
|
||||
| Vue SFC 无法自动还原 | 阶段 1 产物为 .js 而非 .vue | 阶段 2 手工重建为 .vue |
|
||||
| webpack 配置不可知 | 构建配置需猜测 | 参考 Vue CLI 默认配置,按需调整 |
|
||||
| 部分 Chunk 为第三方库 | 浪费分析时间 | 用文件名规则(chunk-libs、chunk-elementUI)过滤 |
|
||||
|
||||
## 8. 与现有仓库的集成
|
||||
|
||||
- `frontend-source/` 为新建独立目录,不修改 `frontend/`
|
||||
- 加入根 `.gitignore` 白名单(类似 `frontend/` 的显式 `!` 规则)
|
||||
- 产出 `frontend-source/AGENTS.md` 作为本目录说明
|
||||
- 产出 `docs/superpowers/specs/` 下的本设计文档
|
||||
Reference in New Issue
Block a user