Files
AIclinicalresearch/快速测试指南-Week4.md
HaHafeng 88cc049fb3 feat(asl): Complete Day 5 - Fulltext Screening Backend API Development
- Implement 5 core API endpoints (create task, get progress, get results, update decision, export Excel)
- Add FulltextScreeningController with Zod validation (652 lines)
- Implement ExcelExporter service with 4-sheet report generation (352 lines)
- Register routes under /api/v1/asl/fulltext-screening
- Create 31 REST Client test cases
- Add automated integration test script
- Fix PDF extraction fallback mechanism in LLM12FieldsService
- Update API design documentation to v3.0
- Update development plan to v1.2
- Create Day 5 development record
- Clean up temporary test files
2025-11-23 10:52:07 +08:00

525 lines
13 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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篇文献
#### 测试4Excel内容完整性
打开导出的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` 确认项目有数据
---
### 问题3Excel导出慢或卡顿
**正常情况**
- <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查看
---
**测试愉快!** 🎉