# 待确认事项清单 **Effort**:crm-lead / crm-rule / crm-preference 三模块 spec chart **日期**:本次 grill 结束时 **目的**:所有可自行决策的问题已定;此清单为**必须由产品/UX 输入**才能推进的外部依赖。 --- ## 一、待产品输入(阻塞 spec 收尾) ### 【产品-A】线索作废(ticket 03 [C]) **问题**:线索"作废"这一态的触发/入口/可逆性完全未定,原型只在"我的线索"里显示了这个状态标签,但未说明业务规则。 **需产品拍板**: - **A1 触发方式**:作废是**自动**(如反馈=无效自动作废)还是**手动**(销售/管理员点按钮)? - **A2 触发入口**:从哪些状态可进入作废?只有"跟进中/已领取"可作废,还是任何非终态皆可? - **A3 可逆性**:作废后能否恢复?若可恢复,恢复到哪个状态?(对齐"激活 F2"机制?) - **A4 归属处理**:作废后**领取人是否保留**?是否回流公海? **旁证**:原型"我的线索"里反馈=无效/空号的行显示状态为"线索作废",暗示"反馈=无效"可能自动作废,但未明说。 **当前影响**: - 03 ticket 状态机主体已定(7 态、双计时器、转商机终态、激活 F2),仅作废相关的 4 个边/矩阵格用 `⚠C` 标出待补。 - 不阻塞 04/06/08,因为作废仅是状态枚举一值,本身不影响字段模型/公海池实体/转商机契约。 - **仅阻塞 03 收尾(resolved)**。 --- ### 【产品-B】权限与数据可见性 PRD(ticket 05,5 项) **问题**:grill 05 时发现"团队成员/线索池协作人"这类**行级授权必须能越过部门天花板**,纯 AND 模型无法表达。已升级为**三机制模型**(功能权限 + 数据可见范围 + 行级授权通行证),配套 PRD 文件 `.scratch/clue-module/权限与数据可见性-PRD.md`。5 项待产品拍板: | 编号 | 事项 | 影响 | |---|---|---| | **PRD-1** | 行级授权触发动作清单是否完整(见 PRD "机制三"表格);是否有需补充或删除的触发动作 | 决定 `grant_source` 枚举 | | **PRD-2** | 被行级授权者的权限边界:仅可查看 vs 可执行操作(编辑/分配/删除);查看与操作是否分级(例如团队成员只读、协作人可管理) | 决定 `grant_level` 是否需要分档,以及授权表结构 | | **PRD-3** | 移除行级授权(移出团队成员/协作人)后**立即失效**的行为是否符合预期 | 决定授权撤销的实现(硬删 vs 软删+失效标记) | | **PRD-D** | 线索是否存在**跨部门逐条指派**场景 | 决定要不要 `resource_type=lead` 直接授权通道;若无此场景,行级授权对线索仅走"池维度"翻译 | | **PRD-E** | 池负责人/协作人的**授权范围**:仅池内线索,还是含"兼池"配置管理权? | 决定"授权对象→可见数据"翻译规则,直接影响拦截器 SQL | **当前影响**: - 05 整个 ticket **blocked**(阻塞项已明确列在 Blocked by)。 - 04 的**行级授权部分**随 05 挂起;04 实体字段建模部分不受影响(已 resolved)。 - 不阻塞 06/07/08(这三张已 resolved)。 - **是全项目最关键的外部依赖**——决定权限模型、决定 crm-auth 是否需要增强 `sys_row_grant` 通用表。 **建议产品同步阅读**:`.scratch/clue-module/权限与数据可见性-PRD.md` --- ## 二、待 UX 修订原型文案(不阻塞 spec,但上线前必改) grill 过程中,产品口径多处推翻了原型;原型文案与 spec 不一致会误导前端/UX 后续迭代。**建议 UX 逐条修订**: ### 【UX-1】列表字段配置:原型说"共用一套",产品改为"每菜单独立"(ticket 07) **文案作废共 7 处**: | # | 文件 | 行号 | 原文关键片段 | |---|---|---|---| | 1 | `a2-1-1线索公海(列表视图).txt` | 364 | "字段显隐配置:支持自定义勾选…**【我的线索】页面共用同一套字段配置方案,配置互通**" | | 2 | `a2-1-2____.txt` | 1796 | "字段拖拽排序、字段显隐配置,**与线索公海共用一套字段配置规则**" | | 3 | `a2-1-2____.txt` | 1814 | "**与【线索公海】页面共用同一套字段配置,修改后两边同步生效**" | | 4 | `a2-1-2____.txt` | 1961 | "**线索公海、我的线索共用同一套字段配置,一处修改保存后两边表格同步生效**" | | 5 | `a2-1-3____.txt` | 333 | "**与线索公海、我的线索共用一套字段配置规则**" | | 6 | `a2-1-3____.txt` | 351 | "**与【线索公海】【我的线索】页面共用同一套字段配置,修改后三处页面同步生效**" | | 7 | `a2-1-4____.txt` | 406 | "**与线索公海、我的线索、我的关注共用一套字段配置,一处修改全模块同步生效**" ⚠️与同文件 line 436 "该套字段配置独立隔离…互不干扰、不互通"自相矛盾 | **统一修订口径**: > 字段显隐 / 拖拽排序配置**仅当前页面生效**,与其他线索列表页(公海 / 我的线索 / 我的关注 / 线索管理)配置**互不同步**。 ### 【UX-2】列表设置:原型说"拖拽实时保存",产品改为"点保存才落库"(ticket 07) **文案作废共 2 处**: | # | 文件 | 行号 | 原文关键片段 | |---|---|---|---| | 1 | `a2-1-2____.txt` | 1813 | "字段拖拽排序:鼠标拖动列表表头…**配置缓存至当前账号**"(暗示实时保存) | | 2 | `a2-1-2____.txt` | 1843 | "字段配置:**拖拽表头、列表设置修改后实时保存**" | **统一修订口径**: > 表头拖拽的临时顺序仅前端本地保留(关页面/刷新即丢),用户在【列表设置】弹窗内点【保存】才把显隐+顺序一起落库;【取消】或未保存关页面则本轮变更全部作废。 ### 【UX-3】公海池"一部门一池",原型江苏 1/2/3 是错误示例(ticket 04) **待改数据**:`a7-3-1_线索规则.txt` 列表数据行: - "江苏全域公海池1"(江苏队,盐城市,7天/180天/100) - "江苏全域公海池2"(江苏队,淮安市/淮安,15天/90天/200) - "江苏全域公海池3"(江苏队,泰州市/泰州,15天/…) **修订**:三池合并为 1 池,负责市场取并集(盐城+淮安+泰州);同时清理"淮安市,淮安""泰州市,泰州"等重复脏数据。 ### 【UX-4】转商机触发条件:原型"跟进中/已联系/有效",产品改为"已领取+跟进中"(ticket 08) **文案作废共 3 处(4 行)**: | # | 文件 | 行号 | 原文 | 改为 | |---|---|---|---|---| | 1 | `a2-1-2____.txt` | 1826 | "转商机:仅**有效 / 跟进中 / 已联系**线索可见" | "仅**已领取 / 跟进中**线索可见" | | 2 | `a2-1-2____.txt` | 1898 | "状态为**跟进中 / 已联系 / 有效**的线索可点击【转商机】按钮" | "状态为**已领取 / 跟进中**的线索可点击【转商机】按钮" | | 3a | `a2-1-2____.txt` | 1929 | "可打开弹窗的线索状态:**跟进中、已联系、有效**" | "可打开弹窗的线索状态:**已领取、跟进中**" | | 3b | `a2-1-2____.txt` | 1930 | "禁止转商机场景:已转商机、过期失效、**无效、未反馈**状态" | "禁止转商机场景:待领取、未分发、过期失效、线索作废、已转商机(反馈情况不参与判定)" | --- ## 三、当前已可交付的 spec 除上述外部依赖,以下 spec 已定稿可交付开发: | 模块 / 主题 | ticket | 状态 | |---|---|---| | 商机模块现状(不存在) | 01 | ✅ resolved | | sys_region 表(国标 code 前缀) | 02 + Amendment | ✅ resolved | | 线索状态机主体(7 态 + 双计时器 + 转商机终态 + 激活 F2) | 03 | 🔩 claimed(仅作废悬置) | | 公海池 lead_pool 实体(主表+3 关联表)+ 归属 | 04 | ✅ resolved(行级授权部分等 PRD) | | 线索 lead 实体全字段(含快照策略、时效字段、字典绑定) | 06 + Amendment | ✅ resolved | | crm-preference 列偏好契约(1 表 2 方法) | 07 | ✅ resolved | | crm-lead → 商机 outbound port 契约 | 08 | ✅ resolved | --- ## 四、优先级建议 按对交付的阻塞程度: 1. **P0 - 产品-B(PRD 5 项)**:阻塞 05 与 04 权限部分;影响整个 crm-auth 是否要加通用 `sys_row_grant` 表。**最先拿**。 2. **P1 - 产品-A(线索作废)**:阻塞 03 完整定稿,但业务规则轻,可快速拍板。**次先拿**。 3. **P2 - UX 修订清单**:不阻塞后端 spec,但影响前端/UX 迭代。**并行推进**即可。 --- ## 五、本轮 grill 决策记录(2026-08-12) grill 过程中发现并解决了 12 项 spec 自身一致性和定义缺口问题(不依赖外部输入)。详见 `线索业务-PRD.md` §12.1 决策清单。摘要: | # | 决策 | 影响 | |---|---|---| | 1 | 池换部门允许;待领取/未分发 dept_id 跟池走,已领取/跟进中不动;目标部门须无池 | 改写 [I] | | 2 | 线索合并不做,Out of scope | map.md | | 3 | 拆出 `lead_feedback` 独立表(DRAFT/SUBMITTED),改写 [Q2=c] | §6.4、ticket 06 | | 4 | 过期失效线索可删(管理/持有人·强确认) | 03 矩阵 | | 5 | 释放/回收时反馈快照不清空 | §6.6、原型引擎 | | 6 | 激活时 N 和 M 均重置 | 03 边 #13、§6.8、原型引擎 | | 7 | hold_limit 只算已领取 + 跟进中 | §6.2 | | 8 | 批量激活,部分成功 | §6.8 | | 9 | daily_claim_limit "每日" = 自然日 | §6.2 | | 10 | 导入线索不做,留 fog | map.md | | 11 | 销售可删自己过期失效线索(持有人·强确认) | 03 矩阵 | | 12 | 编辑范围 = 业务字段可改,状态/池/归属/时效/快照不可改 | 新增 §6.9 | **注**:⚠(C)(反馈是否可上传附件)已通过 grill #3 解决——反馈可上传附件,存 `lead_feedback.attachment_ids`。