# 工作交接文档-20260903(阶段四 D1-D4 + C 端链路交付) > 承接 工作交接文档-20260902(阶段三 v7.1 全绿);本批按 plan-next-20260903 执行 D 线全部 + C 端充电链路 G0。 > 分支:main=HEAD(zouzm-design 同步)|部署:argocd-apps cdz-m1(GitOps,ArgoCD ~3min 自动 sync) ## 一、交付矩阵(本批提交链 main) | 提交 | 内容 | 验证 | |------|------|------| | 8907f1667→79a8f4478 | biz tag server-307→331 源同步 + 桩网关 env 演进 | — | | 395e00a44 | fix(pile): PileGatewayEvents.setOrderPileService @Lazy 打断 Bean 循环(enabled=true 启动失败实证) | node67 65 测试 enabled=true 全绿 | | 2982329f6 | fix(pile): PileGatewayStats @Component(PileNettyServer 构造注入需 Spring 托管) | node67 编译 ✓ | | fa697622a | feat(c-end-charging G0): C 端充电 6 端点(connector/start/current/realtime/stop/settle)+ pile 域 13 遥测回联/60s 幂等/65s 超时 + uniapp charging 3 页 | node67 编译 308 sources + 83 测试全绿 | | cf8af15d7 | test(s3): verify-realtime 清理改 python 解析 + RT-ENGINE 清理 + bigint string 引号 | node67 realtime 16/16 | | b98236978 | fix(monitor+equipment): enrichAlerts Map.of().get(null) NPE(connector_id null 桩级告警)+ equipment page Timestamp cast;verify-realtime R1 改 DB 取桩 | node67 编译 ✓ + 冒烟验证 | | 8658578fc | test(d4): verify-cend-charge-d4 端到端闭环(18/18) | node67 18/18 | | cabdd5d7a | test(s3): interconnection I2/I6 断言加固 + SimLoadDriver 桩号 14 位 | node67 interconnection 86/0 | **部署镜像链**:server-307(D1/D2/D3 全量+C1)→ 317 →(崩因:Bean 循环,回滚)→ 331(C 端+@Lazy+@Component+桩网关开)→ 338(monitor NPE+equipment cast 修复)。**当前生产 = server-338**(cdz-biz-server,CDZ_PILE_ENABLED=true:9998)。 ## 二、验收证据(node67 /data/cdz/verify-s3/ 全量终验 11:02 FAIL_TOTAL=0) 18 脚本全 0 FAIL:老 14 + verify-cend-login/detail + verify-realtime 16/0(离线/遥测告警+恢复+SSE)+ verify-interconnection 86/0(D3 验签/ROTATE/推送轨迹/结算幂等)+ **verify-cend-charge-d4 18/0**。 - **D4-① 端到端闭环**:B 建档(桩 40055825050010 + 2 枪)→ PileSimulator 登录网关 9998 → C 端 start(34 下发) → 模拟器 33 应答+13 遥测 → **realtime 充电中 currentPower=58.06kW/degree=0.5000/amount=0.45(真数据回联)** → stop(36) → 19/3B → orderStatus 1→2→5 → settle 回执 → 枪忙 40901/活跃单 40903 守卫 → DB 释放 5→6。 - **D4-④ 压测**:SimLoadDriver 100 桩并发心跳 10min,**loginOk=100/100、满时长退出 0 异常**(无丢心跳)。 ## 三、部署/变更记录 - argocd-apps commits:3336506(317)、2ca2f2c(桩网关 env+allow-circular 临时)、4db789e(回滚)、b0d8217(331+正式桩网关)、bdf7a39(338)。 - 集群:cdz-m1-postgres StatefulSet(非 deployment);**V14 四表曾被误建到 ruoyi-vue-pro 库**——已在 cdz 库重执行(服务实际连 cdz)。cdz 库含 V13×3+V14×4=7 互联表。 - update-gitops-cdzm1(pl317)会以 pipeline 时点源码覆盖 argocd-apps cdz-m1/deploy——已 cancel pl317 job;**后续手动改 tag 必须 cdz_code 源同步同 tag**(防 CI 覆盖回滚)。 ## 四、踩坑教训(本批新增) 1. **GitLab changes 判定异常**:server-cdz/** 代码 push 的 pipeline 空 failed(pl324/327 等)——.gitlab-ci.yml 改动恒触发(pl326/331 实证)。绕行:代码批次 push 时 touch .gitlab-ci.yml 注释。待 KB/平台侧排查。 2. **D1-2 埋雷(enabled=false 未暴露)**:PileGatewayEvents→OrderPileServiceImpl→PileNettyServer→PileGatewayEvents Bean 环 + PileGatewayStats 无 @Component——桩网关启用才崩。**教训:@ConditionalOnProperty 装配链须在 enabled=true 下全上下文验证**(单测手动装配覆盖不到)。 3. **enrichAlerts Map.of().get(null) NPE**:不可变 Map 禁 null key——桩级告警(离线/故障)connector_id 为 null 时 gunIds 空 → gunMap=Map.of() → get(null) 崩。教训:`Map.of()/List.of()` 对可能 null key 的 get 先行短路。 4. **equipment page (OffsetDateTime)v cast**:selectMaps 裸 JDBC 返回 Timestamp——D2 实时写 last_report_time 前全 NULL 不触发。双态兼容转换修复。 5. **runner 单 slot 排队 + resource_group 卡顿**:前端 build(.gitlab-ci.yml 触发全量)占 runner——无关 job 及时 cancel(build-m1-server/前端 build 系列)。project-71 并行会话长期占 2 slot。 6. **压测桩号须 14 位偶数字符串**(BCD 编码),`40%011d` 得 13 位奇数崩溃。 7. **psql 误伤教训**:`member_id=(SELECT member_id FROM member_member ...)`(member_member 无 member_id 列/语义错)致 122 个 seed 演示单被置 8——**先 SELECT 验证再 UPDATE**。 ## 五、缺口与未决(下批/阶段五) - **结算编排 BILLING(5)→HAVE_FINISHED(6) 未接线**(M2.2):stop 后订单卡 5 → 枪永久忙(GUN_BUSY_STATUS 含 5)。D4 验收用 DB 替身释放(verify-cend-charge-d4 D4-5b);正式编排(WalletSettlementService 三池/时段明细/正向金额)待接。桩级告警(connector_id null)已修。 - **equipment/page 接口历史遗留**:实时列 last_report_time cast 已修;verify-realtime R1 已改 DB 直取。 - **会话/遥测进程内存**:多实例/重启即失——Redis 实时态/会话后置(代码已标注)。 - **C 端 c-app-uniapp H5 运行验证未做**(无 HBuilderX/工具链):mock 链 + 契约 smoke 绿,建议主控 H5 浏览器联调一次(USE_MOCK=false + BASE 网关)。 - **互联互通数据累积**:seed/D3 残留平台密钥多轮累积(列表>10 页)——I2/I6 已改 size100+全量断言;清理脚本可后补。 - 订单状态机 CLOSED=8 语义:DB 清理活跃单统一 1/2→8(dev 手段,正式关闭链路后置)。 ## 六、快速上手(下批联调) ```bash # 桩模拟器(node67,jar=/data/cdz/cdz-biz-server-331.jar 已拷) java -Dloader.main=com.gridvo.cdz.module.pile.simulator.PileSimulator \ -cp /data/cdz/cdz-biz-server-331.jar org.springframework.boot.loader.launch.PropertiesLauncher \ 9998 40055825050010 --hb-ms 2000 # C 端闭环(脚本) bash /data/cdz/verify-s3/verify-cend-charge-d4.sh # 压测(jarx 解包后) java -cp "BOOT-INF/classes:$(ls BOOT-INF/lib/*.jar|tr '\n' ':')" SimLoadDriver 9998 100 600 2000 # 新镜像构建触发:代码 push 需 touch .gitlab-ci.yml(changes 判空绕行) ``` ## 七、KB 待办(需用户授权) - GitLab changes 判空绕行实证、V14 误建 ruoyi-vue-pro 教训、D1-2 Bean 环/缺 @Component 埋雷、enrichAlerts Map.of null key、equipment cast、runner 队列管理——写入 cdz cicd 档案(analyses/cdz-m1-部署演进与cicd-20260902.md 追加或新页)。