Files
starRiverProperty/docs/superpowers/data/2026-05-06-component-org-different-22-per-class-review.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

85 lines
9.7 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.
# DIFFERENT(剩余):逐类 `javap -p` 核对(现场 JAR vs 本仓库 `target/classes`
**日期:** 2026-05-06**2026-05-06 更新**OpenCvUtils + 三工具类已与现场 **IDENTICAL**DIFFERENT **18**
**依据:** `maven-ninca-common-component-organization/tools/out/deploy_javap_audit_main.json``status == "DIFFERENT"`
**证据文件:** `tools/out/different-22-javap/`(历史批量 diff);复跑审计后以 **`deploy_javap_audit_main.json`** 为准
**现场 classpath** `ninca-common-component-organization-V2.9.2_20210730/BOOT-INF/classes` + 四模块 `*-v2.9.2_xinghewan.jar`
**本地 classpath** `interface` / `data` / `service` / `web` / `starter``target/classes`(与 `deploy_javap_audit.py` 一致)
---
## 1. 总览:差异类型与处置
| 类型 | 含义 | 本批数量(约) |
| ------------------------------ | ---------------------------------------------------------------------------------- | ------------------ |
| **A. 仅 synthetic / lambda 形变** | 无 `public`/`protected` 方法签名的变化,差异集中在 `lambda$…``null$` 或具体化类型(`List``ArrayList`) | 多数 |
| **B. 小范围 API 面变化** | 主要为 **`ChannelFileReader` 声明 `AutoCloseable`**(工具类构造已与现场对齐) | **1** |
| **C. 明确业务增强** | 新增**字段/私有方法**或组织 `detail` 等实现路径增加分支 | 2+ |
| **D. 与现场能力严重偏离** | 公开方法集合与现场**不等价** | **已处理(OpenCvUtils 已与现场 IDENTICAL** |
**说明:** 已与现场 **IDENTICAL** 的曾有 DIFFERENT 项:**`OpenCvUtils`**(与 `jar.src`/`javap` 对齐)、**`ImageUtil`/`ToolUtil`/`ImageEditUtils`**(补 **private** 无参构造,与部署 service JAR 一致)。**仍 DIFFERENT** 共 **18** 类(多为 synthetic/lambda 或业务超前)。
---
## 2. 逐类表(剩余 DIFFERENT**18**;已收敛项见 §2.1
### 2.1 已从 DIFFERENT 收敛(供追溯)
| FQN | 处置 |
| --- | --- |
| `OpenCvUtils` | 与现场 **service JAR + `jar.src`** 对齐,`javap -p` **IDENTICAL** |
| `ImageUtil``ToolUtil``ImageEditUtils` | 增加 **`private Xxx() {}`**,与部署 **private 无参构造**一致,`javap` **IDENTICAL** |
### 2.2 仍为 DIFFERENT(简表)
| # | FQN | 差异要点(见对应 `diff-*.patch`) | 分类 | 建议 |
| --- | ---------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | ----- | ----------------------------------------------------------------------- |
| 1 | `…common.AbstractImagStoreService` | `lambda$distinctByKey$0` 首参 `Set``ConcurrentHashMap$KeySetView` | A | 视为编译器/具体化差异;**行为以方法体为准**(可抽查 `javap -c`) |
| 2 | `…common.JsonUtils` | `lambda$toStrList$1``List``ArrayList` | A | 无 public 变化 |
| 3 | `…common.OkhttpUtil` | 新增 `lambda$postJson$1(…)` | A | `postJson` 重载实现略调;**确认与 HTTP 头/体一致**后接受 |
| 4 | `…config.ChannelFileReader` | 本地 **`implements AutoCloseable`**`javap` 首行与现场不同);现场仍有 `close()` | B | **`CommonAppExportExecuteTask` 使用 try-with-resources**,保留 AutoCloseable;接受与现场 **javap 字符串**不一致或与现场合并策略 |
| 5 | `…service.CertRegistryHandler` | `lambda$null$4/5` 形参列表简化(Optional/交叉类型 → 单类型) | A | 典型 Stream/Optional 链改写;**公开方法未变** |
| 6 | `…CpDeviceImagePersonServiceImpl` | `personPassRule` 相关 lambda 合并/删减 | A | public 段一致;属实现整理 |
| 7 | `…CpImageStorePersonManager` | 多组 `lambda$null$`* 删除,编号下移 | A | 同上 |
| 8 | `…CpImageStorePersonSynManager` | Redis 回调 lambda 返回类型 `Long``Object` | A | JDK8 `RedisConnection` 泛型与 lambda **桥接**常见现象 |
| 9 | `…CpImageStorePersonValidateManager` | 大量 `lambda$`* 重排、嵌套 lambda 命名变化 | A | **patch 行数最大**,仍以 synthetic 为主;**建议用业务用例回归**(校验任务、延期校验) |
| 10 | `…CpImageStoreServiceImpl` | `packageCpResult`/`packageImageStoreResult`/`getAssociated` 等 lambda 编号与具体类型 | A | public 未变 |
| 11 | `…CpImageStoreToolServiceImpl` | `lambda$batchRemoveFace$5` 少一参(去掉 `BatchRemoveFaceParam`) | A | **对外接口未变**;实现层闭包捕获范围变化 |
| 12 | `…DeviceGroupRefChangeEventHandler` | `HashSet` vs `Set` 于一处 lambda | A | 无 public 变化 |
| 13 | `…DevicePersonSyncManager` | `lambda$null$2` 形参类型变化 | A | 无 public 变化 |
| 14 | `…DevicePersonSyncServiceImpl` | 删除两行 `deviceImageStoreMap` 相关 lambda | A | public 未变 |
| 15 | `…ImgPersonServiceImpl` | **新增字段** `tenantVisitorFloorPolicyService`**新增私有方法** `buildCommaSeparatedFloorNames``buildFloorInfoListFromOrderedZoneIds` | **C** | **星河湾租户访客楼层增强**;发版说明与联调必测 |
| 16 | `…OrganizationServiceImpl` | `detail`/`listNames`/`saveAreaDetails` 路径下 **lambda 数量与编号**变化(增加 `ZoneUnitResultDTO` 等参与) | A/C | **`javap` 前半段 public 方法与现场一致**;若产品关心 **detail 返回中区域/楼层展示**,做专项对比测试 |
| 17 | `…starter.task.ComponentTaskInitialize` | 现场多 `lambda$run$0(String)`,本地无 | A | 与 **定时/初始化路径**实现差异一致(如去掉一处 stream);启动后看日志与任务是否注册 |
| 18 | `…controller.DevicePersonSyncController` | `devicePersonResync`/`detail` 的 lambda 个数与参数类型 | A | **三个 public API 未变**;可做 elevator API 对拍 |
---
## 3. 与《全量审计》§4 的关系
- **OpenCvUtils** 已与现场 **`javap` IDENTICAL**(见 §2.1)。
- **ImgPersonServiceImpl(表 2.2 #15)** 为**已知的仓库超前能力**,与 **MISSING_DEPLOY(租户策略等)** 配套部署后才能在现场 classpath 出现对应依赖类。
- 其余类以 **A 类**为主:**契约测试**(接口级)可通过;**集成回归**仍建议覆盖图库同步、设备同步、组织详情。
---
## 4. 复现核对命令(可选)
```bash
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export PATH="$JAVA_HOME/bin:$PATH"
# 设置 D_CP / L_CP 同本文档前言,然后:
javap -p -classpath "$D_CP" cn.cloudwalk.service.organization.common.OpenCvUtils > /tmp/deploy.txt
javap -p -classpath "$L_CP" cn.cloudwalk.service.organization.common.OpenCvUtils > /tmp/local.txt
diff -u /tmp/deploy.txt /tmp/local.txt
```
批量产物已由流水线写入:`tools/out/different-22-javap/diff-<ShortName>.patch`
---
**关联:** `[2026-05-06-component-org-full-java-audit-and-remediation.md](./2026-05-06-component-org-full-java-audit-and-remediation.md)` §4DIFFERENT 分类说明)