# 测试用例：M10 Dashboard 与报表

| 项 | 值 |
|---|---|
| 对应 FSD | [M10-Dashboard与报表-FSD](M10-Dashboard与报表-FSD.md) |
| 对应 PRD | [requirements/M10](../requirements/M10-Dashboard与报表.md) |

> 用例按 **正常 / 边界 / 异常** 分类；KPI 口径/阈值/刷新周期/目标基线均"配置化，待业务"，用例只验证机制正确性，不锁定具体数值。

## 一、覆盖范围
客户状态看板、项目状态看板、Quota/工时报表、资源利用率/续约管道、可配置 Dashboard/Portfolio、通知/提醒/SLA、KPI 指标体系、管理层/高管视图、报告与草稿生成。

## 二、测试用例

### 2.1 客户状态看板（FR-RPT-01）

**正常**

| 编号 | 场景 | 前置条件 | 操作步骤 | 预期结果 | 优先级 |
|---|---|---|---|---|---|
| TC-N-101 | 看板可用且与源一致 | 客户数据完整 | 打开客户状态看板 | 健康分布/风险/生命周期/续约齐全；各值与 M4/M3/M5 源一致（不一致=0） | P0 |
| TC-N-102 | 下钻跳源 | 看板已渲染 | 点健康档→客户→客户 360° | 跳 M1 对应客户，数据一致 | P0 |
| TC-N-103 | 角色默认布局 | TAM 登录 | 打开默认看板 | 呈现"我的客户健康度/风险池/续约临近/满意度趋势" | P1 |

**边界**

| 编号 | 场景 | 前置条件 | 操作步骤 | 预期结果 | 优先级 |
|---|---|---|---|---|---|
| TC-B-101 | 续约临近阈值边界 | 客户续约剩余=阈值 | 打开看板 | 该客户进入"续约临近"（按配置阈值） | P1 |

**异常**

| 编号 | 场景 | 前置条件 | 操作步骤 | 预期结果 | 优先级 |
|---|---|---|---|---|---|
| TC-E-101 | 单聚合源宕机降级 | M4 不可用 | 打开看板 | 健康分布 Widget 降级占位，其它 Widget 正常，整页可用 | P0 |
| TC-E-102 | 数据域为空 | 无可见客户 | 打开看板 | "暂无可见客户"空态 | P1 |
| TC-E-103 | 外部账号访问 | 外部账号 | 打开看板 URL | 拒绝/不可见 | P0 |

### 2.2 项目状态看板（FR-RPT-02）

| 编号 | 场景 | 前置条件 | 操作步骤 | 预期结果 | 优先级 |
|---|---|---|---|---|---|
| TC-N-111 | 看板与源一致 | 有项目/里程碑/工时/投诉 | 打开项目状态看板 | 进度/里程碑/逾期/风险池齐全，与 M6/M7/M11 一致（不一致=0） | P0 |
| TC-N-112 | 风险池四类归池 | 制造延期/超工时/投诉/无进展各 1 | 打开风险池 | 四类各计 1，条目可下钻 M6 | P0 |
| TC-B-111 | 停滞阈值边界 | 项目停滞=阈值 | 打开看板 | 入"无进展"池（按配置阈值） | P1 |
| TC-E-111 | M6/M7 源不可用 | M6 宕机 | 打开看板 | 项目 Widget 降级占位，整页可用 | P0 |
| TC-E-112 | 统计与明细不符 | 聚合刷新中 | 打开看板 | "统计刷新中"，重取，不展示脏值 | P1 |

### 2.3 Quota/工时报表（FR-RPT-03）

| 编号 | 场景 | 前置条件 | 操作步骤 | 预期结果 | 优先级 |
|---|---|---|---|---|---|
| TC-N-121 | 三维度工时汇总 | 有工时数据 | 切换按人/项目/客户 | 各维度汇总与 M7 一致 | P0 |
| TC-N-122 | 超支排行 | 存在 used>total | 打开超支排行 | 超支项标红降序，值与 M7 一致 | P0 |
| TC-E-121 | 报表内改额度/工时 | 有汇总数据 | 尝试改 used | 拒绝"由 M7 汇总，不可手改" | P0 |
| TC-E-122 | 汇总延迟 | M7 汇总延迟 | 打开报表 | 展示最近快照 + 时间戳 | P1 |
| TC-E-123 | 无额度数据 | 无 PS_Service 合同 | 打开报表 | "暂无额度数据"空态 | P1 |

### 2.4 资源利用率与续约管道（FR-RPT-04）

| 编号 | 场景 | 前置条件 | 操作步骤 | 预期结果 | 优先级 |
|---|---|---|---|---|---|
| TC-N-131 | 利用率趋势 | 有工时数据 | 打开利用率报表 | 计费/可用工时趋势与 M7 一致，低于目标线标黄 | P1 |
| TC-N-132 | 续约漏斗 | 有续约管道数据 | 打开续约管道 | 漏斗各阶段客户/ARR 与 M5 一致 | P1 |
| TC-E-131 | 无续约窗口客户 | 窗口内无客户 | 打开管道 | "暂无续约管道数据"空态 | P2 |

### 2.5 可配置 Dashboard 与 Portfolio（FR-RPT-05）

| 编号 | 场景 | 前置条件 | 操作步骤 | 预期结果 | 优先级 |
|---|---|---|---|---|---|
| TC-N-141 | 拼装个人 Dashboard | 登录用户 | 新建→拖 Widget→选源/筛选/viz→保存 | 保存成功，重开布局一致 | P0 |
| TC-N-142 | 角色默认布局生效可验证 | Leader 权限 | 设团队默认布局 | 团队成员打开默认看板即为该布局（配置生效） | P0 |
| TC-N-143 | Portfolio 组合 | 有多个 Dashboard | 组合为 Portfolio | 跨对象组合视图可切换/并列 | P1 |
| TC-B-141 | viz 与 type 匹配边界 | 编辑 Widget | 选不匹配 viz | 阻断保存"不支持此可视化形式" | P1 |
| TC-E-141 | 选无权数据源 | 无某源权限 | Widget 选该源 | 该源不可选/拒绝保存 | P0 |
| TC-E-142 | 配置源有权但渲染越权 | 配了源但某客户越权 | 打开看板 | 渲染仍过 ABAC，越权数据不显示 | P0 |
| TC-E-143 | 无权设角色默认布局 | 非 Leader/Admin | 尝试设角色默认 | 拒绝，保留个人视图 | P1 |

### 2.6 通知/提醒/SLA（FR-RPT-06）

| 编号 | 场景 | 前置条件 | 操作步骤 | 预期结果 | 优先级 |
|---|---|---|---|---|---|
| TC-N-151 | 五类触发触达=100% | 配置五类规则 | 分别制造停滞/逾期/超支/缺报/续约临近 | 五类均按通道触达，触达率=100% | P0 |
| TC-N-152 | 频率/通道可配 | 规则配飞书+邮件 | 触发 | 按配置频率经两通道触达 | P0 |
| TC-B-151 | 静默期抑制 | 静默期内重复命中 | 再次命中同条件 | 抑制，不重复发送 | P0 |
| TC-B-152 | 未处理升级 | 配升级规则 | 到升级时限未处理 | 按配置升级触达 | P1 |
| TC-E-151 | 通道发送失败 | 飞书接口超时 | 触发 | 重试 + 告警可重放（NFR-06） | P0 |
| TC-E-152 | 阈值配置非法 | 编辑规则 | 填非法阈值 | 阻断保存 | P1 |
| TC-E-153 | 接收人无效 | 接收人已停用 | 触发 | 跳过该接收人 + 记录 | P1 |

### 2.7 KPI 指标体系（FR-RPT-07）

| 编号 | 场景 | 前置条件 | 操作步骤 | 预期结果 | 优先级 |
|---|---|---|---|---|---|
| TC-N-161 | KPI 展示齐全=100% | 各源数据完整 | 打开指标墙 | CS(NRR/GRR/流失/健康分布/采用/TTV/CSAT-NPS) + PS(利用率/realization/按时交付/backlog/售出vs消耗) 全部展示 | P0 |
| TC-N-162 | 口径引用一致 | 有 ARR/工时数据 | 查 NRR/利用率 | 值符合 ldd/M10 §2 口径 | P0 |
| TC-E-161 | 单 KPI 源不可用 | M11 不可用 | 打开指标墙 | CSAT/NPS 降级占位，其它齐全 | P0 |
| TC-E-162 | 口径未配置 | 某指标口径缺 | 打开指标墙 | 占位"待配置"，不算错值 | P1 |

### 2.8 管理层/高管视图（FR-RPT-08）

| 编号 | 场景 | 前置条件 | 操作步骤 | 预期结果 | 优先级 |
|---|---|---|---|---|---|
| TC-N-171 | 跨 Region 汇总 | CS Director 登录 | 打开高管视图 | 跨 Region 汇总 KPI + 趋势 + cohort 展示 | P1 |
| TC-B-171 | cohort 样本过小 | 某 cohort 样本少 | 查 cohort | "样本不足仅供参考"标注仍展示 | P2 |
| TC-E-171 | 无跨域权限 | Manager(单 Region) | 打开高管视图 | 仅本 Region 可见，跨域入口隐藏 | P0 |

### 2.9 报告与草稿生成（FR-RPT-09）

| 编号 | 场景 | 前置条件 | 操作步骤 | 预期结果 | 优先级 |
|---|---|---|---|---|---|
| TC-N-181 | 周月报定时生成=100% | 配置周期报告 | 到点触发 | 按计划生成，定时生成率=100%，订阅推送成功 | P0 |
| TC-N-182 | 草稿半自动生成 | 有 issue/risk/meeting/ticket | 生成 QBR 草稿 | 据结构化数据出草稿，供人工编辑 | P1 |
| TC-E-181 | 报告组装失败 | 数据源异常 | 触发生成 | 重试 + 告警（NFR-06） | P0 |
| TC-E-182 | 草稿未确认即推送 | 草稿待确认 | 尝试推送 | 阻断"需人工确认后才能推送" | P0 |
| TC-E-183 | 源数据不足 | 结构化数据缺 | 生成草稿 | 出占位草稿 + "仅供参考"标注 | P2 |

## 三、覆盖率目标
- 关键路径 100%（三类核心看板/报表、五类触达、KPI 齐全、定时报告生成）。
- 异常路径 ≥ 90%（所有 TC-E-*）。
- 硬约束 100% 有对应 TC 覆盖：看板与源一致（不一致=0，TC-N-101/111/121）、五类触达=100%（TC-N-151）、KPI 齐全=100%（TC-N-161）、周月报定时生成率=100%（TC-N-181）、看板按角色配置生效（TC-N-142）、汇总不可手改（TC-E-121）、单源宕机降级不阻断（TC-E-101/111/161）。
