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.
 
 
 
 
 

32 KiB

覆盖对账矩阵(票 01 产出)

目标:把 brief 三族(核心域/重流程/规则族)拆成 Demo 必须实现的每一个可见入口,逐项对账:端点 → 契约源 → 现有 demo 覆盖 → 缺口动作 → 依据。 审计基线:现有 demo .scratch/customer-e2e/demo/index.html(2264 行,下引行号=L);契约权威 .scratch/customer-module/API-SUMMARY.md(下称 AS);原型树 .scratch/api-docs-reorg/lanhu-tree-v29.md(下称 TREE);页面映射 .scratch/customer-frontend-handover/mapping-a4-pages.md(下称 MAP);缺口台账 .scratch/customer-frontend-handover/gap-report.md(下称 GR);豁免补充 .scratch/customer-demo-ref/map.md Out of scope(下称 MAP-OS)。 Bruno 仓:D:\code\crm-api-docs\(下引 .bru 均相对该根)。 审计方法:demo 全部 64 处 fetch 逐一归位(与 GR §一「零缺接口」一致),叠加 UI 元素清单(HTML L153-433 + 渲染函数)逐入口核对。

图例

  • 缺口动作无缺口 / 改造(入口在、行为或字段不全) / 新增(入口缺失需新建) / 豁免(台账划出,须引依据) / 待0X票(契约事实由姊妹票收口,矩阵先挂入口)。
  • 契约源缩写[DTO:x] = crm-customer/src/main/java/com/crm/customer/domain/dto/x.java[PARAM:x] = 同树 domain/param/x.java[PORT:x] = .../crm/customer/port/x.java;crm-rule 源 = crm-rule/src/main/java/com/crm/rule/

口径核实(票面点名的两个口径)

  1. 详情页签数量:原型/TREE A4-4 = 8 页签(信息/联系人/跟进/关联商机/关联项目/战略协议/团队成员/操作日志);后端 AS §2.5 同 8;现有 demo = 7 页签(L217-225,缺「关联项目」)。brief「6 页签」清单少计了关联项目(恒"--")与战略协议(返工票 12 已上线)。矩阵口径:8 页签为权威,demo 需补页签 5 占位。
  2. 「换负责人」:AS 85 端点内无 change-owner 类端点(CustomerController 11 端点 + Ownership 9 端点逐一核对);归属变更由 assign(公海→人)、transfer(总监级整批)承载。brief 提及的独立「换负责人」入口无契约源 → 豁免

一、核心域

1.1 三 workspace 列表(TREE A4-1[2] / A4-2[3] / A4-3-1)

# 入口(Demo 可见元素) 端点 契约源 现有 demo 缺口动作 依据
1 workspace 切换:我的客户 / 客户总览 / 客户公海 POST /api/customer/workspace/page 我的客户\workspace 列表分页.bru(总览/公海同名)+[PARAM:CustomerWorkspacePageParam]+[DTO:CustomerListRowDTO] 三按钮 L176-178,switchWs L537 无缺口 AS §2.1;MAP §1-3
2 内置视图下拉(我负责的/我协同的/待跟进/我关注的/最近访问) 同上(viewType AS §2.1 viewType 适配矩阵 ⚠️ 仅 ASSIGNED/COLLABORATING/FOCUSED 三项(L180-184),缺 FOLLOW_UP_DUE、RECENT 改造:补两选项(注意 pool 越界视图 SQL 空集不硬拒;RECENT 不接 saved-view) AS §2.1 入参表;TREE A4-3-1
3 keyword 搜索框 + 查询按钮 同上(keyword 同 1 L185-186 无缺口 AS §2.1
4 分页器(上一页/下一页/页码) 同上(current/size,BaseParam) AS §0 L193-195 无缺口 AS §0
5 列筛选器:阶段/客户星级/关系星级/类型/行业/省份 同上(customerStage/customerStarLevel/relationStarLevel/customerType/industryCode/provinceCode [PARAM:CustomerWorkspacePageParam] 无任何列筛选 UI 改造:补筛选控件(公海按 D29 另有「检索:类型/行业」) AS §2.1 入参表;AS §2.2 尾注
6 归档态切换(有效/已归档,A4-4-1 已归档客户态入口) 同上(archiveStatus AS §2.1;TREE A4-4-1 已归档页 未传(恒默认 1) 改造(低):列表加归档态开关,详情头部已有已归档 badge(L1070) AS §2.1;D19 归档=删除语义
7 saved-view 下拉(自定义视图叠加/新建/设默认/删除) /api/preference/view/list|save|delete|set-default + page 传 savedViewId AS §2.14;[PARAM:CustomerSavedViewFilter](query 包,消费侧已实现);.bru A4 无自定义视图文档(仅 A3 商机管理\销售机会\自定义视图\*.bru 4 件) 完全未接(P3-2) 新增(P3-2 翻正为主缺口);scopeKey=customer.mine/overview/pool;RECENT 不接;唯一 JSON 例外端点 AS §2.14;GR P3-2;待04票收契约细节
8 形态偏好切换(列表/分屏/看板,持久化) GET/POST /api/preference/view-form/get|save AS §2.14;.bru:我的客户\保存视图形态.bru 等三 workspace+联系人共 8 件 无切换 UI、无持久化(P3-1) 新增;pool 仅 list/split 的拒绝行为不可依赖(I-06 漂移) AS §2.14 ⚠;GR P3-1;待04票
9 看板视图(分组列+卡片拖列;分组列 stage/star/关系星级) POST /api/customer/workspace/board/summary + POST .../board/cards .bru:我的客户\看板列表\看板分组汇总.bru+看板单列卡片.bru(总览同名 2 件;公海无看板 .bru);[DTO:CustomerBoardSummaryDTO] ⚠️ board/summary 被挪用作列表「汇总卡」(L586);board/cards 零调用;无看板 UI 新增看板视图(mine/overview);pool 看板 67001 拒绝=文档口径,jar 实测 code=0=漂移 → 待04票 AS §2.1 看板边界;GR §六.1;MAP §1-2
10 卡片视图 / 分屏视图渲染形态 同 1(列表行子集) AS §2.14 view-form 三值;MAP §2 仅列表形态(P3-1) 改造(P3 后置):至少分屏占位;卡片=列表行子集 GR P3-1;TREE A4-2[3]
11 列表列:关注★/名称/编号/阶段/星级/负责人/部门/商机数/项目数/最近跟进/操作 同 1 出参 [DTO:CustomerListRowDTO](opportunityCount 真算、projectCount 恒 null、focusFlag 已补) 11 列(L189-192、rowHtml L563-578);项目数恒"--"已对 改造(字段级→07票):原型另有 类型/行业/战略协议等级/VIP 等级/进入公海时间(公海)等列未渲染 MAP §1 行「含 focusFlag·strategicAgreementLevel·vipCustomerLevel·enterPoolTime」;AS §2.1 出参行
12 列表「汇总卡」 (demo 借 board/summary) [DTO:CustomerBoardSummaryDTO] L197、loadSummary L582-591 改造(口径随05票):A4 原型列表页无独立统计卡(线索域才有视图统计卡片.bru)——保留为看板预览或移除,二选一 TREE A4-1/A4-2/A4-3 页名无统计卡;对照 A2 线索管理\*\视图统计卡片.bru

1.2 归属与批量动作

# 入口 端点 契约源 现有 demo 缺口动作 依据
13 行内关注★/☆切换 POST /api/customer/focus?id= / unfocus?id= .bru 客户公海\关注客户.bru+取消关注客户.bru;[DTO]— L567、toggleFocus L1016-1022 无缺口 AS §2.9
14 批量关注 POST focus-batch?ids= 客户公海\批量关注客户.bru L205、L1015 无缺口 AS §2.9
15 分配给销售(弹窗,单条) POST assign?id=&userId= 三 workspace 均「分配客户.bru」;错误 67012 ⚠️ 只取勾选第一条(dlgAssign L1023-1032) 改造:接 assign-batch(见 16),弹窗支持整批 AS §2.2
16 批量分配 POST assign-batch?ids=&userId= 三 workspace 均「批量分配.bru」 无调用 新增:批量面板加「批量分配」按钮 AS §2.2;.bru 批量分配.bru×3
17 批量领取 / 批量抛公海 / 批量归档 POST claim-batch / release-pool-batch / archive-batch 客户公海\批量领取.bru 等 L202-204、L1012-1014 无缺口 AS §2.2/§2.10
18 单条领取/抛公海/归档/恢复(详情头部按钮族) POST claim/release-pool/archive/restore?id= 客户公海\领取客户.bru、抛公海.bru、归档客户.bru、恢复客户.bru 详情头 L1081-1082;oneBy L1002-1007 无缺口(守卫码 67004/67006/67007 提示已有 toast 通道) AS §2.2/§2.10
19 重点客户标记/取消 POST star?id= / unstar?id= .bru 客户详情\标记重点客户.bru+取消重点标记.bru 详情头 L1080 无缺口(幂等两态;不写 oplog) AS §2.9
20 换负责人(独立入口) —(无端点) 豁免:85 端点无契约源;归属变更由 assign/transfer 承载 AS §2 全集;本文件「口径核实 2」

1.3 新增 / 编辑 / 查重(TREE A4-3-3,查重流)

# 入口 端点 契约源 现有 demo 缺口动作 依据
21 「+ 新建客户」按钮 + 表单(12 字段) POST /api/customer/create 我的客户\新增客户.bru;[DTO:CustomerCreateDTO] header L162、dlgCreate L927-949 无缺口 AS §2.3
22 名称相似查重确认流(needConfirm→similarHits→confirmSimilar 重发) GET check-name?name=&excludeId= + create 带 confirmSimilar 客户查重\名称相似提示.bru;[DTO:CustomerSaveResultDTO/CustomerSimilarHitDTO](masked 脱敏) doCreate L950-961 相似命中确认流;设置页试玩 L370 无缺口(similarHits 的 masked 展示形态→07票) AS §2.3 查重弹窗结构;AS §0 脱敏现状
23 信用代码查重(L3 硬拦) GET check-credit-code?creditCode= 客户查重\信用代码查重.bru;[DTO:CreditCodeCheckDTO] 内建于 create(67003 toast)+ 试玩 L371 无缺口(系统强制无开关) AS §2.3/§2.13
24 新建表单工商联想输入 GET company-lookup?companyName=(注意参数名 companyName) 我的客户\工商信息查询.bru create 表单无联想输入(仅批量 F6 已接) 改造(低):表单联想接线,stub 恒 NO_HIT 即现象呈现 AS §2.3;GR 豁免台账「企查查真实源」(真实源豁免、seam 接线不豁免)
25 编辑客户(CAS version 带回) POST edit?id= + GET detail?id= 回显 我的客户\编辑客户.bru;[DTO:CustomerUpdateDTO] dlgEdit L963-992(已带 version+isBizNegotiated+isChild,D-05 口径) 无缺口 AS §2.3 edit 行注
26 OCR 快捷新增(A4-3-3-4) 豁免:customer-module D5 划出 GR 豁免台账;MAP §1 行 a4-3-3-4
27 附件上传位(新增/编辑/协议/日志) (协议仅 fileFileId 文本框 L1248) 豁免:customer-module D2 GR 豁免台账
28 A4-6 独立查重页(卡片/列表)+ 客户合并 + 「已被合并」态 豁免:chart D4/D6/D19;MAP-OS 同 GR 豁免台账;MAP §1 行 a4-6-x

1.4 详情头部 + 8 页签(TREE A4-4[12])

# 入口 端点 契约源 现有 demo 缺口动作 依据
29 详情公共头部(名称/编号/阶段/星级/归档态/负责人/跟进摘要/下次跟进/计数) GET detail-head?id=(副作用 upsert customer_view_log) 客户详情\详情公共头部.bru;[DTO:CustomerDetailHeadDTO] loadHead L1061-1084 改造(低,P3-6):金额汇总卡 4 张未渲染(wonProjectAmount/planEstimateAmount/ongoingOpportunityAmount/contractAmount/paidAmount 恒 null 显 "--",渲染即现象呈现) AS §2.5 公共头部行;GR P3-6
30 页签1 客户信息(16 字段栅格) GET detail?id= 客户详情\客户详情.bru;[DTO:CustomerDetailDTO] L1098-1100、grid L1124-1135 改造(字段级→07票):G4 系统信息四件套恒"--"(DTO 未暴露,记档);creditCode 等脱敏分档 V1 划出 GR P2-G4;AS §5.4
31 页签2 联系人——列表(keyword/内外部筛选、8 列) GET contacts?customerId=(列表数据源=旧端点) 客户详情\联系人*.bru;[DTO:ContactDTO] L229-253、renderContactsList L864 无缺口(G5 联系人负责人缺列=字段级→07票) GR P2-G5;AS §2.4/§2.7b
32 页签2 联系人——图谱视图(定级/连线/删边/公司边派生) GET contact/graph/detail?customerId= + POST contact/graph/save 客户详情\联系人图谱\图谱全量读.bru+图谱整体保存.bru;[DTO:GraphDTO/GraphNodeDTO/GraphEdgeDTO];[PARAM:GraphSaveParam] 完整(修订⑧口径,L244-281、save L1599) 无缺口 AS §2.7b 图谱组;contact-graph D-G1
33 页签2 联系人——批量编辑(页内原子批) POST contact/batchEdit 客户详情\联系人\页内批量编辑.bru;[PARAM:ContactBatchEditParam] L235-237、L1986 无缺口(空串清空语义豁免=D-G1) AS §2.7b;GR 豁免台账
34 页签2 联系人——电话明文查看(单点/全部) GET contact/reveal?id= 客户详情\联系人\电话明文查看.bru L238、L1852 无缺口 AS §2.7b
35 页签2 联系人——导出 xlsx POST contact/export?customerId= 客户详情\联系人\联系人导出.bru L239、L2206(apiDownload) 无缺口 AS §2.7b
36 页签2 联系人——导入三段式弹窗(模板/上传预检/确认/结果/失败) contact/import/* 六端点 客户详情\联系人导入*.bru 六件;[DTO:ContactImport*DTO] cimp 弹窗 L397-426、L2131-2186 无缺口(注:GR 豁免台账「联系人子表导入划出 V1」已被 contact-graph 票 05 实现推翻,以 AS §2.7b 为准) AS §2.7b 导入组
37 页签2 联系人——快速添加多行 POST contact/quickAdd 客户详情\联系人\快速添加联系人.bru;[PARAM:ContactQuickAddParam] L241、L2097 无缺口 AS §2.7b
38 页签2 联系人——新建/编辑弹窗、删除 POST contact/create / contact/edit?id= / contact/delete?id= 联系人\新增联系人.bru+编辑联系人.bru+删除联系人.bru;[DTO:ContactDTO] dlgContact L1142-1159、delContact L1160-1168 无缺口(扩展档案字段豁免=V1 收窄) AS §2.7;GR 豁免台账
39 页签2 联系人——电话软提示 GET contact/check-phone?phone=&excludeId= 联系人\电话软提示.bru dlgCheckPhone L1169-1176 + 试玩 L372 无缺口(受查重设置电话开关控制) AS §2.7 D26
40 页签3 跟进记录——日期分组列表 + 写跟进弹窗 GET follow/page?id= + POST follow/add?id= 客户详情\跟进记录\跟进记录分页.bru+新增跟进.bru;[PARAM:FollowPageParam];[DTO:FollowCreateDTO] L1101-1103、dlgFollow L1188-1200 改造(低):筛选器未接(followWay/时间范围,[PARAM:FollowPageParam] 已支持);G1 操作人筛选后端无参=P2 记档,demo 侧豁免 AS §2.5 写跟进注;GR P2-G1;GR §六 D-02 现象已标注(L220、L1192)
41 页签4 关联商机(5 列渲染) GET opportunity/page?id=(port 反查) 客户详情\关联商机\关联商机页签.bru;[PORT:CustomerOpportunityQueryPort].OpportunityItem ⚠️ 仅 5 列(L1107-1108);原型 13 列、契约 7 字段 改造 + 待03票:列清单以 03 票实现实返为准(G2 挂账跨模块) GR P2-G2;issues-07 §C 收窄口径
42 页签5 关联项目(恒"--") —(A5 未建) 客户详情\关联项目\关联项目页签.bru 页签整体缺失 新增(占位页签,内容恒"--") AS §2.5 页签 5 行、§5.3;TREE A4-4-5
43 页签6 战略协议(列表卡+新增/编辑/删除/详情弹窗) agreement/* 五端点 战略协议*.bru 五件;[DTO:AgreementDTO] L1109-1113、L1234-1270(快照联动提示 L1240) 无缺口(附件位豁免,fileFileId 文本框保留) AS §2.6
44 页签7 团队成员(列表+添加/移除) GET member/list?id= + POST member/add?id= + member/remove?id=&memberUserId= 客户详情\团队成员*.bru 三件;[DTO:CustomerMemberDTO/MemberAddDTO] L1114-1117、L1202-1221 改造(字段级→07票):G3 职务/加入时间两列缺(DTO 未暴露,记档) GR P2-G3
45 页签8 操作日志(日期分组叙事流) GET oplog/page?id= 客户详情\操作日志\操作日志分页.bru;[PARAM:OplogPageParam](action 17 种值域) L1118-1120、oplogHtml L1223 改造(低):筛选器未接(action/keyword/时间范围);豁免:导出按钮(P3-4 原型有、无端点) AS §2.5 页签 8、§3 action 值域;GR P3-4
46 详情头动作族:编辑/写跟进/+快速添加/+成员/关注/取关/重点/领取/抛公海/归档/恢复 见各条目 L1076-1082 无缺口(入口聚合正确) AS §2.5

1.5 商机侧硬依赖(brief 核心域尾项)

# 入口 端点 契约源 现有 demo 缺口动作 依据
47 商机弹窗快建客户(最小集+confirmSimilar 透传) POST /api/customer/quick-create 我的客户\快速创建客户.bru;[DTO:CustomerQuickCreateDTO] 无调用 新增 + 待03票:演示入口形态(模拟商机弹窗场景)由 03 票定 AS §2.4
48 商机侧客户搜索(名称/联系人/电话三维+类型) POST /api/customer/search [PARAM:CustomerSearchParam];[DTO:CustomerSearchItemDTO];.bru 在 A3 侧(新建商机流程) 无调用 新增 + 待03票(同上,演示商机选客户场景) AS §2.4
49 商机详情带出联系人(port 消费面) GET contacts?customerId= 同 31 (联系人页签数据源即此端点,L1811) 无缺口(复用即可,03 票核对消费方视角) AS §2.4

1.6 联系人独立菜单(TREE A4-5[7])

# 入口 端点 契约源 现有 demo 缺口动作 依据
50 联系人列表页(顶级联系人列表,keyword 匹配姓名/电话/客户名) GET contact/page 联系人\顶级联系人列表.bru;[PARAM:ContactPageParam] 无独立菜单(联系人只作为客户详情页签存在) 新增:独立页签(含 scopeKey=contact.list 列偏好+形态偏好接线) AS §2.7;TREE A4-5-1
51 联系人详情页(A4-5-5) GET contact/detail?id= 联系人\联系人详情.bru 无调用(编辑弹窗直接用行数据 L1143) 新增(可与 50 合并为详情弹窗,回显走 detail 端点) AS §2.7;TREE A4-5-5
52 联系人全局搜索 GET contact/search?keyword=&limit= 联系人\联系人全局搜索.bru 无调用 新增 + 待03票(商机「关键联系人」数据源演示场景) AS §2.7
53 联系人操作日志页签(A4-5-6) —(CustomerOplog 无 contact 维度列) 新增(空态占位;G6 后端加列为挂账,demo 先空态) GR P2-G6;MAP §1 行 a4-5-6
54 联系人图谱节点展开折叠/跨客户人脉 豁免:原型本期暂不支持 GR 豁免台账

二、重流程

2.1 客户交割两段式(TREE A4-7[4])

# 入口 端点 契约源 现有 demo 缺口动作 依据
55 发起交割面板:预览按钮/原因三选/接收总监/备注/发起 GET transfer/preview + POST transfer/initiate 客户交割\发起前客户预览.bru+发起交接.bru;[DTO:TransferPreviewDTO/TransferInitiateDTO] L313-328、L1331-1355 无缺口(reason=resign 自动推导 D22 已有提示) AS §2.11
56 交接单列表(编号 JG*/发起人/接收总监/原因/状态/进度) GET transfer/page 客户交割\交接记录分页.bru;[PARAM:TransferPageParam] L329-336、L1356-1374 无缺口 AS §2.11
57 交接单详情弹层(明细行+处置态) GET transfer/detail?id= 客户交割\交接详情.bru;[DTO:TransferDetailDTO] L337、L1375-1388 无缺口 AS §2.11
58 明细分配(单行选人)+ 可分配销售列表 POST transfer/assign?id=&customerIds=&assignUserId= + GET transfer/assignable?id= 客户交割\客户分配.bru+可分配销售列表.bru;[DTO:AssignableUserDTO] dlgAssignOne L1389-1397、loadAssignable L1398-1409 无缺口(D-07 已修复 0.42s 实证,assignable 可正常拉取) AS §2.11;AS §5.6
59 交割入口(列表批量面板「发起交割」按钮) (跳转) L207、dlgTransferEntry L1033 无缺口 TREE A4-7

2.2 客户导入三段式(TREE A4-3-2;实现=upload→confirm→result 两段式+结果轮询)

# 入口 端点 契约源 现有 demo 缺口动作 依据
60 下载模板(V1 双 sheet) GET import/template 我的客户\客户导入\下载导入模板.bru tplLink L290(apiDownload 同源拼接 L2255) 无缺口 AS §2.12
61 上传预检(模式三选×重复策略二选×文件) POST import/upload(multipart file/importMode/duplicateStrategy) 我的客户\客户导入\上传导入文件并预校验.bru;[DTO:ImportPreviewDTO] L291-301、impUpload L1275 无缺口(INSERT 行必填前移 P1-1 已修复,预计数=执行) AS §2.12 F8;GR §二 P1-1
62 确认执行 / 任务结果 / 失败明细 POST import/confirm?taskId= + GET import/result?taskId= + import/failures?taskId= 我的客户\客户导入\确认执行导入.bru+任务结果.bru+失败疑似重复明细.bru;[DTO:ImportResultDTO/ImportFailDTO] L1307-1330 无缺口 AS §2.12
63 导入任务列表(最近导入记录) GET import/page 我的客户\客户导入\最近导入记录.bru;[PARAM:ImportPageParam] L305-309、loadImportPage L1289 改造(低):status/importMode 过滤未接(Param 已支持) AS §2.12
64 「触发校验规则后确认执行」复选框 —(原型控件幻影) 未实现(正确) 豁免:P3-3 幻影控件,实现语义=确认即执行 GR P3-3、§一 幻影语义行
65 客户导出按钮 —(无端点) 豁免:API-SUMMARY §5.4 定稿划出 GR 豁免台账

2.3 联系人导入三段式(contact-graph 票 05;镜像客户导入)

见条目 36( cimp 三步弹窗全覆盖:模板/上传预检/预览确认/结果失败明细;六端点全部接线)。无缺口。

2.4 超期提醒配置(TREE A7-3-3-1)

# 入口 端点 契约源 现有 demo 缺口动作 依据
66 超期提醒表单(总开关/首次触发天数/二次提醒间隔+各自开关)+ 刷新/保存 GET /api/rule/customer/reminder + POST /api/rule/customer/reminder/save A7 后台管理\业务规则\客户规则\客户管理设置(超期未跟进提醒)\当前提醒规则.bru+保存提醒规则.bru;crm-rule CustomerReminderRuleController L342-353、loadReminder/saveReminder L1410-1433 无缺口(契约细节核实归02票) AS §2.13

三、规则族

# 入口 端点 契约源 现有 demo 缺口动作 依据
67 查重设置表单(总开关/名称查重/匹配方式/相似阈值/电话查重) GET /api/rule/customer/dedup + POST .../dedup/save A7 后台管理\业务规则\客户规则\客户管理设置(客户查重设置)\读取查重设置.bru+保存查重设置.bru;crm-rule CustomerDedupRuleController L354-366、loadDedup/saveDedup L1434-1457 无缺口(64023 校验、信用代码恒开无配置已标注;细节核实归02票) AS §2.13/§3
68 查重消费侧试玩(check-name/check-credit-code/check-phone 三按钮) 见 22/23/39 L367-375(demo 特有辅助面板,非原型入口) 无缺口(建议保留:验收查重设置生效最短路径) AS §2.13 消费侧注
69 公海池配置(客户规则,brief 规则族点名) ??(后端疑似不存在) crm-rule 控制器面仅 CustomerDedupRuleController+CustomerReminderRuleController(客户域);无 CustomerPool*Controller.bru 客户规则下无公海池(线索规则\公海池*.bru 7 件属线索域,不适用客户) 待02票:确认原型依据页与后端实现边界;若确认未实现 → Demo 只读占位+现象标注(现象设计归06票) AS §2.13 仅两单例;crm-rule controller 目录实测;.bru 目录实测

豁免台账引用汇总(demo 侧不再展开的入口)

豁免项 依据
A4-6 独立查重页(卡片/列表)+ 客户合并 + 已被合并客户态 GR 豁免台账(chart D4/D6/D19)+MAP-OS
附件上传位(新增/编辑/协议/日志) GR 豁免台账(D2)
OCR 快捷新增 GR 豁免台账(D5)
企查查真实源(company-lookup stub 恒 NO_HIT) GR 豁免台账(seam 接线不豁免,见条目 24)
联系人扩展档案字段(性别/生日/微信/邮件/地址) GR 豁免台账(V1 档案收窄)
联系人图谱节点展开折叠/跨客户人脉 GR 豁免台账
batchEdit 空串清空语义 GR 豁免台账(contact-graph D-G1)
客户导出 GR 豁免台账(AS §5.4)
联系人子表导入划出 V1 已失效——contact-graph 票 05 已实现六端点(AS §2.7b),demo 已覆盖(条目 36);本矩阵不改判其他豁免
换负责人(独立入口) 本矩阵口径核实 2(85 端点无契约源)
操作日志导出按钮 GR P3-4(原型有、无端点)
「显示完整金额」开关 GR P3-5(敏感信息三档脱敏定稿划出)
「触发校验规则后确认执行」复选框 GR P3-3(原型控件幻影)
P2 记档四件(G1 操作人筛选/G2 商机 13 列/G3 成员两列/G4 四件套/G5 联系人负责人) GR §三——字段级挂账,demo 侧按现状渲染,随07票定展示口径

缺口汇总表

统计口径:上表 69 条入口中,「无缺口」33 条;新增 9改造 16(含字段级挂 07 票 4 条)、豁免 14(含台账引用汇总中 5 条未占独立行号项)、待姊妹票 4(待02×1、待03×3——待03 的 3 条同时挂「新增」)。个别条目带复合动作(如 41=改造+待03、45=改造+豁免),按主动作计入并加注。

新增入口(9 条)

# 入口 一句话缺口
7 saved-view 下拉 偏好视图四端点+savedViewId 全未接,demo 无自定义视图 UI(P3-2)
8 形态偏好切换 list/split/board 持久化四端点未接(P3-1);pool·board 漂移不可依赖(待04)
9 看板视图 board/summary 被挪用为汇总卡、board/cards 零调用、无看板 UI;pool 看板支持存疑(待04)
16 批量分配按钮 assign-batch 端点有契约无入口,现 dlgAssign 只处理勾选第一条
42 页签5 关联项目占位 原型/后端均有此页签(恒"--"),demo 整页签缺失
47 商机弹窗快建演示入口 quick-create 零调用(待03 定形态)
48 商机侧客户搜索演示入口 search 零调用(待03 定形态)
50 联系人独立菜单页 contact/page+contact.list scopeKey 未接,联系人仅作为详情页签存在
51+53 联系人详情/操作日志空态 contact/detail 零调用;A4-5-6 页签无(空态占位,G6)

改造入口(16 条)

# 入口 一句话缺口
2 视图下拉 缺 FOLLOW_UP_DUE/RECENT 两内置视图选项
5 列筛选器 六个共用列筛选参数全部无 UI
6 归档态开关 archiveStatus 未传,看不到已归档客户列表
10 分屏/卡片渲染 仅列表形态(P3-1 后置)
11 列表补列 类型/行业/协议等级/VIP/进入公海时间未渲染(字段级→07)
12 汇总卡口径 board/summary 挪用,与原型对不齐,随05定去留
24 工商联想输入 单条 company-lookup 未接(stub 显 NO_HIT 即现象)
29 头部金额汇总卡 4 张金额卡未渲染(5 字段恒 null 显"--",P3-6)
30 信息页签四件套 创建/更新时间·人恒"--"(G4→07)
31 联系人负责人列 G5→07
40 跟进筛选器 followWay/时间范围参数无 UI
41 关联商机列对齐 5 列 vs 原型 13 列(G2→07+待03)
44 成员两列 职务/加入时间(G3→07)
45 日志筛选器 action/keyword/时间参数无 UI(导出豁免)
63 导入任务过滤 status/importMode 无 UI
(并入 16)分配弹窗整批化 dlgAssign 单条语义 → 批量

豁免入口(14 项,见豁免台账引用汇总)

换负责人、A4-6 独立查重页×3 态、OCR、客户导出、日志导出、完整金额开关、导入触发校验复选框、附件位、企查查真实源、图谱展开折叠/跨客户人脉、联系人扩展档案字段、batchEdit 空串语义、P2 记档五件的 demo 侧豁免(G1/G3/G4/G5 字段级挂 07,G6 已列新增空态)。

待姊妹票(4 条)

  • 待02票(1 条):#69 公海池配置——后端 crm-rule 无客户公海池控制器、.bru 客户规则下无公海池文档,疑似「brief 点名但未实现」;02 票确认后若坐实,Demo 侧做只读占位+「未实现」现象标注(现象文案设计交 06 票)。
  • 待03票(3 条):#41 关联商机列清单(以实现实返为准收口 G2)、#47 quick-create、#48/#52 商机选客户演示形态。
  • 待04票(2 条交叉):#8/#9 pool·board 形态与看板的实现实态(I-06 漂移的 jar 实测结论)。

对 05 号票(基线策略)的输入要点

  1. 覆盖度:现有 demo 69 个入口中 33 条无缺口,且 GR 实测 59 唯一路径零缺接口、零幻影端点——骨架(fetch 层/登录/五页签/弹窗件)与图谱修订⑧、批量编辑/快速添加/联系人导入、协议五端点、双导入、交割、设置双单例均为已验证实现,沉没成本高,支持方案 A(fork 演化)
  2. 改造面集中在四块:偏好三件套 UI(#7/#8,全新)、看板视图 UI(#9,把 #12 的挪用拆开)、联系人独立菜单(#50-53,新页签)、筛选器补齐(#5/#40/#45/#63,Param 均已支持,纯接线)。
  3. 迁移风险清单:(a) #12 汇总卡挪用 board/summary 需在看板落地时拆分;(b) #15 dlgAssign 单条语义改批量时勿破坏原 toast/BatchResult 呈现;(c) #2 补视图选项时 pool 越界视图 SQL 空集不硬拒、RECENT 不接 savedViewId;(d) F6 工商更新 stub 按钮按「只测不修」保留并明示 NO_HIT;(e) fork 后 API_BASE 默认值与 ?api= 覆盖、debug token 登录逻辑原样搬运;(f) I-06 漂移未收口前,形态切换 UI 不得断言 pool+board 被拒。
  4. 建议文件落点:本 effort 目录 demo/index.html(fork 起点=现 index.html 原样复制),矩阵行号引用均基于原文件,fork 后行号可平移对照。

对 07 号票(字段对齐清单)的输入要点

  1. 圈定范围:本矩阵「缺口动作≠豁免」入口即 07 的展开对象;豁免行不展开。
  2. 字段级挂账先行:G2(关联商机 7 vs 13 列,待03 收口后才有定稿列清单)、G3(成员两列)、G4(四件套)、G5(联系人负责人)——07 票按「现状值域 + 定稿口径」两栏写,避免和后端挂账票冲突。
  3. 脱敏口径清单(demo 已实现的呈现需断言):similarHits.masked(CustomerSimilarHitDTO)、图谱 phoneMasked、reveal 明文(列表/图谱共享 revealed 态)、联系人导出电话同列表脱敏口径;「--」位置:projectCount、页签5、金额卡 5 字段、detail 四件套。
  4. 字典枚举核对点:demo 内置硬编码枚举需对 Bruno/字典树核对——customer_stage(STAGE)、follow_way 5 值(dlgFollow L1190)、contact_source 4 值(dlgContact L1151 硬编码 code)、job_title 两级树(ensureDicts L625-630 动态拉取)。
  5. 契约源优先级.bru 出参 > DTO 源码 > AS 条目;A4 无 saved-view .bru(仅 A3 有 4 件),该块契约源只能引 AS §2.14 + 平台实现,07 票注意标注「文档缺口」。

结论一句话

端点级零缺口(GR 已证),缺口全部在入口呈现层:9 新增 + 16 改造 + 14 豁免 + 4 待姊妹票;豁免全部有台账依据,待决项已分别挂 02/03/04 票,无新增后端需求(除 G2/G3/G4/G5/G6 既有挂账外)。