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

13 KiB
Raw Blame History

Week 4 功能快速测试指南

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


🚀 一、快速开始3步

Step 1: 获取测试项目ID

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查看

测试愉快! 🎉