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.

54 lines
8.4 KiB

2 days ago
# 客户模块全功能单文件 Demo「正确传参照」— wayfinder map
Labels: wayfinder:map
Status: open
Created: 2026-09-11
## Destination
交付一个零构建的单文件静态前端 Demo(HTML+JS,纯 fetch 直连后端),覆盖客户模块全功能(核心域 + 重流程 + 规则族),作为联调与用户验收的「正确传参照」;随附 Playwright UI 冒烟脚本(≥30 步)与 PASS/FAIL 报告。验收四标准:功能覆盖(原型可见入口全部可点且触发对应端点)、字段对齐(与 Bruno 出参一致,含脱敏与 "--" 口径)、流程闭环(新增→归档/抛公海全链路 + 操作日志留痕)、交付物齐备。已知 P1/P2 缺陷只展示现象不修代码;双仓未提交变更清单留待用户审查。
## Notes
- **第一依据**:蓝湖 v29 原型 A4 页族(`.scratch/api-docs-reorg/lanhu-tree-v29.md`)决定功能逻辑与字段回显;不追求样式高保真。
- **契约权威**:`.scratch/customer-module/API-SUMMARY.md`(85 端点)+ Bruno 文档仓 `D:\code\crm-api-docs`(注意:不是 E 盘);envelope `{code,success,message,data}`
- **形态参照/潜在基线**:`.scratch/customer-e2e/demo/index.html`(2264 行,单文件 fetch 层 apiGet/apiPost、`?api=` 覆盖、debug token 登录、五页签+图谱+导入+交割+设置)。
- **已知缺陷台账**:`.scratch/customer-frontend-handover/gap-report.md`(P2 G1-G6、P3×6、豁免 9 类)+ `customer-defectfix/FIX-REPORT.md` + contact-graph D-G1 + incr I-06(pool·board 契约漂移)+ heavy F-15。
- **Seed 数据**:`e2c-` 前缀,权威 id 清单 `.scratch/customer-e2e/seed-ids.json`(17 客户);增量夹具 `e2c-r2i-*`、图谱夹具 `e2c-cgd*`
- **本地起服**:`SPRING_PROFILES_ACTIVE=verify` + `CRM_MINIO_AK=admin` / `CRM_MINIO_SK=Itc@123456`,`java -jar crm-app\target\crm-app-1.0.0-SNAPSHOT.jar`,端口 8080;debug token `GET /api/auth/debug/token?userId=739564171091247104`(admin 罗伟健;BUDDY=744842318024015872)。
- **DB 是远程共享库(8.129.84.155)**:Demo 流程会写真实数据;还原口诀见 `.scratch/customer-frontend-handover/map.md:38`
- **纪律**:只测不修(缺陷仅展示现象);ADR-0017(零 PUT/DELETE、flat 动词、查询参传 id);console error=0;4xx/5xx 弹窗提示。
- **本 effort 全票 AFK**:用户离席,决策票由代理依证据决断并在 Answer 中记录理由,事后由用户统一审查;不设 HITL grilling 票。
- **Playwright**:系统 Python 3.13 + playwright sync API(chromium 已缓存 ms-playwright),`page.route` 反代注入 Bearer;报告形态沿用 `{steps:[{step,ok,note}], errors:[], api_urls:[]}`
- **架构事实**:13 个 Controller 在 `crm-customer/src/main/java/com/crm/customer/controller/`;错误码段 67xxx 已用到 67024;Maven 禁 `-pl`/`-rf`。
## Decisions so far
- [01 全功能覆盖对账矩阵](issues/01-coverage-matrix.md) — 69 入口逐行对账(assets/coverage-matrix.md):无缺口 33 / 新增 9 / 改造 16 / 豁免 14(均有台账依据);姊妹票交叉项已被 02/03/04 收口。**brief 口径修正**:详情实为 8 页签(brief 6 页签少计关联项目+战略协议);「换负责人」无独立契约(由 assign/transfer 承载,豁免);saved-view 有后端无 A4 文档(契约源=API-SUMMARY §2.14);assign-batch 有契约 demo 零调用。
- [03 商机侧硬依赖契约](issues/03-opportunity-hard-deps.md) — 关联商机页签实际恒 7 字段(G2 的 13 列是原型期望,Demo 按 7 真名渲染缺列显 "--";旧 demo 有 oppName/ownerNameSnapshot/statusName 三处字段名漂移须修正);客户侧无挂商机端点,Demo 用 `POST /api/opportunity` 预填 customerId 合成「从客户发起建商机」入口;级联矩阵:claim/抛公海被进行中商机 67007 前置阻断、归档 67006、交割发起整批原子强级联刷客户+商机+项目 owner——级联闭环链已定(建商机→抛公海被拒→商机关闭→放行→交割跟随)。详见 assets/opp-deps.md。
- [02 规则族契约摸底](issues/02-rule-family-contract.md) — 查重设置(/api/rule/customer/dedup,5 字段,宽松70/标准80/严格90 预设)与超期提醒(/api/rule/customer/reminder,首触30天/间隔7天)均已实现且有 Bruno+menuBindings,demo 调用一致;**公海池配置后端未实现且 v29 原型无此配置页**(客户公海=固定准入规则的虚拟池;/api/rule/pool 是线索域不得混入)——Demo 按纪律做只读占位卡片明示未实现,现象文案交 06 号票。
- [04 saved-view 与看板视图契约](issues/04-savedview-board-contract.md) — saved-view 后端齐全(crm-preference CRUD + workspace/page 的 savedViewId 已接线,save 是全平台唯一 @RequestBody 例外),P3「未接」纯属 demo 没挂 UI;board 数据端点白名单 stage/star/relation,pool 硬拒 67001,I-06 漂移真身是形态偏好 view-form/save 放行 pool+board——Demo 建议:saved-view 直接接线,overview/mine 加 stage 看板,pool 不给看板入口只摆「记忆成功+数据拒绝」双现象。
- [05 Demo 基线策略](issues/05-baseline-strategy.md) — **方案 A fork 演化**:`customer-e2e/demo/index.html`(2264 行)原样复制为本 effort `demo/index.html`,fork 头注来源+日期,行号可平移对照矩阵。理由:端点级零缺口已实证(59 唯一路径全落 85 端点)、33/69 入口无缺口、缺口全在呈现层是增量叠加,图谱/联系人导入两轮 effort 成果沉没成本高。边界=原样复用骨架+16 改造+9 新增+14 豁免;迁移风险 7 条(汇总卡挪用拆分、分配弹窗整批化勿破坏 BatchResult、pool 越界视图空集不硬拒、F6 stub 保留明示 NO_HIT、fork 平移零改动、I-06 双现象静态注记不实调、枚举硬编码待 07 核对后统一改)。
- [06 缺陷展示设计](issues/06-defect-phenomenon-design.md) — 三档呈现全用:**①渲染即现象**(默认,缺列/恒 null/空态如实渲染)+ **②角标** `data-defect="<id>"` 原生 title 悬浮(只加在易误读处)+ **③顶栏「已知缺陷」面板**(DEFECT_LEDGER 常量纯静态渲染,零网络请求)。面板四分区:A 开放现象 14 条(G1-G6/P3-3/4/5/6/D-G1/I-06 双现象静态注记/公海池只读占位卡 POOL-CFG/工商 stub STUB-LOOKUP)、B 已修复与本次接线 4 条、C 豁免清单 14 项、D 环境观察(F-15)。文案中性纪律(漂移/未实现/环境观察,不写 bug);全部带 data-defect 断言钩子供冒烟。
- [08 冒烟步骤表](issues/08-smoke-step-plan.md) — **40 步**(assets/smoke-plan.md):A 核心域 19 + B 重流程 6(含商机联动链 67007 阻断→关闭→放行、交割两段式)+ C 规则族 4 + D 缺陷现象 7(data-defect 钩子断言,FAIL=Demo 缺陷非后端缺陷)+ E 全局 4(console=0/零 PUT-DELETE/端点广度≥50/清扫还原)。4xx 弹窗通道用真实业务拒绝三处验证(67007/67003/64023)。seed:写夹具 e2c-dr-* 用后正门硬删、e2c- 只读、偏好/规则写后 API 正门还原、交割只动夹具无 F-13 负担。报告=demo/smoke-report.json(t04 形态+summary.verdict,全 ok 即 PASS)。
## Not yet specified
- ~~构建实施拆票~~ **已落票(09-15)**:09 缺陷呈现基建(DEFECT_LEDGER/面板/角标)→ 10 核心域·列表层 → 11 核心域·详情层 → 12 联系人菜单+商机侧入口 → 13 重流程+规则族收尾 → 14 冒烟脚本(40 步)→ 15 报告+双仓清单+收尾。依赖链:10/11/12/13 blocked by 07+09;14 blocked by 10-13;15 blocked by 14。fork 基线已复制(demo/index.html,2268 行含 4 行头注,原行号 +4 平移)。
- ~~双仓未提交变更清单~~ 随 15 号票(格式已定:assets/uncommitted-changes.md,分「本 effort / 前序遗留」两区;摸底:backend 20 java 改+若干 untracked、api-docs 大量 .bru 改,均前序遗留)。
- ~~PASS/FAIL 报告~~ 已随 08 定(demo/smoke-report.json,summary.verdict)。
## Out of scope
- 高保真样式还原(brief 明示低保真即可)。
- 修复后端已知缺陷(P1/P2 只展示现象);实化 stub(company-lookup 恒 NO_HIT、详情汇总卡 5 字段恒 null)。
- 前端工程化(框架/构建链/组件库/Node)。
- 移动端/响应式适配。
- A4-6 独立查重页入口(豁免台账已划出:与新增查重流合并,company-lookup 为 stub)。