You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

24 lines
2.9 KiB

5 days ago
# 06 — 客户详情页(8 页签 + 跟进记录 + 操作日志)
**What to build:** 客户详情页能展示公共头部 + 汇总卡片 + 8 个页签;跟进记录能追加(不可改删)且写库刷新超期提醒锚点;操作日志按 append-only 审计记录并可分页查询。外部模块页签(关联项目/战略协议)显"--"占位。
**Blocked by:** 02 — 客户主表 CRUD + 查重校验;05 — 客户阶段(seam 版)
**Status:** ready-for-agent
**Spec 依据(详见 issues/07-answer.md)**:D13 详情 8 页签 + append-only 跟进 + 字段级 oplog;§5.5 拍板 A = oplog 无限期保留。
**关联商机反查的依赖方向(关键)**:「关联商机」页签需读 crm-opportunity,但 Maven 依赖只能 `opportunity → customer`。故 customer 侧**定义出站 port**(如 `CustomerOpportunityQueryPort`),由 crm-opportunity 实现(对称 ADR-0029 lead→opp port 范式,票 11 落实现);本票只定义 port + 页签消费契约,反查真源接线归票 11。
- [ ] 公共头部(票 07 §A,8 页签共享):客户名称/阶段只读条/客户星级/关系星级/战略协议等级(快照)/已成交VIP等级(快照)/档案状态/负责人+部门/最近跟进摘要/待跟进提醒/关联业务计数
- [ ] 汇总卡片 4 张(票 07 §A):均外部模块提供,接口失败显"--"+重试、不显 0(grill Q18)
- [ ] 8 页签骨架(票 07 §A):1 客户信息(票02) / 2 联系人(票03) / 3 跟进记录 / 4 关联商机(port 反查) / 5 关联项目(A5 显"--") / 6 战略协议(显"--") / 7 团队成员 / 8 操作日志;首次打开才加载,切回保留条件/分页
- [ ] `customer_follow` 跟进记录(票 07 §B):followWay(字典 follow_way)/followContent/nextFollowTime/跟进人快照;**提交后不可改删**(纠错=新增补充);防重复提交
- [ ] 跟进写库副作用(关键):`customer.last_valid_follow_time = now`(超期提醒锚点刷新,票 09);更新"待跟进"状态
- [ ] 跟进契约:`POST /api/customer/{id}/follow` / `GET /api/customer/{id}/follow/page`(时间倒序+日期分组,按 follow_way/关键字/时间范围过滤)
- [ ] 团队成员页签(票 07 §D):销售负责人快照 + 协同人列表;`GET /api/customer/{id}/members`
- [ ] `customer_oplog`(票 07 §E):action 枚举(CREATE/UPDATE/FOLLOW/ARCHIVE/RESTORE/TRANSFER/CLAIM/POOL/STAGE_CHANGE)/detail`把{字段}从{旧}修改为{新}`/操作人快照;**只追加不可改删**;**§5.5 无限期保留**(不设保留期/清理/冷热分离)
- [ ] oplog 契约:`GET /api/customer/{id}/oplog/page`(时间倒序+日期分组+关键字/时间范围过滤)
- [ ] `CustomerOpportunityQueryPort` seam 定义(关联商机页签只读反查,真源归票 11);`GET /api/customer/{id}/detail`
- [ ] crm-dict 新增 `follow_way` 分组(微信/拜访/电话/邮件/会议)