# 客户模块(A4)实现票 — 依赖总览 从冻结 spec(`../map.md` + `../../crm-customer/CONTEXT.md` + `../issues/NN-answer.md` 决议票)折出的 tracer-bullet 实现票。每张=一条贯穿 schema→API→测试的垂直切片,blocker-first 编号。 ## 依赖图 ``` 01 骨架 (无 blocker) └─ 02 主表CRUD+查重 (⭐扇出最广) ├─ 03 联系人子表 ├─ 04 三workspace+归属流转 │ ├─ 07 客户交割 │ └─ 10 saved-view接入 ├─ 05 客户阶段(seam版) │ └─ 06 详情(8页签+跟进+oplog) ← 也 blocked by 02 │ └─ 09 超期提醒 ← 也 blocked by 02 ├─ 08 客户导入 ← blocked by 02 + 03 └─ 11 商机客户接口对接 ← blocked by 02 + 03 + 06 12 原型对齐验收 ← blocked by 01–11 全部 13 接口文档 ← blocked by 01–11 全部(可与 12 并行) ``` ## 前沿顺序(可开工的票=其 blocker 全完成) | 波次 | 可并行开工 | |---|---| | 1 | **01** | | 2 | **02** | | 3 | **03** / **04** / **05** | | 4 | **06**(需02+05) / **07**(需04) / **08**(需02+03) / **10**(需04) | | 5 | **09**(需02+06) / **11**(需02+03+06) | | 6 | **12** / **13**(需 01–11 全部 + mvn compile 通过 + crm-app 启动 + 关键接口冒烟) | ## 每张票 `/implement` 时的通用要求 - `.java` 一律 UTF-8 无 BOM;新增 entity 过一遍孤立单大写字母检查清单(AGENTS.md) - 依赖方向单向 `opportunity → customer`;「关联商机」反查走 customer 定义、opportunity 实现的出站 port(ADR-0029 范式),**不建 Maven 循环** - 每张票收工前 `mvn compile` 全绿 + 服务层集成测试(H2 MySQL 模式)通过 - 每张票 `/implement` 之间清 context 重新开始;完成后 `/code-review` ## 已翻案/新拍板口径(实现时以此为准,勿回退旧 answer 正文) - **D20 改票 B**:客户阶段本期**不自动触发重潜**,只留 `CustomerStagePort` seam(票 05) - **D26 拍板 A**:联系人电话=可配置软提示,**不建电话唯一索引**(票 03/08) - **§5.3 拍板 A**:一期只做归档,**无前端删除入口**,`deleted` 仅系统合并时置位(票 02/04) - **§5.5 拍板 A**:`customer_oplog` **无限期保留**(票 06)