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.
 
 
 
 
 

4.9 KiB

05 Demo 基线策略(fork 演化 vs 参照重写)

Type: task Status: resolved Blocked by: 01

Question

brief 要求「生成单文件 Demo,参考 crm-e2e/demo/index.html 形态」。基于 01 号矩阵的缺口结论决断:

  • 方案 A fork 演化:复制现有 2264 行 index.html 到本 effort 目录作为基线,按矩阵补缺口;
  • 方案 B 参照重写:复用其 fetch 层/登录/页签骨架的模式,按矩阵从零组织页面结构。

产出决策 + 理由 + 复用/重写边界清单 + 文件落点(建议 assets/../demo/index.html 或本 effort 目录下 demo/index.html)+ 迁移风险清单(如现有 demo 的 stub 按钮 F6 工商更新如何处置)。

Pointers

  • 矩阵:assets/coverage-matrix.md(01 号产出)。
  • 现有 demo 体量与结构侦察结论见本 effort map.md Notes 与 01 号票 Pointers。
  • 注意现有 demo 已含图谱视图等 contact-graph effort 成果,重写的沉没成本要计入。

Answer

(2026-09-11,AFK 决断。依据 = assets/coverage-matrix.md「对 05 号票的输入要点」+ GR §一 端点面结论。)

决断:方案 A fork 演化

基线 = .scratch/customer-e2e/demo/index.html(2264 行)原样复制.scratch/customer-demo-ref/demo/index.html,fork 头部加注释标记来源与日期(行号引用可平移对照矩阵),此后一切演化只发生在 fork 内,原文件不动。

理由

  1. 端点级零缺口已实证:矩阵 69 入口中 33 条无缺口;GR 实测 demo 59 唯一路径全部落在 85 端点内、零幻影端点。骨架(fetch 层/登录/页签/弹窗件)与图谱修订⑧、批量编辑/快速添加、联系人导入六端点、协议五端点、双导入三段式、交割两段式、规则双单例均为已验证实现——重写等于把这些验证过的行为重新赌一遍。
  2. 缺口全部在呈现层(9 新增 + 16 改造),是增量叠加不是结构翻新,fork 天然承载;方案 B 的收益只剩「代码组织更干净」,brief 明示低保真、无此要求。
  3. 沉没成本计入:图谱视图(contact-graph 修订⑧)、联系人导入(该 effort 票 05)都是后续 effort 的成果,重写会把两轮 effort 的交付物清零重做。
  4. 风险清单可枚举且可控(见下),无不可逆决策点。

复用 / 改动边界清单

边界 内容
原样复用(不动) apiGet/apiPost/apiDownload fetch 层;?api= 覆盖;debug token 登录;五页签骨架(客户/图谱/导入/交割/设置);图谱视图;联系人批量编辑/快速添加/导入;协议五端点弹窗;客户导入三段式;交割两段式;设置页双单例 + 查重试玩三按钮;dlgCreate/dlgEdit/dlgContact 等全部弹窗件
改造 16 项 矩阵「改造入口」表逐条执行(#2 视图选项、#5 列筛选、#6 归档态、#10 分屏/卡片、#11 列表补列、#12 汇总卡口径、#24 工商联想、#29 金额卡、#30/#31/#44 字段级挂 07、#40/#45/#63 筛选器接线、#15+#16 分配弹窗整批化、#41 商机页签列)
新增 9 项 #7 saved-view 下拉(JSON 例外)、#8 形态偏好切换、#9 看板视图、#16 批量分配按钮、#42 页签5 占位、#47/#48 商机侧演示入口(形态按 03 票)、#50 联系人独立菜单、#51+#53 联系人详情/日志空态
豁免 14 项 不实现;UI 上不出现或按 06 票设计摆现象

迁移风险清单(实施票必读)

  • (a) #12 汇总卡挪用:现 loadSummary 把 board/summary 当汇总卡且字段名错(demo 读 count/name/key,DTO 实为 cnt/groupValue)且未传 groupColumn——看板视图落地时拆开:汇总条修字段名 + 显式 groupColumn=stage(或随看板合并),pool 下该调用吃 67001 须改为不调。
  • (b) #15 分配弹窗整批化:dlgAssign 改接 assign-batch 时保留原 BatchResult 呈现与 toast 通道,勿破坏 #17 批量三件套的既有结果展示。
  • (c) #2 视图选项:pool 越界视图(ASSIGNED 等)是 SQL 空集不硬拒,UI 不做禁用特判;RECENT 不接 savedViewId。
  • (d) F6 工商更新 stub 按钮:按「只测不修」保留,按钮文案/结果明示 stub 恒 NO_HIT 现象(06 票给文案)。
  • (e) fork 搬运原样:API_BASE 默认值、?api= 覆盖、debug token 登录逻辑零改动平移。
  • (f) I-06 漂移:04 票已定口径——pool 不给看板入口;形态偏好 save 允许存 board(实测 code=0)但数据端点 67001,只摆「记忆成功 + 数据拒绝」双现象,UI 不断言文档的拒绝行为。
  • (g) 枚举硬编码:demo 内置 STAGE/follow_way/contact_source 等硬编码先照搬,07 票核对字典后统一改(核对前不自行"修正")。

文件落点

  • demo/index.html(本 effort 目录下,brief 建议、矩阵建议一致)。
  • 冒烟脚本 demo/smoke.py、报告 demo/smoke-report.json(形态随 08 票)。