# CSP 需求回归评审发现（PRD / LDD / FSD 三层）

| 项 | 值 |
|---|---|
| 日期 | 2026-09-03 |
| 范围 | 13 模块 × 三层（PRD 全 13、LDD 全 13、FSD 覆盖 M1/M2/M6/M7/M8/M9/M10 七个） |
| 方法 | 5 组并行审计（按域分组）+ 跨模块接缝兜底；5 维度：清晰 / 可行 / 一致 / 完整 / 可验证 |
| 说明 | **本文仅记录发现，不含修改**；逐条处置在评审会后进行。严重度 高/中/低 |

## 评审结论（总览）
- **整体质量高**：三层结构完整、追溯清晰、决策留痕规范；关卡链、Check-in、缺席委托、持续型 retainer、健康度、审批引擎等复杂机制在既定架构（Go+Gin / TiDB / GORM / 本期无 AI / 飞书能力边界）下**基本可实现**。
- **问题不在"根本不可行"**，而集中在 6 类：① 跨层/跨模块**口径不一致**；② **数据字典（单一事实源）缺口**；③ **M2 权限基座未落地**；④ 部分 **P0 可行性依赖未固化的上游**；⑤ 若干 **验收不可测/不可达**；⑥ 本期"**无 AI**"边界在个别需求未划清。
- **无 FSD 的 6 模块**（M3/M4/M5/M11/M12/M13）"功能面可行性未验证"——属当前阶段应有状态，非缺陷。
- 大量"**待业务确认**"数值走总纲 §10 业务校准，**不阻塞架构**，本文不逐一罗列。

---

## A. 高优先主题（跨切，先解决）

### T1 · chargeable / draw-down 口径未在字段层收敛（🔴 用户点名）✅ 已修（2026-09-04）
> 定案（**2026-09-07 v3.9 再修正**）：`billable`（计入客户投入 = 项目/经营，内部除外）与 **Man-days 额度消耗（draw-down）** 两维正交；工时=平台级 Plugin、**挂载 3 类（项目/经营/内部）**。**统一模型：每个 PS 项目都绑定 Quota（source: Paid/Sponsored/Dedicated × amount: finite/unlimited）**；挂"项目"的工时一律 draw-down——finite 跟踪 remaining+预警，**unlimited（Dedicated）照记 used、不耗尽、不预警**（不再有"持续型无池不扣"的特例）。**Quota 按授权来源发放、项目↔Quota=M:N 限同客户**（见下"Quota 池粒度"定案）。"Free Quota"→"**Sponsored**"改名。已改 M1/M6/M7 + 数据字典 + 总纲。
- 散文层（M6 FR-PROJ-18 / FSD §4.7.5）已排除"持续型固定 retainer 只记不扣"；但**字段与规则层仍是"全扣"**：M7 FR-RES-02 与数据字典 `TimeEntry.chargeable`（"交付项目内均 chargeable、消耗 Man-days"）无差别，M7 LDD §3 / FSD §4.4「Quota.used=Σchargeable 工时」会把持续型也扣减；**总纲 §6 基准**（line 329「PS 交付须对应一个 Order」、320、144）同样是"全扣/每次出 Order"口径。**（注：本条为 2026-09-03 当时发现，留档；Order 实体已于总纲 v4.0 退场——立项授权单位改为 PS_Service 合同、立项 = 选客户 + 绑定其一份 `remaining>0` 的 Quota，§6 基准现为 Contract/Quota 口径。）**
- **建议**：引入 `draw_down(bool)` 或在汇总规则与 `chargeable` 定义显式 carve-out `mode=continuous 只记录不计入 Quota.used`；**同步修订总纲 §6 关键约束/DFD** 与 M6 D-P1/FR-PROJ-18 对齐。（涉及 M6·M7·数据字典·总纲）

### T2 · 数据字典（单一事实源）缺口（🔴）✅ 已修（2026-09-04）
> 已补：M4 SuccessPlan/Objective/PlaybookTask、EngagementActivity 字段；M3 LifecycleStage 停留/停滞阈值、OnboardingChecklist；M7 TimeEntry.activity_type/internal_category；M8 Review 内审记录；M1 Contract.amount/arr + ARRSnapshot（周期快照）；M5 LDD 补 NRR/GRR/流失口径。决策：D1 资源协调走 M9 Request(type=资源协调)、D2 各模块自建轻量 todo（不建平台级通用任务）、D3 周期 ARR 快照表。
缺失或断链，导致相关 FR 无数据承载、验收不可落地：
- **M4**：`SuccessPlan / Objective / PlaybookTask`（FR-ENG-05）、`ResourceCoordinationRequest`（FR-ENG-06/07）总纲 §6 ER 有、数据字典无。
- **M3**：Onboarding 任务/清单实体（FR-LC-02/04 完成度跟踪）、阶段"停留/停滞阈值"字段（FR-LC-01/04）缺。
- **M7**：`activity_type`（运维型/交付型，FR-RES-10 **P0** 分流字段）、内部类别（FR-RES-09）、"通用支持桶/内部非项目"归属模型缺；`project_id` 必填与"非项目工时"冲突。
- **M8**：内审/Review 记录实体（审核结果/意见/人/时间；"未审核发布阻断=100%"的验收依据）缺。
- **M10/M1/M5**：**ARR 历史/周期快照**缺（NRR/GRR/cohort 依赖时序 ARR，全平台只存当前 ARR）；Contract 无金额/ARR 字段。
- **建议**：进 FSD 前先在 LDD/数据字典补齐上述 schema，否则无稳定数据契约。

### T3 · M2 权限基座未落地（🔴）✅ 已修（2026-09-04）
> 角色枚举对齐总纲 §1.4（补 TAM_Leader/CS_Director、PS→PSE、去 RE 独立角色）；**PM=项目级负责人指派、Manager=Leader+Region、RE=PSE 工作模式**均不新增全局角色；建 **RBAC 动作字典（`模块:对象:操作`）+ 核心动作×角色基线矩阵**（M2 LDD §3b）；ABAC 范围补 Leader/Sales/SA/Ops/Admin；**权限即时生效=每请求服务端解析**（JWT 仅身份）；数据字典 Permission/DataScopePolicy 落框架；修 M1 手动入库角色三处不一致（统一 TAM/CSM/Leader/Admin，Manager→Leader）。
- **角色枚举缺 `PM` / `Manager`**：外部邀请"仅 TAM/PM"、ABAC"Manager 见本 Region"引用了未定义角色。
- **RBAC 动作字典 + 角色×动作完整映射缺失**（Permission 标"字段待详设"）；各模块 FSD 权限章节均引用 M2 却无依据。
- **ABAC 数据范围**只定义 4 类，Sales/SA/Ops 无默认范围。
- **权限即时生效 vs OIDC 短时 JWT**（FSD §4.5 vs Architecture §4.1）张力：需明确权限每请求服务端解析（JWT 仅承载身份）。
- **建议**：先**冻结动作字典框架 + 核心角色基线权限**（不宜全延后）；PM/Manager 映射到既有角色或纳入枚举 + Region 属性。

### T4 · P0 可行性依赖未固化的上游（🔴）✅ 已修（2026-09-07）
> **M11**：承载方式定为 **全自建独立问卷引擎**（数据全留 CSP、机密最强，闭合"自建vs嵌入"遗留）。**M4 健康度**：加"上线先用已就绪因子、缺失因子剔除并重归一化权重、不阻塞产出"的降级策略（PRD+LDD）。**M12 OQ-S3**：标为进详设阻塞项，分期先落 P0 三类 Incident/FRM/Bug 字段映射、SLA/告警随后。三个 🔴 全部收口。
- **M4 健康度（FR-ENG-03，P0）** 三类因子来源未落地：满意度←M11（⚪）、支持信号←M12（⚪，OQ-S3 未定）、用量←M1 UsageMetric（"字段待详设"）。
- **M11 问卷承载方式**（自建引擎 vs 嵌入式）未定，却是 P0；决定数据模型与可行性。
- **M12 五类外部源字段映射**（OQ-S3）全表"待确认"，无 FSD → "齐全度=100%""同步延迟"不可核验。
- **建议**：标注依赖并排期对齐；M4 先以可用因子上线；M11 先决策承载方式；M12 优先出集成 FSD/PoC（含逐源字段映射，先 Incident/FRM/Bug）。

### T5 · 遗留问题状态跨文档不同步（🟡）✅ 已修（2026-09-07）
> OQ-S4 角色级已关闭、字段级有默认最小可见/待业务非阻塞（M11+总纲一致）；OQ-C2 已关闭并厘清 **Customer.level（KA/SKA）≠ Cluster.tier（集群等级）**（M1 PRD/FSD/总纲一致）。
- **OQ-S4**：总纲 §9 列为"已关闭（角色级）"，M11 遗留仍把"字段级可见性"当未决——且角色级 ≠ 字段级，非同一问题。
- **OQ-C2**：M1 PRD"tier 待确认" / FSD"level 待确认" / 总纲"已关闭"，三处冲突；且把 `Customer.level`（战略分层）与 `Cluster.tier`（集群等级）混为一谈。
- **建议**：统一开闭状态与口径；厘清 level 与 tier 两个不同字段。

### T6 · 通知服务归属矛盾 + 重复建设（🟡）✅ 已修（2026-09-07）
> 统一为单一「平台通知服务」（共有服务：渠道/去重·抑制/逐级升级/回执·重试）；M9 与 M10 均为**调用方、共用同一服务、不重复建设**（修掉 M9"复用 M10"错述）。
- M9 §4.3.1"复用 M10/飞书"、M10"复用平台通知服务+M9 Automations"、Architecture §4"通知=独立平台共有服务"——三处不一致；M9 加急升级 与 M10 静默/升级/回执 两套并行。
- **建议**：明确**单一"平台通知服务"**，M9/M10 均作调用方；抑制/升级/回执只实现一次。

### T7 · 本期"无 AI"边界未划清（🟡）✅ 已修（2026-09-07）
> M10 FR-RPT-09：本期草稿 = 模板 + 结构化槽位填充（非 NL 摘要），AI 摘要归 OQ-S9 后期；补"字段覆盖率/100% 供人工确认、不自动发布"验收（PRD+FSD）。
- **M10 FR-RPT-09** Kickoff/RCA/QBR"据 meeting/ticket 生成草稿"本质是 AI 摘要，与 Architecture §11"本期 AI 不落地"冲突；且草稿部分无可验证验收。
- **建议**：本期草稿 = **模板 + 结构化槽位填充**（非摘要），AI 增强归 OQ-S9；补"字段覆盖率/供人工确认"类验收。（M11 信息采集已正确降级为手动，可作范式。）

### T8 · 若干验收不可测/不可达（🟡）✅ 已修（2026-09-07）
> 触达率=100% → **系统触发率=100% + 投递回执/重试**（M9/M10）；360° **8/8 固定清单**（技术画像/合同&Quota/项目/参与人&工时/健康度/满意度/支持聚合/干系人图谱；时间线/Wiki 单独验收）；入库 **6/6→5/5**（手动即第⑤路径）；KPI **NRR/GRR 按 M5 口径可回归**；**arr_input 从主数据派生/校验 + 覆写留痕核准**（防套利）。
- **"触达率=100%"**（M9 FR-APR-03 / M10 FR-RPT-06）与外部投递依赖矛盾 → 拆为"**系统触发率=100%**（可测）"+ 投递回执/重试。
- **"360° 聚合 8/8"** 三层集合不一致（正文 10 项 / PRD 验收 8 项 / FSD 8 区域，含项不同）→ 固化确定的 8 项清单。
- **"入库 6/6"** 重复计数（D-C2 第⑤条已是"手动指定"，验收再 +手动）→ 改 5/5 或拆"4 自动+手动"。
- **KPI 只测"展示齐全度=100%"（存在性）** 不校验数值正确性 → 至少锁定 NRR/GRR 分子分母客户集合口径。
- **arr_input 手工录入仅校验 >0**（M9 FR-APR-05）→ 从客户主数据派生或权威值校验，人工覆写留痕 + 更高层核准（防套利）。

---

## B. 分模块清单（其余中/低）

### M1 客户360
- 🟡 **签署主体不一致**：M1 `signed_by_contact_id→Contact`（无登录）vs 实际签署的 `Customer_External` User（M2）——Contact 与外部 User 映射未定义。
- 🟡 **M1↔M6 立项口径未同步**：M1 仍"每 Package 一个 Order 作准入"，未反映 v3.2 持续型 retainer 直接立项。✅ 已随 **Order 退场（总纲 v4.0）** 解决——立项授权单位统一为 PS_Service 合同、立项 = 选客户 + 绑定其一份 `remaining>0` 的 Quota（Dedicated `unlimited` 恒满足），不再出 Order。
- 🟡 入库（§4.1）与虚拟合同审批（§4.3）两泳道未串联：审批未过时"已入库无有效合同"中间态未定义。
- ⚪ 外部账号回收（项目结束/联系人离场停用）缺；force_sign"付费 PS"措辞歧义（应限 virtual PS_Service）。

### M2 权限（另见 T3）
- 🟡 手动入库授权角色 FSD 内三处不一致（TAM/PM/Admin vs TAM/CSM/Admin/Manager vs 非 TAM/PM/Admin）。

### M3 生命周期
- 🟡 FR-LC-06"announce 前禁对客暗示"含人的行为、系统不可强制 → 拆"系统可阻断步骤"（可测）与"人工守则"（不作系统验收）。
- 🟡 交接双签"复用 M8"，但 Signoff 为交付物签署模型，内部 TAM↔TAM 双签字段适配性待验证。
- ⚪ Onboarding 触发依赖 Nexus 轮询，Time-to-Onboard 基线含轮询延迟。

### M4 健康度/风险（另见 T2/T4）
- 🟡 **健康度反馈环**：健康度←风险←"低健康"，计算时序/防环/收敛未规定 → LDD 补因子计算时序与防循环。
- 🟡 **M4↔M7 经营工时挂载**：FR-ENG-01"记工时不耗额度"，但 TimeEntry 默认 chargeable/消耗；经营（无项目）工时的 chargeable=false 路径未建模。
- ⚪ 纳管提示接收方、"外部周报"生成归属（M4 vs M10）未明。

### M5 续约（另见 T2）
- 🔴/🟡 **NRR/GRR 口径断链**：FR-REN-06 验收"口径见设计"，M5 LDD 无定义；且缺金额/ARR 数据源。
- 🟡 Whitespace（FR-REN-07）需产品/模块目录主数据 + 已购映射，当前无 → 降级或先补产品主数据。
- ⚪ M4↔M5"续约临近"信号为反向输出，M5 LDD 未声明。

### M6 交付（另见 T1）
- ✅ **Quota 池粒度**（2026-09-07 定案）：**按授权来源发放**——一个 Paid 合同 / Sponsored / Dedicated = 一份 Quota；**项目↔Quota=M:N、限同一客户**（`ProjectQuota` 绑定，绑多份按 `seq` 依次扣）。取消"Contract 级共享池"表述；EAC/基线/结算按项目所绑 Quota 口径。已改 M1 D-C8/FR-CUST-08、数据字典（Quota+ProjectQuota）、M1 LDD、M7 req/LDD/FSD、FSD-M1、测试用例-M7。
- 🟡 **持续型关闭/结项路径缺**：§4.12 关闭以"全 Task Finished+报告签署"为前提（项目型），持续型无线性 Task，收尾/续期/关闭未规格化。
- 🟡 M6↔M8 内审签署角色不一致（M6：Senior/Manager/**PS Leader** vs M8：Senior/Manager/**Admin**）。
- 🟡 "额度结算"语义未定义（相对实时汇总额外做什么）。
- ⚪ EAC 的 ETC 取数口径未定；中间关卡签署归属 In Progress 未点明；OQ-P4 六 Package 预设链待定稿。

### M7 工时（另见 T1/T2）
- 🟡 `TimeEntry──▶{Task|Project}` 无法承载通用桶/内部归属；project_id 必填与"非项目工时可选"冲突。

### M8 交付物（另见 T2）
- ⚪ Deliverable 状态机缺"已签署/完成"终态（归档为可选，已签未归档无终态）。

### M9 审批（另见 T6/T8）
- 🟡 **"退回/补正"** 出现在角色/UI/规则，但状态机与 status 枚举（pending/approved/rejected/withdrawn）无此态 → 补状态与回流规则或移除。
- 🟡 **缺席委托 vs M6 coverage**：M9 `Delegation.delegate_id`=任意用户 vs M6 `coverage.delegate`=secondary；是否同一实体、约束差异未对齐。
- 🟡 **condition DSL 未定义**（审批分支/Automation 共用）语法/可引用字段/求值安全边界，却承载"路由正确率=100%/误触发=0"。
- ⚪ Automation 异步环检测口径；缺席期内代理人临时失效兜底。

### M10 报表（另见 T2/T7/T8）
- ⚪ "缺报"未映射具体源（M7 工时缺报 vs M6 周期报告缺失）；采用率/TTV"关键能力激活"无权威定义。

### M11 满意度（另见 T4/T5）
- 🟡 **应答归属**：无鉴权外链问卷如何绑定客户/周期未定（缺 token/受访人机制）→ 否则"按客户/周期归档=100%"不可达。
- 🟡 归档率"=100%"分母歧义（已回收 100% 入库 vs 100% 回收率，后者不可控）。
- 🟡 M11↔M4 满意度归一化口径缺（NPS −100~100 与 CSAT 0~100% 如何归一为健康度因子；M12 有此声明、M11 缺）。

### M12 支持聚合（另见 T4）
- 🟡 **GitHub 定位冲突**：Bug 源"Jira/GitHub"（FR-SUP-04 **P0**）vs INT-07"GitHub 可选" → 明确本期是否统一走 Jira。
- 🟡 SLA"达成率"计算归属（外部已算读入 vs CSP 计算）与"集成聚合不自建"张力。
- 🟡 代客建单目标系统歧义（tidb.support vs Jira issue）+ 回链键（JSM Org ID）。
- ⚪ "唯一写路径"措辞易读成系统级（应限 M12/Jira 域，INT-10 Ops 另有写）；值班/排班本期是否纳入待定。

### M13 资源中心（另见 T8）
- 🟡 引导式对接"覆盖率=100%"依赖未盘点的外部接口 → 改"可对接 100% 引导、不可对接 100% 给指引"，先盘点对接能力。
- ⚪ 首批 Training Voucher"redirect→公司内部 Agent"中"Agent"语义（应澄清为内部申请系统/人工，非 AI Agent）。

---

## C. 结构性说明（非缺陷）
- **无 FSD 的 6 模块**（M3/M4/M5/M11/M12/M13）"功能面可行性未验证"是阶段性正常；其中 **M12（集成风险最高）、M4（跨模块耦合最深）、M11（承载方式未定）** 优先。
- **待业务共创**项（M3 阶段条件、M5 续约流程/CSM 职责、各阈值数值）走 §10 业务校准，不阻塞架构。

## D. 建议处置顺序
1. **先收敛确定性矛盾**（低成本、消歧义）：T1 chargeable/draw-down、T5 OQ 状态/level-tier、T8 计数与集合（6/6、8/8）、各模块层内不一致（手动入库角色、内审签署角色）。
2. **补数据字典缺口 T2** + **冻结 M2 权限基座框架 T3**（解阻塞）。
3. **划清可行性/范围边界**：T4（P0 依赖排期）、T7（无 AI 边界）、T6（通知服务归属）。
4. **逐模块中/低项**（B 节）在各自 FSD/详设阶段收口。
</content>
