- Add Git commit preparation checklist - Add Phase testing guides and issue tracking - Add utility scripts (env setup, test data initialization) - Add temp migration SQL files (for reference) - Update startup scripts and README - Remove obsolete scripts
20 KiB
🧪 Phase 2 完整测试指南 - 双模式智能问答系统
创建时间:2025-10-13
测试目标:验证全文阅读模式和逐篇精读模式的完整功能
预计耗时:60-90分钟
测试人员:____
📋 测试清单总览
☑️ 环境准备 (10分钟)
☑️ 服务启动验证 (5分钟)
☑️ 知识库准备 (15-20分钟)
☑️ 全文阅读模式测试 (15分钟)
☑️ 逐篇精读模式测试 (20分钟)
☑️ 端到端场景测试 (15分钟)
☑️ 问题记录与汇总 (5分钟)
🔧 Part 1: 环境准备(10分钟)
1.1 检查系统要求
必需服务:
- Docker Desktop 已启动
- Python 3.11+ 已安装(虚拟环境)
- Node.js 18+ 已安装
- PostgreSQL容器运行中
- Redis容器运行中
检查命令:
docker ps
# 应该看到:postgres、redis容器
python --version
# 应该看到:Python 3.11.x 或更高
node --version
# 应该看到:v18.x.x 或更高
1.2 检查代码同步
Phase 2关键文件:
✅ extraction_service/ # Python微服务
✅ backend/src/clients/ExtractionClient.ts
✅ backend/src/services/tokenService.ts
✅ frontend/src/components/chat/FullTextMode.tsx
✅ frontend/src/components/chat/DeepReadMode.tsx
✅ frontend/src/components/chat/DocumentSelector.tsx
验证方法:
cd D:\MyCursor\AIclinicalresearch
# 检查Python微服务
dir extraction_service\main.py
# 检查Backend文件
dir backend\src\clients\ExtractionClient.ts
# 检查Frontend组件
dir frontend\src\components\chat\FullTextMode.tsx
🚀 Part 2: 服务启动验证(5分钟)
2.1 一键启动(推荐)
cd D:\MyCursor\AIclinicalresearch
.\一键启动.bat
等待时间:约30秒
预期结果:
- 窗口1:Python微服务(端口8000)
- 窗口2:Backend服务(端口3001)
- 窗口3:Frontend服务(端口3000)
- 自动打开浏览器:http://localhost:3000
2.2 手动启动(备选)
Terminal 1: Python微服务
cd D:\MyCursor\AIclinicalresearch\extraction_service
.\start.bat
✅ 看到:Uvicorn running on http://0.0.0.0:8000
Terminal 2: Backend
cd D:\MyCursor\AIclinicalresearch\backend
npm run dev
✅ 看到:Server listening on http://0.0.0.0:3001
Terminal 3: Frontend
cd D:\MyCursor\AIclinicalresearch\frontend
npm run dev
✅ 看到:Local: http://localhost:3000/
2.3 服务健康检查
Python微服务健康检查:
# 浏览器访问
http://localhost:8000/api/health
# 预期返回
{
"status": "healthy",
"nougat_available": true,
"pymupdf_version": "1.23.8"
}
Backend健康检查:
http://localhost:3001/health
# 预期返回
{
"status": "ok",
"timestamp": "2025-10-13T..."
}
Frontend访问:
http://localhost:3000
# 预期:能看到登录页面或主页
📚 Part 3: 知识库准备(15-20分钟)
3.1 准备测试文档
推荐文档类型:
-
PDF文档(3-5个)
- 英文学术论文(测试Nougat)
- 中文学术论文(测试PyMuPDF)
- 混合语言文档
-
Docx文档(1-2个)
- Word格式的研究报告
-
Txt文档(1个)
- 纯文本文献摘要
文档大小建议:
- PDF:每个5-20页(1-5MB)
- Docx:每个5-10页(<2MB)
- Txt:每个<1MB
3.2 创建测试知识库
步骤:
-
访问知识库管理
http://localhost:3000/knowledge -
创建新知识库
- 点击"创建知识库"
- 名称:
Phase2测试知识库 - 描述:
用于测试双模式功能 - 点击"确定"
-
上传文档
- 进入新知识库
- 点击"上传文档"
- 选择准备好的7-10个文档
- 等待处理完成
预期处理时间:
| 文档类型 | 页数 | 预计时间 |
|---|---|---|
| 中文PDF | 20页 | 30-60秒 |
| 英文PDF | 20页 | 60-90秒 |
| Docx | 10页 | 10-20秒 |
| Txt | 1MB | 5-10秒 |
3.3 验证文档处理状态
检查清单:
- 所有文档显示状态:
✅ 已就绪 - 每个文档有Token数显示
- 每个文档有提取方法显示(pymupdf/nougat/mammoth)
- 没有文档显示"❌ 处理失败"
如果有失败文档:
查看文档详情 → 查看失败原因 → 根据错误重新上传或删除
验证文档信息(点击文档查看详情):
✅ extractedText: 有内容(不为空)
✅ charCount: > 0
✅ tokensCount: > 0
✅ extractionMethod: "pymupdf" | "nougat" | "mammoth" | "direct_read"
✅ language: "chinese" | "english"
🌍 Part 4: 全文阅读模式测试(15分钟)
4.1 进入全文阅读模式
步骤:
- 访问:
http://localhost:3000/chat - 左侧栏选择:
⚫ 知识库模式 - 选择知识库:
Phase2测试知识库 - 选择工作模式:
🌍 全文阅读
预期界面:
┌─────────────────────────────────────────────┐
│ 🌍 全文阅读模式 │
│ │
│ 📊 容量使用情况 │
│ ┌─────────────────────────────────────┐ │
│ │ 文件数: 7 / 50 篇 │ │
│ │ [████░░░░░░░░] 14% │ │
│ │ │ │
│ │ Token容量: 150K / 980K │ │
│ │ [███░░░░░░░░░] 15% │ │
│ └─────────────────────────────────────┘ │
│ │
│ 已加载文档(7篇): │
│ • paper1.pdf (28K tokens) │
│ • paper2.pdf (25K tokens) │
│ • ... │
└─────────────────────────────────────────────┘
4.2 测试用例1:文献综述问题
测试目标:验证AI能否综合所有文献回答
测试问题:
请总结这些文献的主要研究方向和核心观点。
预期结果:
- ✅ AI能提到多篇文献(至少3篇以上)
- ✅ 回答包含不同文献的不同观点
- ✅ 有明确的引用标记:
[来源1]、[来源2]等 - ✅ 点击引用标记能跳转到引用清单
评分标准(5分制):
- 5分:涵盖所有文献,综述全面
- 4分:涵盖大部分文献(70%+)
- 3分:涵盖一半文献(50%+)
- 2分:只涵盖少数文献(<50%)
- 1分:基本没有综合
记录结果:
- 实际涵盖文献数:____/7
- 评分:⭐⭐⭐⭐⭐
4.3 测试用例2:趋势分析
测试问题:
从这些文献中,你能看出该领域的研究趋势是什么?
预期结果:
- ✅ 能识别跨文献的共同趋势
- ✅ 能对比不同时期的研究重点
- ✅ 分析有深度
记录结果:
- 趋势识别准确度:⭐⭐⭐⭐⭐
- 分析深度:⭐⭐⭐⭐⭐
4.4 测试用例3:快速查找
测试问题:
哪些文献提到了[某个关键词]?请列出文献名称和具体内容。
预期结果:
- ✅ 能准确找到包含关键词的文献
- ✅ 提供文献名称
- ✅ 引用具体内容片段
记录结果:
- 查找准确率:⭐⭐⭐⭐⭐
4.5 容量显示测试
测试目标:验证容量指示器的准确性
检查项:
- 文件数显示正确(与实际上传数一致)
- Token数显示合理(与文档大小匹配)
- 进度条百分比正确
- 颜色标识合理(<60%绿色,60-80%黄色,>80%红色)
记录:
- 显示文件数:____ / 50
- 显示Token数:____K / 980K
- 进度条颜色:🟢绿色 / 🟡黄色 / 🔴红色
🔍 Part 5: 逐篇精读模式测试(20分钟)
5.1 进入逐篇精读模式
步骤:
- 在智能问答页面
- 切换工作模式:
🔍 逐篇精读 - 预期:弹出文献选择器
5.2 测试用例4:文献选择器
功能检查:
a) 显示所有可选文献
- 能看到知识库中的所有文档
- 每个文档显示:文件名、大小、Token数
b) 多选功能
- 可以勾选文献
- 最多只能选择5篇
- 选满5篇后其他变灰不可选
c) 统计信息
- 底部显示:
已选X篇 - 底部显示:
共XXK tokens - 统计实时更新
d) 确认选择
- "确认选择"按钮可点击
- 点击后弹窗关闭
- 进入精读模式
测试步骤:
-
选择3篇文献(不同类型)
- paper1.pdf(英文,Nougat提取)
- paper2.pdf(中文,PyMuPDF提取)
- report.docx(Word文档)
-
确认选择
记录结果:
- 选择器UI体验:⭐⭐⭐⭐⭐
- 功能完整性:✅ 完整 / ⚠️ 有缺陷 / ❌ 不工作
5.3 测试用例5:逐篇精读界面
预期界面:
┌─────────────────────────────────────────────┐
│ 🔍 逐篇精读模式 │
│ │
│ 📄 文献切换器 │
│ ┌───────┬───────┬───────┐ │
│ │paper1 │paper2 │report │ (3篇) │
│ │ 活跃 │ │ │ │
│ └───────┴───────┴───────┘ │
│ │
│ 当前文献: paper1.pdf (28K tokens) │
│ │
│ [对话区域...] │
└─────────────────────────────────────────────┘
检查项:
- 显示所有选中的文献(3个标签)
- 当前文献高亮显示
- 显示当前文献的Token数
- 输入框提示包含当前文献名
5.4 测试用例6:精读对话
测试目标:验证AI专注于当前文献
测试问题1(针对paper1.pdf):
这篇文献的研究方法是什么?
预期结果:
- ✅ AI回答专注于paper1.pdf
- ✅ 回答详细(有充足对话空间)
- ✅ 可以进行多轮追问
测试问题2(多轮对话):
继续问:样本量是多少?
继续问:统计分析方法是什么?
继续问:研究的局限性有哪些?
预期结果:
- ✅ 每个问题都能得到详细回答
- ✅ AI记得之前的对话上下文
- ✅ 回答准确度高
记录结果:
- 回答准确度:⭐⭐⭐⭐⭐
- 对话深度:⭐⭐⭐⭐⭐
- 上下文记忆:✅ 正常 / ❌ 有问题
5.5 测试用例7:文献切换
测试目标:验证文献切换和对话历史独立性
操作步骤:
-
当前在paper1.pdf
- 提问:"这篇文献的结论是什么?"
- 记录AI回答
-
切换到paper2.pdf
- 点击"paper2"标签
- 验证:对话区域清空,显示paper2的历史(为空)
- 提问:"这篇文献的研究对象是什么?"
- 记录AI回答
-
切换回paper1.pdf
- 点击"paper1"标签
- 验证:能看到之前的对话历史
- 继续提问:"请继续详细说明。"
- 验证:AI记得之前的上下文
检查清单:
- 文献切换无延迟
- 对话历史正确保存
- 对话历史正确加载
- 上下文不混淆(不会把paper2的问题混入paper1)
记录结果:
- 切换流畅度:⭐⭐⭐⭐⭐
- 历史保存:✅ 正常 / ❌ 有问题
- 上下文独立性:✅ 正常 / ❌ 混淆
5.6 测试用例8:对话空间验证
测试目标:验证逐篇模式有充足的对话空间
操作:
- 选择1篇最大的文献(如30K tokens)
- 进行10轮以上的深度对话
- 观察AI回答质量是否下降
预期:
- ✅ AI回答始终详细完整
- ✅ 不会出现"上下文太长"错误
- ✅ 对话空间充裕(800K+ tokens)
记录结果:
- 对话轮数:____轮
- 回答质量:⭐⭐⭐⭐⭐
- 是否出错:✅ 无错误 / ❌ 出错
🎯 Part 6: 端到端场景测试(15分钟)
6.1 场景1:文献综述(全文模式)
用户角色:研究生,需要写文献综述
操作流程:
- 上传10篇相关文献到知识库
- 选择"全文阅读模式"
- 提问:"请总结这些文献的研究现状"
- 提问:"有哪些研究空白?"
- 提问:"未来研究方向是什么?"
验收标准:
- ✅ 3个问题都能得到综合性回答
- ✅ 回答涵盖多篇文献
- ✅ 分析有深度
记录:
- 场景完成度:✅ 完成 / ⚠️ 部分完成 / ❌ 未完成
- 用户体验:⭐⭐⭐⭐⭐
6.2 场景2:核心论文精读(精读模式)
用户角色:科研人员,需要深度分析3篇核心论文
操作流程:
- 选择"逐篇精读模式"
- 选择3篇核心论文
- 对paper1进行5轮深度提问(方法、数据、结论、局限性、创新点)
- 切换到paper2,继续深度分析
- 切换到paper3,继续深度分析
验收标准:
- ✅ 每篇论文都能进行多轮深度对话
- ✅ 文献切换流畅
- ✅ 对话历史正确保存
- ✅ AI回答准确详细
记录:
- 场景完成度:✅ 完成 / ⚠️ 部分完成 / ❌ 未完成
- 用户体验:⭐⭐⭐⭐⭐
6.3 场景3:模式切换
测试目标:验证两种模式可以自由切换
操作流程:
- 全文模式 → 提问1个综合问题
- 切换到精读模式 → 选择2篇文献
- 精读模式 → 深度分析paper1
- 切换回全文模式 → 再问1个综合问题
- 验证历史记录是否独立
验收标准:
- ✅ 模式切换无错误
- ✅ 两个模式的对话历史独立
- ✅ 无数据丢失
记录:
- 切换成功率:____/4次
- 数据一致性:✅ 正常 / ❌ 有问题
📝 Part 7: 问题记录与汇总(5分钟)
7.1 功能完整性检查
| 功能模块 | 状态 | 备注 |
|---|---|---|
| Python微服务启动 | ✅ / ❌ | |
| Backend服务启动 | ✅ / ❌ | |
| Frontend页面加载 | ✅ / ❌ | |
| 文档上传 | ✅ / ❌ | |
| 文档处理(PDF) | ✅ / ❌ | |
| 文档处理(Docx) | ✅ / ❌ | |
| 文档处理(Txt) | ✅ / ❌ | |
| Token计数 | ✅ / ❌ | |
| 容量指示器 | ✅ / ❌ | |
| 全文阅读模式 | ✅ / ❌ | |
| 文献选择器 | ✅ / ❌ | |
| 逐篇精读模式 | ✅ / ❌ | |
| 文献切换 | ✅ / ❌ | |
| 对话历史保存 | ✅ / ❌ |
7.2 发现的问题清单
严重问题(🔴 阻断性):
中等问题(🟡 影响使用):
轻微问题(🟢 不影响主流程):
7.3 性能测试记录
| 指标 | 预期 | 实际 | 是否达标 |
|---|---|---|---|
| 页面加载时间 | <2秒 | ___秒 | ✅ / ❌ |
| 文献选择器打开 | <1秒 | ___秒 | ✅ / ❌ |
| 文献切换响应 | <0.5秒 | ___秒 | ✅ / ❌ |
| AI首字响应 | <3秒 | ___秒 | ✅ / ❌ |
| 文档上传(PDF 20页) | <60秒 | ___秒 | ✅ / ❌ |
7.4 用户体验评分
整体体验:⭐⭐⭐⭐⭐
分项评分:
- 界面美观度:⭐⭐⭐⭐⭐
- 操作流畅度:⭐⭐⭐⭐⭐
- 功能易用性:⭐⭐⭐⭐⭐
- 错误提示清晰度:⭐⭐⭐⭐⭐
7.5 最终结论
Phase 2验收结果:
✅ 通过验收 - 可以进入下一阶段
- 核心功能完整
- 性能达标
- 无阻断性问题
⚠️ 有条件通过 - 需要修复中等问题后再进入下一阶段
- 核心功能基本完整
- 有影响使用的问题
- 需要优先修复
❌ 未通过验收 - 需要继续完善
- 核心功能有缺失
- 有阻断性问题
- 无法正常使用
测试人员签字:________
测试日期:________
建议:________________________________________________
🔧 附录A:常见问题排查
A.1 Python微服务无法启动
症状:start.bat运行后报错
排查步骤:
-
检查虚拟环境
cd extraction_service dir venv -
重新安装依赖
cd extraction_service .\install.bat -
手动启动测试
cd extraction_service venv\Scripts\activate python main.py
A.2 文档上传后一直"处理中"
症状:文档上传后长时间不变为"已就绪"
排查步骤:
-
检查Python微服务是否运行
http://localhost:8000/api/health -
查看Backend日志
- 找到Backend的Terminal窗口
- 查看是否有错误日志
-
查看Python微服务日志
- 找到Python微服务的Terminal窗口
- 查看处理进度
-
手动测试提取
http://localhost:8000/docs # 使用Swagger UI测试 /api/extract 接口
A.3 容量显示不准确
症状:容量指示器数字不对
排查步骤:
- 刷新页面
- 检查Backend API
http://localhost:3001/api/v1/knowledge-bases/{kbId}/document-selection - 检查数据库数据
- 使用Prisma Studio查看documents表
- 验证tokensCount字段
A.4 文献选择器空白
症状:点击"逐篇精读"后弹窗空白
排查步骤:
- 打开浏览器Console(F12)
- 查看是否有JavaScript错误
- 检查Backend API
http://localhost:3001/api/v1/knowledge-bases/{kbId}/documents - 确认知识库中有已完成的文档
A.5 文献切换后对话历史丢失
症状:切换文献后看不到之前的对话
排查步骤:
- 打开浏览器Console
- 查看是否有React状态错误
- 检查LocalStorage/SessionStorage
- 尝试刷新页面重新进入
🔧 附录B:测试数据准备建议
B.1 推荐测试文档
英文PDF(Nougat测试):
- 学术论文,包含表格和公式
- 大小:5-20页
- 示例:Nature、Science期刊论文
中文PDF(PyMuPDF测试):
- 中文学术论文
- 大小:10-30页
- 示例:中文核心期刊论文
Word文档(Mammoth测试):
- 研究报告或综述
- 大小:5-10页
- 包含段落、列表、表格
文本文件(编码测试):
- 纯文本文献摘要
- 大小:<1MB
- 测试UTF-8、GBK编码
B.2 测试场景示例
场景:阿尔兹海默病研究
- 上传7-10篇相关论文
- 测试问题:
- "这些文献的主要研究方向是什么?"
- "有哪些治疗方法被提到?"
- "样本量分布是怎样的?"
场景:COVID-19研究
- 上传8-12篇相关论文
- 测试问题:
- "这些文献发表在哪些期刊?"
- "研究方法有哪些?"
- "主要发现是什么?"
📞 联系与反馈
测试问题反馈:
- 记录在本文档的"问题清单"部分
- 截图关键错误信息
- 记录复现步骤
测试完成后:
- 保存此文档
- 整理测试结果
- 准备与开发团队Review
祝测试顺利! 🎉
如有任何问题,随时记录在"问题清单"中。