Files
starRiverProperty/docs/superpowers/data/2026-05-05-component-org-compile-assessment.md
T
hpd840321 7b2bd307f1 Initial commit: reorganized source tree
- backend/: 13 Maven modules (cw-elevator-application, cloudwalk-cloud, intelligent-cwoscomponent, ninca-crk, etc.)
- frontend/: 4 Vue projects (elevator-front, cwos-portal, alarm-front, front_acs) + decompiled + scripts
- scripts/: build, test-env, tools (Docker Compose, service templates, API parity)
- docs/: AGENTS.md, superpowers specs, architecture docs
- .gitignore: standard Java/Maven exclusions

Moved from legacy maven-*/ root layout to backend/ organized structure.
2026-05-09 09:56:45 +08:00

171 lines
6.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 组织服务组件编译方案评估
**日期**2026-05-05
**来源**ninca-common-component-organization-V2.9.2_20210730.jar
---
## 1. 原始依赖环境
| 项目 | 值 |
|------|-----|
| Spring Boot | 1.5.17.RELEASE |
| Spring Cloud | Edgware.SR3 |
| Spring Framework | 4.3.29.RELEASE |
| JDK | 1.8 |
| Servlet | 3.1.0 (javax) |
---
## 2. 反编译模块结构
```
maven-ninca-common-component-organization/
├── cwos-component-organization-interface-v2.9.2_xinghewan/ # 接口 + DTO (无外部依赖)
├── cwos-component-organization-data-v2.9.2_xinghewan/ # DAO + Entity (依赖 interface)
├── cwos-component-organization-service-v2.9.2_xinghewan/ # 业务逻辑 (依赖 data + interface)
└── cwos-component-organization-web-v2.9.2_xinghewan/ # Controller (依赖 service)
```
**依赖链**web → service → data → interface
---
## 3. 外部依赖分析
### 3.1 可直接复用的 V2 Maven 模块
| 依赖 | 来源模块 | 状态 |
|------|---------|------|
| cloudwalk-common-result | maven-cloudwalk-legacy-public | ✅ 已有 |
| cloudwalk-common-serial | maven-cloudwalk-legacy-public | ✅ 已有 |
| cloudwalk-common-service | maven-cloudwalk-legacy-public | ✅ 已有 |
| cloudwalk-common-data | **无对应模块** | ❌ 需新建 |
| cloudwalk-device-manager-common | maven-cloudwalk-device-manager | ✅ 已有 |
| cloudwalk-device-manager-interface | maven-cloudwalk-device-manager | ✅ 已有 |
| cloudwalk-device-sdk-interface | maven-cloudwalk-device-sdk | ✅ 已有 |
| cloudwalk-device-sdk-protocol-entity | maven-cloudwalk-device-sdk | ✅ 已有 |
| cwos-common-aks-interface | maven-cwos-common-aks | ✅ 已有 |
| cwos-device-authentication-interface | maven-cwos-device-authentication | ✅ 已有 |
| cwos-component-resource-* | maven-cwos-resource | ✅ 已有 |
| davinci-manager-* | maven-cloudwalk-intelligent-davinci-manager | ✅ 已有 |
| cwos-sdk-event | maven-cloudwalk-legacy-public | ✅ 已有 |
| cloudwalk-common-result/web/serial | maven-cloudwalk-legacy-public | ✅ 已有 |
### 3.2 缺失的 CloudWalk 内部依赖
这些 JAR 存在于原始 fat JAR 的 `BOOT-INF/lib/` 中,但本地没有对应的 Maven 模块:
| 依赖 | 说明 | 数量 |
|------|------|------|
| cn.cloudwalk.client.aggregate.* | 聚合服务接口 (cwos-core-aggregate-interface) | ~30 个类 |
| cn.cloudwalk.client.account.* | 账户服务接口 (cwos-component-account-interface) | ~15 个类 |
| cn.cloudwalk.client.resource.* | 资源服务接口 (cwos-component-resource-interface) | ~20 个类 |
| cn.cloudwalk.client.device.mgn.* | 设备管理原子接口 (cwos-core-device-mgn-atomic-interface) | ~10 个类 |
| cn.cloudwalk.client.device.processor.* | 设备处理器接口 (cwos-device-processor-interface) | ~5 个类 |
| cn.cloudwalk.rest.* | REST 客户端 (cwos-component-*-rest) | ~20 个类 |
| cn.cloudwalk.task.* | 任务引擎 (ai-cloud-task-*) | ~10 个类 |
| ninca-common-message-center | 消息中心接口 | ~5 个类 |
| 其他 | pineappine, aliyun, opencv 等 | ~10 个类 |
**合计缺失约 125 个外部类引用。**
### 3.3 移植可行性判断
| 依赖组 | 能否从已有 JAR 提取 | 工作量 |
|--------|-------------------|--------|
| cn.cloudwalk.client.aggregate.* | ✅ JAR 在 lib/ 中,可反编译安装 | 中 |
| cn.cloudwalk.client.account.* | ✅ JAR 在 lib/ 中,可反编译安装 | 中 |
| cn.cloudwalk.client.resource.* | ✅ JAR 在 lib/ 中,可反编译安装 | 中 |
| cn.cloudwalk.rest.* | ✅ JAR 在 lib/ 中,可反编译安装 | 中 |
| ai-cloud-task-* | ✅ JAR 在 lib/ 中 | 低 |
| 第三方 (opencv, aliyun 等) | ✅ 直接从 lib/ 提取 | 低 |
---
## 4. 三种编译方案
### 方案 A:完整 Maven 多模块(推荐)
```
maven-ninca-common-component-organization/
├── pom.xml # reactor POM
├── cwos-component-organization-interface/
│ └── pom.xml # 继承 reactor
├── cwos-component-organization-data/
│ └── pom.xml
├── cwos-component-organization-service/
│ └── pom.xml
└── cwos-component-organization-web/
└── pom.xml
```
**步骤:**
1. 创建 reactor POM,继承 Spring Boot 1.5.17 parent
2. 从原始 JAR 的 `BOOT-INF/lib/` 提取所有缺失的 CloudWalk JAR
3.`mvn install:install-file` 安装到本地 .m2 仓库
4. 各子模块 POM 声明依赖
**优点**:可真正编译、可 IDE 索引、可验证代码正确性
**缺点**:工作量大(~80 个 JAR 需要处理);版本与 V2 主线可能不一致
### 方案 B:混合方案(实用主义)
```
maven-ninca-common-component-organization/
├── pom.xml # 聚合 POM
├── organization-interface/
│ └── pom.xml # 仅 interface 模块可编译
└── organization-libs/ # 存放 lib JAR
└── lib/*.jar # 直接从原始 JAR 提取
```
**步骤:**
1. 仅 interface 模块完全 Maven 化(纯 DTO,无外部依赖)
2. data/service/web 模块标记为 `pom``jar`,依赖通过 `system` scope 引用 lib/ 目录
3. 从原始 JAR 的 `BOOT-INF/lib/` 复制所有 JAR 到 `organization-libs/lib/`
**优点**:interface 可编译;剩余模块至少可 IDE 打开
**缺点**system scope 不可传递;不适合 CI 构建
### 方案 C:纯参考(不编译)
保持当前状态(已清理的反编译源码 + 中文注释),仅用于:
- 代码走查和业务逻辑分析
- Person detail → floorList 调用链追踪
- 策略需求的功能验证
**优点**:零工作量
**缺点**:不能编译验证、IDE 报错
---
## 5. 最终决策:不编译,直接用原始 JAR
### 结论
反编译源码仅作为**走查参考**,不进行 Maven 化编译。任何需要依赖组织服务的项目,直接引用原始 JAR:
```
源码/maven-cw-elevator-application/releases/cw-elevator-application-v2.0.10-.../org-service/.../ninca-common-component-organization-V2.9.2_20210730.jar
```
### 理由
| 考量 | 说明 |
|------|------|
| 复杂度 | 避免引入 80+ 个依赖 JAR 的版本管理问题 |
| 维护成本 | 反编译源码不改动、不编译,永远与原始 JAR 一致 |
| 目标明确 | 仅用于走查 `floorList` 生成逻辑,不需要编译 |
| 引用方式 | 需要时通过 `system` scope 或直接解压查看 |
### 反编译源码的定位
```
maven-ninca-common-component-organization/
→ 走查参考(已清理 CFR 痕迹 + 中文注释 + Unicode 转中文)
→ 不参与构建
→ 不改动
→ 与原始 JAR 字节码保持语义一致(已验证 56/56 方法匹配)
```