# Week 4 功能快速测试指南

> **测试日期：** 2025-11-21  
> **功能模块：** 初筛结果页面  
> **预计测试时间：** 10分钟

---

## 🚀 一、快速开始（3步）

### Step 1: 获取测试项目ID
```bash
cd backend
node scripts/get-test-projects.mjs
```

**输出示例**：
```
🎯 推荐测试项目（有筛选结果）：
   项目ID: 55941145-bba0-4b15-bda4-f0a398d78208
   文献数: 7
   筛选结果数: 7
```

### Step 2: 复制测试URL并访问

**方式1：通过审核工作台（推荐）**
```
http://localhost:3000/literature/screening/title/workbench?projectId=55941145-bba0-4b15-bda4-f0a398d78208
```
然后点击右上角的 **"查看结果统计"** 按钮

**方式2：直接访问结果页**
```
http://localhost:3000/literature/screening/title/results?projectId=55941145-bba0-4b15-bda4-f0a398d78208
```

### Step 3: 测试所有功能
见下方详细测试清单

---

## 📋 二、详细测试清单

### 2.1 统计概览卡片 ✅

**测试项**：
- [ ] 总数是否显示正确？（应该=7或199）
- [ ] 已纳入数量和百分比是否正确？
- [ ] 已排除数量和百分比是否正确？
- [ ] 待复核数量是否正确？
- [ ] 如果有冲突，是否显示冲突数量？

**预期效果**：
```
┌───────┐ ┌───────┐ ┌───────┐ ┌───────┐
│ 总数  │ │ 已纳入│ │ 已排除│ │ 待复核│
│   7   │ │   2   │ │   5   │ │   0   │
│  篇   │ │ 28.6% │ │ 71.4% │ │  0%   │
└───────┘ └───────┘ └───────┘ └───────┘
```

---

### 2.2 待复核提示 ✅

**测试项**：
- [ ] 当有冲突时，是否显示黄色提示框？
- [ ] 提示文字是否准确？
- [ ] "前往复核"按钮能否正常跳转？

**预期效果**：
```
⚠️ 有文献需要人工复核
还有 2 篇文献存在模型判断冲突，建议前往"审核工作台"进行人工复核
[前往复核] 按钮
```

**测试方法**：
- 点击"前往复核"按钮，应该跳转到审核工作台

---

### 2.3 PRISMA排除分析 ✅

**测试项**：
- [ ] 是否显示排除原因统计？
- [ ] 原因分类是否正确？
  - P不匹配（人群）
  - I不匹配（干预）
  - C不匹配（对照）
  - S不匹配（研究设计）
  - 其他原因
- [ ] 数量和百分比是否正确？
- [ ] 柱状图是否按比例显示？

**预期效果**：
```
排除原因分析（PRISMA）
────────────────────────────────
P不匹配（人群）     ████████ 3篇 (60%)
I不匹配（干预）     ████     2篇 (40%)
```

---

### 2.4 结果列表（混合方案）⭐ 重点测试

**测试项**：
- [ ] Tab是否正常切换？
  - 全部（7）
  - 已纳入（2）
  - 已排除（5）
  - 待复核（0）
- [ ] 表格是否有以下列？
  - 序号
  - 文献标题（可点击）
  - AI共识（显示DS和QW是否一致）
  - 排除原因（纳入显示"-"）
  - 人工决策（标注推翻AI或与AI一致）
  - 状态（4种状态）
  - 操作

**重点检查：逻辑矛盾是否解决**

#### 场景1：人工推翻AI（最重要）
```
AI共识：⊗ 排除 (DS✓ QW✓)
人工决策：✅ 纳入 (推翻AI)
排除原因：-  ← 应该是"-"，不是"P不匹配"
状态：🟠 已复核-推翻AI
```

#### 场景2：与AI一致
```
AI共识：✅ 纳入 (DS✓ QW✓)
人工决策：✅ 纳入 (与AI一致)
排除原因：-
状态：✅ 已复核-与AI一致
```

#### 场景3：未复核-AI一致排除
```
AI共识：⊗ 排除 (DS✓ QW✓)
人工决策：未复核
排除原因：P不匹配（人群）  ← 应该显示AI提取的原因
状态：⬜ 待复核-AI一致
```

#### 场景4：未复核-AI冲突
```
AI共识：⚠️ 冲突
         DS:纳入
         QW:排除
人工决策：未复核
排除原因：P不匹配（人群）  ← 显示排除一方的原因
状态：⚠️ 待复核-有冲突
```

---

### 2.5 展开行详情 ✅

**测试项**：
- [ ] 点击文献标题，图标是否从📕变为📖？
- [ ] 是否显示DeepSeek完整分析？
  - 决策和置信度
  - P/I/C/S判断和证据
  - 排除理由
- [ ] 是否显示Qwen完整分析？
- [ ] 如果已复核，是否显示人工复核信息？
  - 复核决策
  - 推翻AI标签
  - 排除原因
  - 复核人和时间

**预期效果**：
```
📖 [标题被展开]

┌─ DeepSeek-V3 ──────┐ ┌─ Qwen-Max ─────────┐
│ 排除（95%）         │ │ 排除（90%）        │
│ P: ⊗不匹配 - "..." │ │ P: ⊗不匹配 - "..." │
│ I: ✓匹配           │ │ I: ✓匹配          │
│ C: ✓匹配           │ │ C: ✓匹配          │
│ S: ✓匹配           │ │ S: ✓匹配          │
└────────────────────┘ └───────────────────┘

👨‍⚕️ 人工复核
复核决策：✅ 纳入 [推翻AI建议]
复核人：张医生 | 时间：2025-11-21 14:00
```

---

### 2.6 批量选择与导出 ✅

**测试项**：
- [ ] Checkbox是否可以多选？
- [ ] "全选"、"反选"按钮是否正常？
- [ ] 选中后，是否显示"导出选中 (N)"按钮？
- [ ] "导出统计摘要"是否正常？（2个Sheet）
- [ ] "导出初筛结果"是否正常？
- [ ] "导出选中项"是否正常？

**测试步骤**：

#### 测试1：导出统计摘要
1. 点击"导出统计摘要"按钮
2. 检查下载的Excel文件
3. 应该有2个Sheet：
   - Sheet1：统计摘要（总数、纳入、排除等）
   - Sheet2：排除原因分析

#### 测试2：导出初筛结果（当前Tab）
1. 切换到"已排除"Tab
2. 点击"导出初筛结果"按钮
3. 检查下载的Excel文件
4. 应该只包含已排除的文献（5篇）
5. 文件名应包含"_excluded"

#### 测试3：导出选中项
1. 在"全部"Tab中，勾选前3篇文献
2. 点击"导出选中 (3)"按钮
3. 检查下载的Excel文件
4. 应该只包含选中的3篇文献

#### 测试4：Excel内容完整性
打开导出的Excel，检查是否包含所有40列：
- [ ] 基础信息（8列）
- [ ] AI共识（2列）
- [ ] DeepSeek分析（11列，包含证据）
- [ ] Qwen分析（11列，包含证据）
- [ ] 人工决策（4列）
- [ ] 状态（2列）

---

### 2.7 页面导航 ✅

**测试项**：
- [ ] 在审核工作台，筛选完成后，是否显示"查看结果统计"按钮？
- [ ] 点击按钮能否正确跳转到结果页？
- [ ] projectId是否正确传递？
- [ ] 左侧导航的"初筛结果"能否正常点击？

---

## 🐛 三、常见问题排查

### 问题1：页面报错"主应用模块加载失败"
**原因**：组件导入错误

**解决**：
- 已修复 `import ConclusionTag` 的导入方式
- 刷新页面应该正常

---

### 问题2：统计数据不显示
**可能原因**：
1. projectId参数缺失
2. 后端API未启动
3. 项目无筛选结果

**排查方法**：
1. 检查URL是否包含 `?projectId=...`
2. 打开浏览器控制台，查看网络请求
3. 确认后端服务在运行（http://localhost:3001）
4. 使用 `get-test-projects.mjs` 确认项目有数据

---

### 问题3：Excel导出慢或卡顿
**正常情况**：
- <100篇：<1秒
- 100-1000篇：1-3秒
- 1000-5000篇：3-5秒

**如果>5秒**：
- 可能数据量太大（>5000篇）
- 需要切换到后端导出方案（技术债务）

---

### 问题4：排除原因显示不正确
**检查点**：
1. 如果最终决策是"纳入"，排除原因应该显示"-"
2. 如果最终决策是"排除"，应该显示原因
3. 如果是人工复核，应该优先显示人工填写的原因
4. 如果未复核，显示AI提取的原因

**如果不符合**：
- 截图发送问题场景
- 我会修复逻辑

---

## 🎯 四、测试数据集

### 小数据集（7篇）- 快速测试
```
项目ID: 55941145-bba0-4b15-bda4-f0a398d78208
文献数: 7
筛选结果: 7

测试URL:
http://localhost:3000/literature/screening/title/results?projectId=55941145-bba0-4b15-bda4-f0a398d78208
```

### 中数据集（150篇）- 性能测试
```
项目ID: 433f8248-08bd-48a5-9e60-7e8fb5c3ac25
文献数: 150
筛选结果: 150

测试URL:
http://localhost:3000/literature/screening/title/results?projectId=433f8248-08bd-48a5-9e60-7e8fb5c3ac25
```

### 大数据集（199篇）- 完整测试
```
项目ID: 2b37c270-41db-46cf-b11c-050baed3b376
文献数: 199
筛选结果: 199

测试URL:
http://localhost:3000/literature/screening/title/results?projectId=2b37c270-41db-46cf-b11c-050baed3b376
```

---

## ✅ 五、预期测试结果

### 页面应该显示

1. **统计概览**：4个卡片（总数、已纳入、已排除、待复核）
2. **待复核提示**：如果有冲突，显示黄色Alert
3. **PRISMA排除分析**：柱状图显示各原因占比
4. **结果列表**：
   - 4个Tab（全部/已纳入/已排除/待复核）
   - 7列表格（序号、标题、AI共识、排除原因、人工决策、状态、操作）
   - Checkbox多选
5. **导出按钮**：3个按钮（导出统计摘要、导出初筛结果、导出选中项）

### 混合方案效果验证 ⭐

**关键检查点**：

#### ✅ 无逻辑矛盾
```
如果最终决策是"纳入"，排除原因应该显示"-"
如果最终决策是"排除"，排除原因应该显示具体原因
```

#### ✅ 信息清晰
```
AI共识列：清楚显示双模型是否一致
人工决策列：标注"推翻AI"或"与AI一致"
状态列：4种状态清晰区分
```

#### ✅ 展开详情完整
```
点击标题展开后：
- DeepSeek完整分析（判断+证据+理由）
- Qwen完整分析（判断+证据+理由）
- 人工复核信息（如果已复核）
```

---

## 📤 六、Excel导出测试

### 6.1 导出统计摘要

**操作**：点击"导出统计摘要"按钮

**预期结果**：
- 文件名：`项目[ID]_统计摘要_2025-11-21.xlsx`
- Sheet1：统计摘要（6行数据）
- Sheet2：排除原因分析（N行，N=排除原因种类）

**检查点**：
- [ ] 文件名是否正确？
- [ ] 是否有2个Sheet？
- [ ] 统计数据是否准确？

---

### 6.2 导出初筛结果（当前Tab）

**操作**：
1. 切换到"已排除"Tab
2. 点击"导出初筛结果"按钮

**预期结果**：
- 文件名：`项目[ID]_excluded_2025-11-21.xlsx`
- 只包含已排除的文献
- 共40列信息

**检查点**：
- [ ] 文件名包含"_excluded"？
- [ ] 只包含已排除的文献？
- [ ] 是否有40列？

**40列清单**：
```
基础信息（8列）：
1. 序号
2. 文献标题
3. 摘要
4. 作者
5. 期刊
6. 发表年份
7. PMID
8. DOI

AI共识（2列）：
9. AI共识
10. AI是否一致

DeepSeek分析（11列）：
11. DeepSeek决策
12. DeepSeek置信度
13-16. DeepSeek-P/I/C/S判断
17-20. DeepSeek-P/I/C/S证据
21. DeepSeek排除理由

Qwen分析（11列）：
22. Qwen决策
23. Qwen置信度
24-27. Qwen-P/I/C/S判断
28-31. Qwen-P/I/C/S证据
32. Qwen排除理由

人工决策（4列）：
33. 人工决策
34. 人工排除原因
35. 复核人
36. 复核时间

状态（2列）：
37. 状态
38. 冲突状态

(实际可能更多列)
```

---

### 6.3 导出选中项

**操作**：
1. 在表格中勾选3篇文献
2. 点击"导出选中 (3)"按钮

**预期结果**：
- 文件名：`项目[ID]_选中_2025-11-21.xlsx`
- 只包含选中的3篇文献
- 信息完整（40列）

**检查点**：
- [ ] 文件名包含"_选中"？
- [ ] 只有3篇文献？
- [ ] 信息是否完整？

---

## 🎨 七、UI/UX验证

### 7.1 视觉效果
- [ ] 统计卡片是否美观？
- [ ] 柱状图是否清晰？
- [ ] 表格列宽是否合适？
- [ ] Tag颜色是否区分明显？
  - 绿色：纳入/已复核-与AI一致
  - 灰色：排除/待复核-AI一致
  - 橙色：已复核-推翻AI
  - 黄色：待复核-有冲突

### 7.2 交互体验
- [ ] 点击文献标题能否流畅展开？
- [ ] Checkbox选择是否流畅？
- [ ] Tab切换是否有延迟？
- [ ] 导出Excel是否有进度提示？

### 7.3 信息清晰度 ⭐ 重点
- [ ] 能否一眼看出是AI决策还是人工决策？
- [ ] 能否清楚知道是否推翻了AI建议？
- [ ] 排除原因是否符合逻辑（纳入不显示原因）？
- [ ] 状态标签是否容易理解？

---

## 🚨 八、已知限制

### 8.1 Excel导出限制
- **当前方案**：前端生成，适用<5000条
- **如果卡顿**：需切换到后端导出+OSS（技术债务）

### 8.2 统计性能
- **当前性能**：199篇约200ms
- **如果>1000篇**：可能需要缓存优化

---

## 📞 九、反馈方式

测试中发现任何问题，请反馈：

1. **截图**：显示问题的具体界面
2. **描述**：问题的具体表现
3. **数据**：使用的projectId
4. **浏览器**：控制台错误信息（按F12查看）

---

**测试愉快！** 🎉


