# 测试用例：M8 交付物与签署

| 项 | 值 |
|---|---|
| 对应 FSD | [M8-交付物与签署-FSD](M8-交付物与签署-FSD.md) |
| 对应 PRD | [requirements/M8](../requirements/M8-交付物与签署.md) |

> 用例按 **正常 / 边界 / 异常** 分类；第三方电子签名选型等标"待详设"处以详设确认值为准。

## 一、覆盖范围
模板与变量填充、版本控制与留痕、内审流（对客发布卡点）、客户签署（平台内轻量 / 第三方电子签名）、归档与知识回流、在线批注 Proofing。

## 二、测试用例

### 2.1 交付物模板库与变量填充

**正常**

| 编号 | 场景 | 前置条件 | 操作步骤 | 预期结果 | 优先级 |
|---|---|---|---|---|---|
| TC-N-001 | 模板变量自动填充 | 客户/项目上下文完整 | 选模板→生成 | 必填变量全部自动填充（成功率=100%），生成草稿 | P0 |
| TC-N-002 | 默认模板清单可选 | 清单已配置 | 打开模板选择器 | 列出 Kickoff Deck/调研/方案/上线报告/验收单/复盘 | P1 |
| TC-N-003 | 维护模板清单 | Manager/Admin | 增/停用模板 | 生效；停用不影响历史交付物 | P1 |

**边界**

| 编号 | 场景 | 前置条件 | 操作步骤 | 预期结果 | 优先级 |
|---|---|---|---|---|---|
| TC-B-001 | 部分变量可自动填充 | 上下文缺 1 非必填变量 | 生成 | 已命中项自动填、缺项可留空，正常生成 | P1 |

**异常**

| 编号 | 场景 | 前置条件 | 操作步骤 | 预期结果 | 优先级 |
|---|---|---|---|---|---|
| TC-E-001 | 必填变量未命中 | 上下文缺必填变量 | 生成 | 提示补填、阻断生成 | P0 |
| TC-E-002 | 使用已停用模板 | 模板已停用 | 选该模板 | 提示已停用、阻断 | P1 |
| TC-E-003 | 无关联客户/项目 | 未关联 | 创建 | 提示先关联、阻断 | P1 |

### 2.2 版本控制与留痕

**正常**

| 编号 | 场景 | 前置条件 | 操作步骤 | 预期结果 | 优先级 |
|---|---|---|---|---|---|
| TC-N-011 | 每次上传生成新版本 | 已有 v1 | 上传+填变更摘要 | 生成 v2；新版本率=100% | P0 |
| TC-N-012 | 四要素留痕齐全 | 上传新版本 | 查看版本列表 | 版本号/上传人/时间/变更摘要齐全率=100%、可追溯 | P0 |

**边界**

| 编号 | 场景 | 前置条件 | 操作步骤 | 预期结果 | 优先级 |
|---|---|---|---|---|---|
| TC-B-011 | 同内容再次上传 | 与上版内容相同 | 再上传 | 仍生成新版本（file_hash 记录），留痕独立 | P1 |

**异常**

| 编号 | 场景 | 前置条件 | 操作步骤 | 预期结果 | 优先级 |
|---|---|---|---|---|---|
| TC-E-011 | 变更摘要为空 | 上传新版本 | 摘要留空提交 | 阻断，提示填写变更摘要 | P0 |
| TC-E-012 | 覆盖已签署版本 | 某版本已签署 | 尝试覆盖 | 阻断；提示上传为新版本（签署版本不可变） | P0 |

### 2.3 内审流（对客发布卡点）

**正常**

| 编号 | 场景 | 前置条件 | 操作步骤 | 预期结果 | 优先级 |
|---|---|---|---|---|---|
| TC-N-021 | 审核通过进入签署 | 提交内审 | Senior 审核通过 | 状态→待客户签署，可发起签署 | P0 |
| TC-N-022 | 驳回回流草稿 | 提交内审 | Manager 驳回+意见 | 回草稿态、带审核意见，可修订重提 | P0 |

**边界**

| 编号 | 场景 | 前置条件 | 操作步骤 | 预期结果 | 优先级 |
|---|---|---|---|---|---|
| TC-B-021 | 恰好一位 Senior 审核 | 审核流配 1 人 | 审核通过 | 满足 ≥1 Senior/Manager，通过 | P1 |

**异常**

| 编号 | 场景 | 前置条件 | 操作步骤 | 预期结果 | 优先级 |
|---|---|---|---|---|---|
| TC-E-021 | 未审核即对客发布 | 交付物未审核 | 尝试发布/发起签署 | 阻断（发布阻断率=100%） | P0 |
| TC-E-022 | 驳回未填意见 | 审核中 | 驳回不填意见 | 阻断驳回 | P1 |
| TC-E-023 | 审核人权限不足 | 非 Senior/Manager | 尝试审核 | 拒绝 + 审计 | P1 |

### 2.4 客户签署

**正常**

| 编号 | 场景 | 前置条件 | 操作步骤 | 预期结果 | 优先级 |
|---|---|---|---|---|---|
| TC-N-031 | 平台内轻量签署 | 审核通过、method=轻量 | 外部账号预览→确认签署 | 三要素（版本/时间/签署方）齐全率=100%、可追溯 | P0 |
| TC-N-032 | 第三方电子签名 | 审核通过、method=第三方 | 跳转签署→回调 | 回写签署结果+凭证，三要素留痕 | P1 |
| TC-N-033 | 满足 M6/M1 签署卡点 | M6 报告/M1 合同调用 | 复用签署能力签署 | 满足 M6 D-P9、M1 D-C12，回写签署结果 | P0 |

**边界**

| 编号 | 场景 | 前置条件 | 操作步骤 | 预期结果 | 优先级 |
|---|---|---|---|---|---|
| TC-B-031 | 签署方式切换 | 重要交付物 | Manager 配为第三方 | 按配置走第三方分支 | P1 |

**异常**

| 编号 | 场景 | 前置条件 | 操作步骤 | 预期结果 | 优先级 |
|---|---|---|---|---|---|
| TC-E-031 | 未审核即发起签署 | 未审核通过 | 发起签署 | 阻断 | P0 |
| TC-E-032 | 外部账号签他人交付物 | 外部账号 A | 签客户 B 交付物 | 拒绝 + 审计 | P0 |
| TC-E-033 | 第三方回调失败 | 第三方服务异常 | 完成签署 | 重试+告警（NFR-06），状态挂起 | P1 |
| TC-E-034 | 签署版本已被替换 | 已上传更新版本 | 签旧版本 | 阻断，指向最新审核通过版本 | P1 |

### 2.5 归档与知识回流

| 编号 | 场景 | 前置条件 | 操作步骤 | 预期结果 | 优先级 |
|---|---|---|---|---|---|
| TC-N-041 | 可复用归档到 Wiki | 标记可复用 | 归档 | 100% 归档到飞书 Wiki，回写 wiki_link | P0 |
| TC-N-042 | 归档后可检索命中 | 已归档 | 关键词检索 | 命中该交付物、可再利用 | P0 |
| TC-E-041 | 归档到 Wiki 失败 | 飞书异常 | 归档 | 重试+告警（NFR-06） | P1 |
| TC-E-042 | 无 Wiki 写权限 | 未授权集成 | 归档 | 提示配置授权、阻断 | P1 |

### 2.6 在线批注 Proofing

| 编号 | 场景 | 前置条件 | 操作步骤 | 预期结果 | 优先级 |
|---|---|---|---|---|---|
| TC-N-051 | 批注绑定版本 | 打开某版本 | 添加批注→解决 | 批注绑定该版本、状态可流转，可追溯 | P1 |
| TC-B-051 | 新版本后旧批注保留 | v1 有批注 | 上传 v2 | v1 批注保留在原版本 | P1 |
| TC-E-051 | 批注内容为空 | Proofing | 空批注提交 | 阻断 | P2 |
| TC-E-052 | 外部账号越权批注 | 外部账号 | 批注他人交付物 | 拒绝 + 审计 | P1 |

## 三、覆盖率目标
- 关键路径 100%（模板变量填充 / 版本留痕 / 内审卡点 / 客户签署 / 归档检索）。
- 异常路径 ≥ 90%（所有 TC-E-*）。
- 硬约束 100% 有对应 TC 覆盖：变量填充成功率=100%、每次上传新版本率=100%、四要素留痕齐全=100%、未审核对客发布阻断=100%、签署三要素齐全=100%、可复用归档可检索=100%。
