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.

167 lines
10 KiB

4 weeks ago
# 待确认事项清单
**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,因为作废仅是状态枚举一值,本身不影响字段模型/公海池实体/转商机契约。
3 weeks ago
- ~~仅阻塞 03 收尾~~ **✅ 已全部拍板(2026-08-13)**,ticket 03 已置 resolved。
4 weeks ago
---
3 weeks ago
### 【产品-B】权限与数据可见性 PRD(ticket 05)— ✅ 已全部拍板(2026-08-13)
4 weeks ago
3 weeks ago
三机制模型(RBAC + ABAC + ReBAC)已与产品对齐并收口。详见 `.scratch/clue-module/权限与数据可见性-PRD.md`
4 weeks ago
3 weeks ago
| 编号 | 结论 |
|---|---|
| **[D]** | 线索不开 `resource_type=lead` 单条直接授权通道 |
| **[E]** | 池配置管理不发通行证,走功能权限 × 数据范围即可 |
| **[F]** | 线索关注不走行级授权;"我的关注" = `id IN 关注表` AND 部门天花板,可见性实时按当前部门算 |
| **PRD-1** | 触发动作:团队成员(商机/客户/项目,逐条)+ 公海池负责人/协作人(线索,池维度) |
| **PRD-2** | 权限边界:**只读**。通行证只放行 SELECT;写权由权限点 + service 层 owner/状态机判定 |
| **PRD-3** | 撤销即立即失效,授权行硬删(`DELETE FROM sys_row_grant WHERE ...`) |
4 weeks ago
3 weeks ago
**解除影响**:
- ticket 05 阻塞解除,可进入 Answer 撰写。
- ticket 04 行级授权部分阻塞解除。
- crm-auth 需新增 `sys_row_grant` 通用表(独立 ticket,超出 crm-lead 边界,需另开)。
4 weeks ago
---
## 二、待 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 |
3 weeks ago
| 线索状态机主体(7 态 + 双计时器 + 转商机终态 + 激活 F2) | 03 | 🔩 claimed(仅作废悬置,等产品-A) |
| 公海池 lead_pool 实体(主表+3 关联表)+ 归属 + 行级授权 | 04 | ✅ resolved(PRD-B 已拍板,行级授权部分解除阻塞) |
| 数据隔离落地(三机制 RBAC+ABAC+ReBAC) | 05 | 🔩 Answer 待撰写(决策已全部收口) |
4 weeks ago
| 线索 lead 实体全字段(含快照策略、时效字段、字典绑定) | 06 + Amendment | ✅ resolved |
| crm-preference 列偏好契约(1 表 2 方法) | 07 | ✅ resolved |
| crm-lead → 商机 outbound port 契约 | 08 | ✅ resolved |
---
3 weeks ago
## 四、优先级建议(更新后)
4 weeks ago
按对交付的阻塞程度:
3 weeks ago
1. **P0 - 产品-A(线索作废)**:现为唯一剩余外部阻塞项,仅阻塞 03 收尾,业务规则轻,可快速拍板。
2. **P1 - ticket 05 Answer 撰写**:决策已全部收口,可直接撰写。
3. **P2 - crm-auth `sys_row_grant` 能力**:已立项为 ticket 09(design状态,设计已定稿,待实现);超出 crm-lead 边界,不阻塞当前 spec。
4. **P3 - UX 修订清单**:不阻塞后端 spec,但影响前端/UX 迭代,并行推进。
4 weeks ago
---
3 weeks ago
## 五、本轮 grill 决策记录
### 2026-08-12 grill(12 项)
4 weeks ago
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`
3 weeks ago
### 2026-08-13 grill(权限模型,6 项)
| # | 决策 | 影响 |
|---|---|---|
| [D] | 线索不开单条直接授权通道;分配=改 owner,不发通行证 | PRD-1 收口,grant 表无 resource_type=lead |
| [E] | 池配置管理不发通行证;走功能权限×数据范围 | 通行证职责边界收窄 |
| [F] | 关注不走行级授权;可见性实时按部门天花板算,堵住"人事误操作+关注"漏洞 | PRD-1 最终收口 |
| PRD-1 | 触发动作清单定稿(产品确认):团队成员(商机/客户/项目)+ 池负责人/协作人(线索) | grant_source 枚举 |
| PRD-2 | 只读(产品确认);写权交权限点+service | grant_level 不需分档 |
| PRD-3 | 撤销即失效+硬删(产品确认) | 授权撤销实现方式 |