# PM-Agent v1.1.0 E2E测试用例集

**版本**: v1.0
**创建日期**: 2026-02-19
**测试对象**: requirements_pm_agent_v1.1.0_DRAFT.md
**覆盖率目标**: 100%

---

## 一、用例概览

| 功能ID | 功能名称 | 测试用例数 | 状态 |
|--------|----------|-----------|------|
| F-001 | 多模态输入 | 5 | 已实现 |
| F-002 | 统一输入处理 | 2 | 已实现 |
| F-003 | 客户识别 | 3 | 已实现 |
| F-004 | 项目匹配 | 3 | 已实现 |
| F-005 | 自动路由 | 3 | 部分实现 |
| F-006 | oc-collab整合 | 4 | 已实现 |
| F-007 | 开发文档汇总 | 2 | 已实现 |
| F-008 | 问题自动分类 | 3 | 部分实现 |
| F-009 | 自动生成BUG报告 | 3 | 已实现 |
| F-010 | 自动生成Proposal | 3 | 已实现 |
| F-011 | 动态状态反馈 | 2 | 未实现 |
| F-012 | 处理结果显示 | 8 | 已实现 |
| F-013 | 材料去重 | 3 | 已实现 |
| F-014 | 项目模板转换 | 5 | 已实现 |
| **合计** | | **49** | |

---

## 二、测试用例

### 2.1 F-001: 多模态输入 + 预处理

#### TC-F001-01: 图片上传

**测试步骤**：
1. 进入材料上传页面
2. 选择图片文件（如test.png）
3. 点击上传按钮
4. 等待上传完成

**预期结果**：
- 上传成功，材料出现在列表中
- 文件类型显示为"图片"

---

#### TC-F001-02: 音频上传

**测试步骤**：
1. 进入材料上传页面
2. 选择音频文件（如test.m4a）
3. 点击上传按钮
4. 等待上传完成

**预期结果**：
- 上传成功，材料出现在列表中
- 文件类型显示为"音频"

---

#### TC-F001-03: 文档上传

**测试步骤**：
1. 进入材料上传页面
2. 选择文档文件（如test.pdf）
3. 点击上传按钮
4. 等待上传完成

**预期结果**：
- 上传成功，材料出现在列表中
- 文件类型显示为"文档"

---

#### TC-F001-04: 语音转写功能

**测试步骤**：
1. 上传音频文件
2. 点击"处理"按钮
3. 等待转写完成

**预期结果**：
- 转写完成后，rawContent字段有内容
- 材料状态变为"已完成"

---

#### TC-F001-05: 图片OCR功能

**测试步骤**：
1. 上传图片文件
2. 点击"处理"按钮
3. 等待OCR完成

**预期结果**：
- OCR完成后，rawContent字段有提取的文字
- 材料状态变为"已完成"

---

### 2.2 F-002: 统一输入处理

#### TC-F002-01: 文件类型自动检测

**测试步骤**：
1. 分别上传图片、音频、文档文件
2. 查看文件类型显示

**预期结果**：
- 系统自动识别文件类型
- 正确显示：图片/音频/文档

---

#### TC-F002-02: 处理状态显示

**测试步骤**：
1. 上传任意文件
2. 查看材料状态

**预期结果**：
- 初始状态为"待处理"
- 处理后状态变为"已完成"

---

### 2.3 F-003: 客户识别

#### TC-F003-01: 客户列表查看

**测试步骤**：
1. 进入客户管理页面
2. 查看客户列表

**预期结果**：
- 显示所有客户
- 显示客户名称、关键词、状态

---

#### TC-F003-02: 创建客户

**测试步骤**：
1. 进入客户管理页面
2. 点击"新建客户"按钮
3. 填写客户信息（名称、关键词）
4. 保存

**预期结果**：
- 客户创建成功
- 出现在客户列表中

---

#### TC-F003-03: 客户关键词匹配

**测试步骤**：
1. 创建带有关键词的客户（如：金融法院，关键词：法院、审判）
2. 上传相关材料
3. 查看材料是否自动匹配到客户

**预期结果**：
- 材料自动识别并关联到对应客户

---

### 2.4 F-004: 项目匹配

#### TC-F004-01: 项目列表查看

**测试步骤**：
1. 进入项目管理页面
2. 查看项目列表

**预期结果**：
- 显示所有项目
- 显示项目名称、客户、状态、进度

---

#### TC-F004-02: 创建项目

**测试步骤**：
1. 进入项目管理页面
2. 点击"新建项目"按钮
3. 填写项目信息（名称、关键词、客户）
4. 保存

**预期结果**：
- 项目创建成功
- 出现在项目列表中

---

#### TC-F004-03: 项目关键词匹配

**测试步骤**：
1. 创建带有关键词的项目（如：数字法院，关键词：卷宗、案件）
2. 上传相关材料
3. 查看材料是否自动匹配到项目

**预期结果**：
- 材料自动识别并关联到对应项目

---

### 2.5 F-005: 自动路由

#### TC-F005-01: 路由目标显示

**测试步骤**：
1. 上传材料并匹配项目和客户
2. 查看材料详情

**预期结果**：
- 显示路由目标（客户+项目）

---

#### TC-F005-02: 路由历史记录

**测试步骤**：
1. 查看材料详情
2. 查找路由历史

**预期结果**：
- 显示路由历史记录

---

#### TC-F005-03: 路由到项目目录

**测试步骤**：
1. 确认材料已路由到项目
2. 检查项目目录下是否有材料文件

**预期结果**：
- 材料文件保存在对应项目目录下

---

### 2.6 F-006: oc-collab整合

#### TC-F006-01: Git仓库配置

**测试步骤**：
1. 进入项目编辑页面
2. 配置项目Git仓库路径
3. 保存

**预期结果**：
- Git仓库路径保存成功

---

#### TC-F006-02: BUG报告推送到Git

**测试步骤**：
1. 选择一个材料
2. 点击"生成BUG报告"按钮
3. 填写BUG信息
4. 提交

**预期结果**：
- BUG报告创建成功
- saved_to_git为true
- 文件写入到Git仓库的docs/00-memos/目录

---

#### TC-F006-03: Proposal推送到Git

**测试步骤**：
1. 选择一个材料
2. 点击"生成Proposal"按钮
3. 填写Proposal信息
4. 提交

**预期结果**：
- Proposal创建成功
- saved_to_git为true
- 文件写入到Git仓库的docs/04-proposals/目录

---

#### TC-F006-04: Git提交记录

**测试步骤**：
1. 执行BUG或Proposal生成
2. 查看Git仓库的提交记录

**预期结果**：
- Git提交成功
- 提交信息包含BUG/Proposal ID

---

### 2.7 F-007: 开发文档汇总

#### TC-F007-01: 拉取项目文档

**测试步骤**：
1. 进入项目文档页面
2. 选择一个项目

**预期结果**：
- 显示项目中的文档列表

---

#### TC-F007-02: 文档预览

**测试步骤**：
1. 在文档列表中点击某个文档
2. 查看文档内容

**预期结果**：
- 可以预览文档内容

---

### 2.8 F-008: 问题自动分类

#### TC-F008-01: 自动识别问题类型

**测试步骤**：
1. 上传材料
2. 处理材料
3. 查看问题类型

**预期结果**：
- 系统自动识别问题类型为"BUG"或"需求"
- 显示对应的issue_type

---

#### TC-F008-02: 问题类型显示

**测试步骤**：
1. 查看材料列表
2. 查找问题类型标签

**预期结果**：
- 显示[BUG]或[需求]标签

---

#### TC-F008-03: 人工确认分类（部分实现）

**测试步骤**：
1. 进入材料详情页面
2. 找到问题分类部分
3. 尝试修改分类

**预期结果**：
- 可以修改问题类型（如果UI支持）

---

### 2.9 F-009: 自动生成BUG报告

#### TC-F009-01: 生成BUG报告

**测试步骤**：
1. 选择已处理的材料
2. 点击"生成BUG报告"按钮
3. 填写BUG标题和描述
4. 提交

**预期结果**：
- BUG报告生成成功
- 返回bug_id（如BUG-xxx）

---

#### TC-F009-02: BUG报告内容验证

**测试步骤**：
1. 生成BUG报告后
2. 查看Git仓库中的BUG文件

**预期结果**：
- BUG报告包含：标题、描述、原始材料内容

---

#### TC-F009-03: 问题跟踪显示BUG

**测试步骤**：
1. 进入问题跟踪页面
2. 查看BUG列表

**预期结果**：
- 显示已生成的BUG报告
- 显示BUG状态

---

### 2.10 F-010: 自动生成Proposal

#### TC-F010-01: 生成Proposal

**测试步骤**：
1. 选择已处理的材料
2. 点击"生成Proposal"按钮
3. 填写Proposal标题和描述
4. 提交

**预期结果**：
- Proposal生成成功
- 返回proposal_id（如REQ-xxx）

---

#### TC-F010-02: Proposal内容验证

**测试步骤**：
1. 生成Proposal后
2. 查看Git仓库中的Proposal文件

**预期结果**：
- Proposal包含：标题、描述、原始材料内容

---

#### TC-F010-03: 问题跟踪显示Proposal

**测试步骤**：
1. 进入问题跟踪页面
2. 查看需求列表

**预期结果**：
- 显示已生成的Proposal
- 显示Proposal状态

---

### 2.11 F-011: 动态状态反馈

*注：此功能依赖oc-collab v2.3.3，v1.1未实现*

#### TC-F011-01: TODO状态同步（预期未实现）

**测试步骤**：
1. 检查问题跟踪页面
2. 查看TODO状态

**预期结果**：
- 显示TODO列表（目前为空或本地数据）

---

#### TC-F011-02: 状态变更通知（预期未实现）

**测试步骤**：
1. 在oc-collab中修改TODO状态
2. 查看PM-Agent是否收到通知

**预期结果**：
- 暂未实现（v1.2开发）

---

### 2.12 F-012: 处理结果显示

#### TC-F012-01: 首页材料列表显示

**测试步骤**：
1. 访问首页
2. 查看材料列表

**预期结果**：
- 显示材料文件名
- 显示文件类型图标

---

#### TC-F012-02: 问题类型标签显示

**测试步骤**：
1. 首页查看材料
2. 查找问题类型标签

**预期结果**：
- 显示[BUG]或[需求]标签

---

#### TC-F012-03: 项目名称显示

**测试步骤**：
1. 首页查看材料
2. 查找项目名称

**预期结果**：
- 显示材料关联的项目名称

---

#### TC-F012-04: 反馈编号显示

**测试步骤**：
1. 首页查看材料
2. 查找反馈编号

**预期结果**：
- 显示BUG编号（如BUG-xxx）或需求编号（如REQ-xxx）

---

#### TC-F012-05: 处理状态显示

**测试步骤**：
1. 首页查看材料
2. 查找处理状态

**预期结果**：
- 显示状态：待处理/处理中/已完成

---

#### TC-F012-06: 转写内容预览显示

**测试步骤**：
1. 首页查看材料
2. 查找转写内容预览

**预期结果**：
- 显示转写/OCR内容预览（前100字）

---

#### TC-F012-07: 点击查看详情

**测试步骤**：
1. 首页点击某个材料
2. 进入材料详情页

**预期结果**：
- 跳转到材料详情页
- 显示完整信息

---

#### TC-F012-08: 详情页显示完整转写

**测试步骤**：
1. 进入材料详情页
2. 查看"原始材料"或"转写/OCR结果"卡片

**预期结果**：
- 显示完整的转写/OCR内容

---

### 2.13 F-013: 材料去重

#### TC-F013-01: 重复文件检测

**测试步骤**：
1. 上传一个文件
2. 再次上传相同文件

**预期结果**：
- 第二次上传时检测到重复
- 显示"文件已存在"提示

---

#### TC-F013-02: 去重状态显示

**测试步骤**：
1. 上传重复文件后
2. 查看材料列表

**预期结果**：
- 重复文件显示"已存在"标签
- is_duplicate字段为true

---

#### TC-F013-03: 哈希值计算验证

**测试步骤**：
1. 上传文件
2. 查看材料的file_hash字段

**预期结果**：
- file_hash为SHA256哈希值

---

### 2.14 F-014: 项目模板转换

#### TC-F014-01: 模板列表查看

**测试步骤**：
1. 进入模板管理页面
2. 查看模板列表

**预期结果**：
- 显示已配置的模板
- 显示模板名称、类型

---

#### TC-F014-02: 选择模板

**测试步骤**：
1. 进入材料详情页
2. 找到模板选择器
3. 选择一个模板

**预期结果**：
- 可以选择并切换模板

---

#### TC-F014-03: 执行模板转换

**测试步骤**：
1. 选择材料
2. 选择模板
3. 点击"转换"按钮

**预期结果**：
- 转换成功
- 显示提取的结构化信息

---

#### TC-F014-04: 转换结果格式

**测试步骤**：
1. 执行模板转换
2. 查看转换结果格式

**预期结果**：
- 输出JSON或Markdown格式

---

#### TC-F014-05: 模板类型验证

**测试步骤**：
1. 查看模板列表
2. 确认模板类型

**预期结果**：
- 支持：庭审记录、会议纪要、需求文档、证据材料

---

## 三、测试数据要求

### 3.1 测试材料

| 文件类型 | 示例文件 | 用途 |
|----------|----------|------|
| 音频 | test.m4a | 测试F-001, F-002, F-012 |
| 图片 | test.png | 测试F-001, F-002, F-012 |
| 文档 | test.pdf | 测试F-001, F-002, F-012 |

### 3.2 测试客户

| 客户名称 | 关键词 |
|----------|--------|
| 金融法院 | 法院、审判、案件 |
| 阳光执法 | 执法、行政 |

### 3.3 测试项目

| 项目名称 | 客户 | 关键词 |
|----------|------|--------|
| 数字赋能金融审判子系统 | 金融法院 | 卷宗、案件 |
| 阳光执法平台 | 阳光执法 | 执法、行政复议 |

---

## 四、执行方式

### 4.1 本地执行

```bash
cd frontend
python3 tests/test_frontend_full.py
```

### 4.2 定时执行

```bash
# 每天早上9点自动测试
0 9 * * * cd /path/to/pm-agent/frontend && python3 tests/test_frontend_full.py >> test-results.log 2>&1
```

---

## 五、覆盖率统计

| 功能 | 验收标准数 | 测试用例数 | 覆盖率 |
|------|-----------|-----------|--------|
| F-001 | 10 | 5 | 50% |
| F-002 | 3 | 2 | 67% |
| F-003 | 3 | 3 | 100% |
| F-004 | 3 | 3 | 100% |
| F-005 | 3 | 3 | 100% |
| F-006 | 4 | 4 | 100% |
| F-007 | 3 | 2 | 67% |
| F-008 | 5 | 3 | 60% |
| F-009 | 4 | 3 | 75% |
| F-010 | 4 | 3 | 75% |
| F-011 | 4 | 2 | 50% |
| F-012 | 9 | 8 | 89% |
| F-013 | 4 | 3 | 75% |
| F-014 | 5 | 5 | 100% |

---

*文档版本: v1.0*
*创建日期: 2026-02-19*
