# HANDOFF 2026-09-05 · customer-rework 返工图执行(换机续作) > 前篇:`HANDOFF-2026-09-04.md`(图启动基线)。本篇只记其后的会话增量、唯一悬空点与换机注意事项,不重复票面/差异清单原文。 ## 图状态与纪律 - 地图:`.scratch/customer-rework/map.md`(冻结图);执行模式 = wayfinder「Work through the map」,用户已覆写 plan-only:**执行含在图内,票直接改代码**。 - 用户最新指令(2026-09-04):「继续做,把整张map做完」——连续完成剩余全部票。 - 票况:01–08 resolved;**09 进行中**(悬空点见下);10、11 未开。 - 每张票纪律:claim(Status: claimed)→ 实施 → 票内追加 Answer + `Status: resolved` → `map.md` 的 Decisions so far 追加一行索引。 ## 票 09 已完成部分(勿重做) 1. **S1 错误码撞号**:`crm-rule/.../constant/OpportunityRuleConstants.java` 的 `CODE_STAGE_TPL_SEED_PROTECTED` 64018→**64024**(audit-findings 写的「改 64022」已过时——64022 被 `CODE_SCHEME_TPL_FIELD_INVALID` 占用、64023 被客户规则占用;引用面核实:2 处主代码走常量名、0 测试硬编码)。类头段位注释已同步。 2. **F3 导入端点双 tag**:`crm-customer/.../controller/CustomerImportController.java` 6 端点(upload/confirm/result/failures/page/template)`@Operation` 全部加 `tags = {"A4 客户管理/我的客户/客户导入", "A4 客户管理/客户公海"}`(依据:62 页原型逐页 grep,仅 a4-1-1 公海列表有「导入」气泡;ADR-0024 多值挂实际调用页)。 3. **验证**:`mvn test -pl crm-rule,crm-customer -am` 全绿(Reactor 8 模块 SUCCESS,crm-customer 144 tests 0 fail);BOM 扫描全仓干净。 4. **F3 bruno 侧**:`.scratch/customer-rework/copy_import_to_pool.py` 已把 6 副本写进 `E:\code\crm-api-docs\A4 客户管理\客户公海\`(seq 94–99);`bruno_scan.py` 终验 **315 钥匙 = 315 文件,new=0 / delete=0 / unrecognized=0 / 冲突=0**。 ## 唯一悬空点:F4–F10 拍板(AskUserQuestion 被用户取消一次,需重发或改逐项问) 事实依据全在 `audit-findings.md` §二/§三。下轮可直接用的拍板材料(推荐已按差异清单立场预置): | 项 | 事实 | 推荐 | 备选 | |---|---|---|---| | F5 战略协议 | 原型三页完整(a4-4-6/9/10)但零端点 | 本期补(单表 CRUD,最大单项) | 划出(翻案确认) | | F4 关联项目 | 依赖未建的 A5 项目域 | 划出(随项目模块远期) | 本期补(超范围) | | F9 导出日志 | 与已划出的 D2 导出家族同族 | 随家族划出 | 本期补(仅导出日志) | | F10 联系人日志 | `CustomerContactServiceImpl` 零 oplog 写入 | 轻方案:客户 oplog 扩 CONTACT_ADD/EDIT/DELETE(本票机械修) | 独立表(单开票)/ 缓 | | F7 内置检索视图参数 | `CustomerWorkspacePageParam` 缺 ownerOnly/coopOnly/待跟进/focusOnly/最近访问 | 本期补(参数族+过滤+测试,量级小) | 缓(记理由) | | F8 导入重复策略 | import/upload 缺重复策略参数(覆盖导入/不导入) | 本期补(量级最小) | 缓(记理由) | | F6 批量工商更新 | 仅单查 `company-lookup`,无批量写端点 | 本期补(批量任务,量级中等) | 缓(记理由) | 拍板后处置: - 选「补」→ 本票或单开票实施(F5 建议单开 12 号票;F7/F8/F10 轻量可并入 09);实施完同步测试 + bruno 产出 + 文档。 - 选「划出/缓」→ `audit-findings.md` 对应条目标「明确不修(划出远期/缓)+理由」。 - **票 09 验收线**:差异清单全部条目状态为「已修 / 已单开票 / 明确不修(记理由)」,无悬空项。 ## 后续票序列 1. **票 09 收尾**:Answer(含 S1 实改 64024 的更正说明)+ resolved + map 索引。 2. **票 10 回归**(`issues/10-regression-retest.md` 五条验收线逐项):三模块 `mvn test`(基线 521:146/122/242,绿为准);冒烟(票面写「复用 `tools/smoke-t12m.py` 范式」——该 tools 目录位置未在本机核实,找不到就按范式重写:登录 → 客户三 workspace 列表/看板(公海看板断言拒绝)→ 建改查客户 → 联系人 CRUD → 认领/分配/抛公海 → 交割 → 导入全链 → 偏好存取 → 商机偏好,断言 code=0;需先起 crm-app,启动流程见 memory「Windows本地Spring Boot应用启动与fat jar增量构建验证流程」);bruno A4 树对 v29 终验;BOM;`grep "PathVariable\|@PutMapping\|@DeleteMapping\|@RequestBody" crm-customer/` 零命中。产出 `.scratch/customer-rework/RETEST-REPORT.md`。 3. **票 11 文档同步**(`issues/11-docs-sync.md` 清单):`map.md` 返工增补段、`API-SUMMARY.md` 重写+销账、新 HANDOFF、`crm-customer/CONTEXT.md`、URL-代码逐一对账脚本。验收 = 零差异、旧 HANDOFF 不改写。 ## 环境事实(换机必读,本篇写于 MATT 机 / Windows 22H2) - `JAVA_HOME=%USERPROFILE%\.jdks\corretto-17.0.13`;mvn=`D:\IntelliJ IDEA 2025.1.3\plugins\maven\lib\maven3\bin\mvn.cmd`(路径含空格,PowerShell 要 `& '...'` 调用)。**换机后路径可能不同**,另一台机器的事实查 memory「客户模块E2E验收地图与换机后环境事实」。 - python 用 `py -3 -X utf8`(python 不在 PATH)。 - 文档仓(Bruno collection)在 `E:\code\crm-api-docs\`——工作区外,harness 文件工具(Read/Write/DeleteFile)碰不到,一律走 python 脚本。 - 对账扫描器:`.scratch/customer-rework/bruno_scan.py`(无参全量,输出 JSON 对账报告)。 - PowerShell:不用 `&&` 用 `;`;反引号是转义符(内联 `python -c` 别带反引号,写脚本文件);`>` 重定向产出 UTF-16。 ## 本段新增踩坑(AGENTS.md 之外) - **meta 块 seq 带两格缩进**:解析/改写 .bru 的 seq 必须 `^\s*seq:` 容缩进——两个脚本栽过(max_seq 静默返 0 → 副本撞 seq)。 - **harness DeleteFile 只限工作区内**:文档仓删文件走 python,删除前 assert 内容守卫防误删。 - **批量 .bru 顺序纪律**:先写后删会误删刚生成的(前段已发生);顺序=先删后写,或副本脚本自带「目标存在即跳过」幂等。 ## 建议调用 skills - `wayfinder`:ARGUMENTS = `Work through the map 模式,地图路径 .scratch/customer-rework/`——续作主框架,从票 09 悬空点接续。 - `bruno-sync`:F5/F7/F8/F10 若拍板「补」,bruno 侧产出照 skill 镜像(tag 分组、同 key 多页同名同内容副本、幂等重建通道)。 - `grilling`:若用户偏好逐项慢拍 F4–F10(上轮集中四题问被取消,可能嫌一次问太多)。 ## 工件索引(细节都在这些文件) - 图与票:`.scratch/customer-rework/map.md`、`issues/01..11-*.md`(09 claimed、10/11 open) - 差异清单:`.scratch/customer-rework/audit-findings.md`(拍板依据;S1 的 64022 建议已被 64024 取代) - 票 08 产出:`issues/08-audit-prototype.md`(Answer 含双镜头方法论) - 原型缓存:`.scratch/lanhu-latest/v29-customer-pages/`(62 页 .txt);权威树 `.scratch/api-docs-reorg/lanhu-tree-v29.md` - 端点基准:`.scratch/customer-rework/audit-api-baseline.txt`(68 条客户相关端点)