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.

45 lines
4.8 KiB

# crm-project(A5 项目管理)实现票仓
父文档(契约权威):`.scratch/crm-project-wayfinding/deliverable-spec.md`(12 项承重决策见其 §0)。
拆票会话:2026-09-10,to-tickets。原型权威树:`.scratch/api-docs-reorg/lanhu-tree-v29.md`。
## 通用纪律(每张票开工前必读,逐条适用)
1. **开工前置**:前置票已沉淀文档并清理上下文。本票以**全新会话**起步,只凭本票票面 + 下列沉淀文档(spec / API-SUMMARY / 审计台账 / map Decisions),**不依赖任何前票会话记忆**。
2. **收工沉淀(代码之外必须落的,按票适用)**
- 新端点 → bruno-sync 生成 .bru(Bruno 仓 `E:\code\crm-api-docs`,agent 不提交 git,留用户审查提交)+ `.scratch/customer-module/API-SUMMARY.md` 同款形态的 crm-project API-SUMMARY 增量登记;
- 拍板/发现/口径 → 回写 spec 对应节或本 README 的 Decisions;
- 模块级决策 → CONTEXT.md / ADR(spec §8 留痕清单)。
3. **收工检查**:AGENTS.md「新模块接口接入 checklist」出票/收工各跑一遍;全量 BOM 扫描;`mvn compile` + 模块测试绿。
4. **e2e loop 三段式(测/修/验各自全新会话)**:16 审计(只测不修,产出 P0–P3 台账)→ 16R-* 返工(从台账动态开票,只修台账所指)→ 17 复测(台账全项复跑,P0/P1 清零才过,不过回环再开 16R)。P2/P3 记档,用户验收时可翻案。
5. 环境事实(起服 verify profile / mvn 路径 / `py -X utf8` / Playwright venv `.scratch/customer-e2e/.venv10` / 远程共享 DB):见 `.scratch/customer-frontend-handover/map.md`「环境事实」节,以彼处为准维护。
## 依赖图
```
01 → 02 ─┬→ 03 ─┬→ 14
├→ 04 ─┘
├→ 04 + 11 → 13 ──→ 16
├→ 05 → 06 ┐
│ 07 ─┼→ 15 ──→ 16
│ 08 ─┘
├→ 09 ─┐
├→ 10 ─┼→ 15
├→ 11 ─┘
└→ 12 ──────────────────────→ 18
16 → 16R-*(动态)→ 17 → 18 → 19
```
Frontier 推进:01(无阻塞可立即开);02 之后 03/04/05/09/10/11/12 七张并行;13 等 04+11;14 等 03+04;15 等 05–11;16 等 13+14+15;17 等 16R 全清;18 等 12+17;19 等 18。
## Decisions
- 2026-09-10 拆票拍板:存量无 opp_status=5 数据,票 12 仅类级迁移、不加数据搬迁票(用户确认)。
- 2026-09-10 前端形态:demo 单页 = e2e 载体 + 验收前端参考实现,真实 Vue 仓由前端团队按 Bruno 文档另做(沿 customer 先例)。
- 2026-09-10 票 02 拍板:**项目动态落域内 `project_oplog` 单表 + `ProjectOplogWriter` 统一写入器**(spec §4「crm-log 投影」落地口径)——crm-log 平台审计表 `sys_log_operation` 无 biz 维度、无法按项目过滤投影;域内单表对称 opportunity_oplog 先例,写端点另挂 `@OpLog` 落平台全局审计 crm-log。票 10 读侧按此投影。
- 2026-09-10 票 02 拍板:**深 tag 页面目录** = 项目管理(看板视图)/项目管理(分屏视图)/项目管理(列表视图)/我的项目/项目详情/项目建档。原型树 v29 一行索引未展开详情页;详情/建档 tag 对应原型 a5-1-2-1 页签详情与看板/列表页新建入口。
- 2026-09-10 票 02 拍板:错误码段 **68xxx**(auth 61/file 62/dict 63/rule 64/lead 65/opp 66/customer 67 之后顺延);商机侧 66008(卡不存在)在建档入口翻译为 68007(异常不跨 seam)。
- 2026-09-10 票 13 拍板:**ProjectRuleQueryPort 包位置 = `com.crm.rule.port.inbound`**(crm-rule 声明并自实现,对称 CustomerCatalogPort 的 inbound 形态;与 port.outbound「消费方 adapter 实现」方向相反),DTO 随包 record(StageAliasDTO/BidConfigDTO/PoolMemberDTO/ConflictPullDTO/StageRemindDTO),不暴露内部 ProjectRuleDTO。ConflictPullDTO 含「启用维度集+命中阈值+触发条件」签名形态——维度集/阈值为签名预留(conflictPullJson 无该配置层,解析恒空集/占位 1,spin-out 前置补列)。stageCode 取 project_stage 值字符串("0"~"6",容错 "STAGE_0" 形态取尾段)。
- 2026-09-11 评审拍板(code-review 收口):①ticket12 提交(03d3702)夹带了当时工作区在途的 customer focus-flag/导入预检改动(CustomerMapper/CustomerListRowDTO/CustomerImportAnalyzer),属另一工单范畴、内容有测试随行,保留并在此如实记录,不回改历史;②Controller 类级 @Tag 与方法级 tags 互斥(ADR-0024 修订5),「项目建档」目录撤销、建项目归 看板/列表 两页多 tag;③读侧别名字典请求内提拉一次(N+1 收敛);④客户换负责人同步逐项目写 TRANSFER 动态。
- (后续各票拍板追加于此)