# 测试用例：M7 工时与资源管理

| 项 | 值 |
|---|---|
| 对应 FSD | [M7-工时与资源管理-FSD](M7-工时与资源管理-FSD.md) |
| 对应 PRD | [requirements/M7](../requirements/M7-工时与资源管理.md) |

> 用例按 **正常 / 边界 / 异常** 分类；具体阈值/周期/基准以业务确认值为准（标"待业务"处）。

## 一、覆盖范围
活动化工时录入与周填报、工时修改与超期审批、活动类型分流与立项引导、工时汇总与额度消耗、超支软预警、内部非项目时间、产能/利用率/Workload、项目 burn、技能画像与派单、需求预测。

## 二、测试用例

### 2.1 活动化工时录入与周填报

**正常**

| 编号 | 场景 | 前置条件 | 操作步骤 | 预期结果 | 优先级 |
|---|---|---|---|---|---|
| TC-N-001 | 挂 Task 录入 | 有交付项目及任务 | 选 Task→填 4h+内容→提交 | 记录成功；Project 自动带出；起算 24h 窗口 | P0 |
| TC-N-002 | 直挂 Project 录入 | 有交付项目无细分任务 | 直挂 Project→填工时→提交 | 记录成功（D-P7 两方式均支持） | P0 |
| TC-N-003 | 周填报补录 | 本周有活动 | 周网格单元格补录多条 | 逐条落库；顶部合计更新 | P1 |

**边界**

| 编号 | 场景 | 前置条件 | 操作步骤 | 预期结果 | 优先级 |
|---|---|---|---|---|---|
| TC-B-001 | 0.5h 步长下限 | — | 填 0.5h | 通过（0.5 的整数倍） | P0 |
| TC-B-002 | 缺报临界 | 应报标准（待业务） | 报满至标准值 | 不触发缺报提醒 | P1 |

**异常**

| 编号 | 场景 | 前置条件 | 操作步骤 | 预期结果 | 优先级 |
|---|---|---|---|---|---|
| TC-E-001 | 非 0.5h 倍数 | — | 填 0.7h | 提示"须为 0.5 小时整数倍"，阻断 | P0 |
| TC-E-002 | 未选归属 | — | 不选项目直接提交 | 提示"请先选择项目/任务"，阻断 | P0 |
| TC-E-003 | 未来日期 | — | 活动日期填明天 | 提示"不能晚于今天"，阻断 | P1 |
| TC-E-004 | 缺报到期 | 低于应报标准 | 到周截止 | 收到缺报提醒（提醒率=100%），不阻断 | P0 |

### 2.2 工时修改与超期审批（D-P8）

| 编号 | 场景 | 前置条件 | 操作步骤 | 预期结果 | 优先级 |
|---|---|---|---|---|---|
| TC-N-011 | 24h 内自助改 | 提交<24h | 直接编辑工时 | 修改成功；记审计 | P0 |
| TC-B-011 | 恰好 24h 边界 | now=editable_until | 尝试自助改 | 仍属窗口内，自助改成功 | P1 |
| TC-N-012 | 超期改走审批批准 | 提交>24h | 提交修改 Request→PM 批准 | 更新+留痕；审计完整 | P0 |
| TC-E-011 | 超 24h 直接改 | 提交>24h | 点编辑 | 提示"需提交 PM 审批"，转审批表单 | P0 |
| TC-E-012 | 超期改未填事由 | 超期 | 提交修改无事由 | 提示"请填写修改事由"，阻断 | P0 |
| TC-E-013 | 审批驳回 | 超期改待审批 | PM 驳回 | 工时维持原值+通知 | P0 |
| TC-E-014 | 审计缺失校验 | 任一次修改 | 查审计 | 变更前后值全留痕，审计缺失数=0 | P0 |

### 2.3 活动类型分流与立项引导（FR-RES-10）

| 编号 | 场景 | 前置条件 | 操作步骤 | 预期结果 | 优先级 |
|---|---|---|---|---|---|
| TC-N-021 | 运维型挂通用桶 | retainer 客户 | 选运维型→挂通用支持桶→提交 | 允许，记录成功 | P0 |
| TC-N-022 | 交付型挂具体项目 | 有 Service Package 项目 | 选交付型→挂具体项目→提交 | 允许，记录成功 | P0 |
| TC-E-021 | retainer 下未选类型 | Dedicated 客户 | 不选活动类型提交 | 提示"请选择活动类型"，阻断 | P0 |
| TC-E-022 | 交付型未挂项目 | 无关联项目 | 选交付型不挂项目 | 引导"去发起 Engagement Request 立项"（M6） | P0 |
| TC-E-023 | 通用桶异常告警 | 通用桶占比/关键词命中 | 触发 Automations | 告警 PS Leader 复核（触达率=100%） | P1 |

### 2.4 工时汇总与额度消耗（FR-RES-02）

| 编号 | 场景 | 前置条件 | 操作步骤 | 预期结果 | 优先级 |
|---|---|---|---|---|---|
| TC-N-031 | 项目工时消耗 Man-days | 挂载=项目 工时 8h | 提交并汇总 | 换算 1 人天；回填其绑定 Man-days used（付费/Sponsored 同，消耗率=100%） | P0 |
| TC-B-031 | 换算默认值 | 默认 8h/人天 | 汇总 4h | =0.5 人天（默认可配） | P1 |
| TC-E-031 | 手改消耗 | 有消耗 | 尝试改 used/actual_mandays | 拒绝"由工时汇总，不可手改" | P0 |
| TC-E-032 | 持续型 Dedicated unlimited 池 draw-down | mode=continuous、Quota source=Dedicated/amount=unlimited | 记工时 | draw-down 照记 used、remaining=∞、不预警超支（M6 FR-PROJ-18） | P0 |

### 2.5 超支软预警（FR-RES-03）

| 编号 | 场景 | 前置条件 | 操作步骤 | 预期结果 | 优先级 |
|---|---|---|---|---|---|
| TC-N-041 | 接近额度分级预警 | used 命中接近阈值（待业务） | 汇总触发 | 橙色预警+标记；触达 PM/Sales/TAM（率=100%） | P0 |
| TC-N-042 | 超支后仍可记工时 | used>total | 超支后继续录入 | 录入成功（阻断率=0，软预警不阻断） | P0 |
| TC-B-041 | 恰好等于额度 | used=total | 汇总 | 边界：标记临界，不误报超支 | P1 |
| TC-E-041 | 触达通道失败 | 飞书超时 | 触发预警 | 重试+告警（NFR-06），不丢预警 | P1 |

### 2.6 内部时间 / 利用率 / Workload（FR-RES-04/08/09）

| 编号 | 场景 | 前置条件 | 操作步骤 | 预期结果 | 优先级 |
|---|---|---|---|---|---|
| TC-N-051 | 内部时间不耗额度 | 内部/非项目 | 录学习 4h | billable=false；不消耗额度（额度漂移=0） | P0 |
| TC-N-052 | 经营工时计投入不耗额度 | TAM 经营活动 | 记经营工时 | 记工时且 billable=true（计客户投入）、不消耗 Man-days | P0 |
| TC-N-053 | 利用率口径 | 有 billable+non-billable | 打开利用率 | =billable/产能；non-billable 计入分母（率=100%） | P0 |
| TC-B-051 | 产能基准默认 | 未配基准 | 计算利用率 | 用默认（如 5 人天/周，待业务）+提示 | P1 |
| TC-N-054 | Workload 负载 | 有在办工时 | 打开 Workload | 按 PSE 汇总在办负载可见 | P1 |
| TC-E-051 | 内部时间误挂额度 | 内部类别 | 尝试标 billable | 强制 false、不 draw-down | P0 |

### 2.7 burn / 派单 / 预测（FR-RES-05/06/07）

| 编号 | 场景 | 前置条件 | 操作步骤 | 预期结果 | 优先级 |
|---|---|---|---|---|---|
| TC-N-061 | burn 计划 vs 实际 | 有估算+实际人天 | 打开 burn | 燃尽曲线可见；数据可被 M6/M10 消费 | P1 |
| TC-E-061 | 无估算人天 | 缺 est_mandays | 打开 burn | 降级为实际累计 | P1 |
| TC-N-062 | 按技能派单 | 已确认技能画像 | 按 Service Package 技能匹配 | 匹配候选人+负载呈现 | P1 |
| TC-E-062 | 自评未确认 | 仅自评 | 派单参考 | 标注未确认，仍可参考 | P1 |
| TC-N-063 | 供需预测 | pipeline+backlog 可用 | 打开预测 | 需求 vs 产能缺口呈现 | P1 |
| TC-E-063 | pipeline 不可用 | Sales 源缺失 | 打开预测 | 降级 backlog-only + 提示 | P1 |

## 三、覆盖率目标
- 关键路径 100%（工时录入 / 超期审批 / 类型分流 / 额度消耗 / 超支预警）。
- 异常路径 ≥ 90%（所有 TC-E-*）。
- 硬约束 100% 有对应 TC 覆盖：0.5h 步长、消耗率=100%、内部/经营耗额度=0（额度漂移=0）、超支阻断率=0、超 24h 改 100% 走审批且审计缺失=0、non-billable 计入利用率分母=100%。
