# 🧪 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容器运行中 **检查命令**: ```bash 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 ``` **验证方法**: ```bash 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 一键启动(推荐) ```bash cd D:\MyCursor\AIclinicalresearch .\一键启动.bat ``` **等待时间**:约30秒 **预期结果**: - 窗口1:Python微服务(端口8000) - 窗口2:Backend服务(端口3001) - 窗口3:Frontend服务(端口3000) - 自动打开浏览器:http://localhost:3000 --- ### 2.2 手动启动(备选) **Terminal 1: Python微服务** ```bash cd D:\MyCursor\AIclinicalresearch\extraction_service .\start.bat ``` ✅ 看到:`Uvicorn running on http://0.0.0.0:8000` **Terminal 2: Backend** ```bash cd D:\MyCursor\AIclinicalresearch\backend npm run dev ``` ✅ 看到:`Server listening on http://0.0.0.0:3001` **Terminal 3: Frontend** ```bash cd D:\MyCursor\AIclinicalresearch\frontend npm run dev ``` ✅ 看到:`Local: http://localhost:3000/` --- ### 2.3 服务健康检查 **Python微服务健康检查**: ```bash # 浏览器访问 http://localhost:8000/api/health # 预期返回 { "status": "healthy", "nougat_available": true, "pymupdf_version": "1.23.8" } ``` **Backend健康检查**: ```bash http://localhost:3001/health # 预期返回 { "status": "ok", "timestamp": "2025-10-13T..." } ``` **Frontend访问**: ```bash http://localhost:3000 # 预期:能看到登录页面或主页 ``` --- ## 📚 Part 3: 知识库准备(15-20分钟) ### 3.1 准备测试文档 **推荐文档类型**: 1. **PDF文档**(3-5个) - 英文学术论文(测试Nougat) - 中文学术论文(测试PyMuPDF) - 混合语言文档 2. **Docx文档**(1-2个) - Word格式的研究报告 3. **Txt文档**(1个) - 纯文本文献摘要 **文档大小建议**: - PDF:每个5-20页(1-5MB) - Docx:每个5-10页(<2MB) - Txt:每个<1MB --- ### 3.2 创建测试知识库 **步骤**: 1. **访问知识库管理** ``` http://localhost:3000/knowledge ``` 2. **创建新知识库** - 点击"创建知识库" - 名称:`Phase2测试知识库` - 描述:`用于测试双模式功能` - 点击"确定" 3. **上传文档** - 进入新知识库 - 点击"上传文档" - 选择准备好的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 进入全文阅读模式 **步骤**: 1. 访问:`http://localhost:3000/chat` 2. 左侧栏选择:`⚫ 知识库模式` 3. 选择知识库:`Phase2测试知识库` 4. 选择工作模式:`🌍 全文阅读` **预期界面**: ``` ┌─────────────────────────────────────────────┐ │ 🌍 全文阅读模式 │ │ │ │ 📊 容量使用情况 │ │ ┌─────────────────────────────────────┐ │ │ │ 文件数: 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 进入逐篇精读模式 **步骤**: 1. 在智能问答页面 2. 切换工作模式:`🔍 逐篇精读` 3. **预期**:弹出文献选择器 --- ### 5.2 测试用例4:文献选择器 **功能检查**: **a) 显示所有可选文献** - [ ] 能看到知识库中的所有文档 - [ ] 每个文档显示:文件名、大小、Token数 **b) 多选功能** - [ ] 可以勾选文献 - [ ] 最多只能选择5篇 - [ ] 选满5篇后其他变灰不可选 **c) 统计信息** - [ ] 底部显示:`已选X篇` - [ ] 底部显示:`共XXK tokens` - [ ] 统计实时更新 **d) 确认选择** - [ ] "确认选择"按钮可点击 - [ ] 点击后弹窗关闭 - [ ] 进入精读模式 **测试步骤**: 1. 选择3篇文献(不同类型) - paper1.pdf(英文,Nougat提取) - paper2.pdf(中文,PyMuPDF提取) - report.docx(Word文档) 2. 确认选择 **记录结果**: - 选择器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:文献切换 **测试目标**:验证文献切换和对话历史独立性 **操作步骤**: 1. **当前在paper1.pdf** - 提问:"这篇文献的结论是什么?" - 记录AI回答 2. **切换到paper2.pdf** - 点击"paper2"标签 - **验证**:对话区域清空,显示paper2的历史(为空) - 提问:"这篇文献的研究对象是什么?" - 记录AI回答 3. **切换回paper1.pdf** - 点击"paper1"标签 - **验证**:能看到之前的对话历史 - 继续提问:"请继续详细说明。" - **验证**:AI记得之前的上下文 **检查清单**: - [ ] 文献切换无延迟 - [ ] 对话历史正确保存 - [ ] 对话历史正确加载 - [ ] 上下文不混淆(不会把paper2的问题混入paper1) **记录结果**: - 切换流畅度:⭐⭐⭐⭐⭐ - 历史保存:✅ 正常 / ❌ 有问题 - 上下文独立性:✅ 正常 / ❌ 混淆 --- ### 5.6 测试用例8:对话空间验证 **测试目标**:验证逐篇模式有充足的对话空间 **操作**: 1. 选择1篇最大的文献(如30K tokens) 2. 进行10轮以上的深度对话 3. 观察AI回答质量是否下降 **预期**: - ✅ AI回答始终详细完整 - ✅ 不会出现"上下文太长"错误 - ✅ 对话空间充裕(800K+ tokens) **记录结果**: - 对话轮数:____轮 - 回答质量:⭐⭐⭐⭐⭐ - 是否出错:✅ 无错误 / ❌ 出错 --- ## 🎯 Part 6: 端到端场景测试(15分钟) ### 6.1 场景1:文献综述(全文模式) **用户角色**:研究生,需要写文献综述 **操作流程**: 1. 上传10篇相关文献到知识库 2. 选择"全文阅读模式" 3. 提问:"请总结这些文献的研究现状" 4. 提问:"有哪些研究空白?" 5. 提问:"未来研究方向是什么?" **验收标准**: - ✅ 3个问题都能得到综合性回答 - ✅ 回答涵盖多篇文献 - ✅ 分析有深度 **记录**: - 场景完成度:✅ 完成 / ⚠️ 部分完成 / ❌ 未完成 - 用户体验:⭐⭐⭐⭐⭐ --- ### 6.2 场景2:核心论文精读(精读模式) **用户角色**:科研人员,需要深度分析3篇核心论文 **操作流程**: 1. 选择"逐篇精读模式" 2. 选择3篇核心论文 3. 对paper1进行5轮深度提问(方法、数据、结论、局限性、创新点) 4. 切换到paper2,继续深度分析 5. 切换到paper3,继续深度分析 **验收标准**: - ✅ 每篇论文都能进行多轮深度对话 - ✅ 文献切换流畅 - ✅ 对话历史正确保存 - ✅ AI回答准确详细 **记录**: - 场景完成度:✅ 完成 / ⚠️ 部分完成 / ❌ 未完成 - 用户体验:⭐⭐⭐⭐⭐ --- ### 6.3 场景3:模式切换 **测试目标**:验证两种模式可以自由切换 **操作流程**: 1. 全文模式 → 提问1个综合问题 2. 切换到精读模式 → 选择2篇文献 3. 精读模式 → 深度分析paper1 4. 切换回全文模式 → 再问1个综合问题 5. 验证历史记录是否独立 **验收标准**: - ✅ 模式切换无错误 - ✅ 两个模式的对话历史独立 - ✅ 无数据丢失 **记录**: - 切换成功率:____/4次 - 数据一致性:✅ 正常 / ❌ 有问题 --- ## 📝 Part 7: 问题记录与汇总(5分钟) ### 7.1 功能完整性检查 | 功能模块 | 状态 | 备注 | |---------|------|------| | Python微服务启动 | ✅ / ❌ | | | Backend服务启动 | ✅ / ❌ | | | Frontend页面加载 | ✅ / ❌ | | | 文档上传 | ✅ / ❌ | | | 文档处理(PDF) | ✅ / ❌ | | | 文档处理(Docx) | ✅ / ❌ | | | 文档处理(Txt) | ✅ / ❌ | | | Token计数 | ✅ / ❌ | | | 容量指示器 | ✅ / ❌ | | | 全文阅读模式 | ✅ / ❌ | | | 文献选择器 | ✅ / ❌ | | | 逐篇精读模式 | ✅ / ❌ | | | 文献切换 | ✅ / ❌ | | | 对话历史保存 | ✅ / ❌ | | --- ### 7.2 发现的问题清单 **严重问题(🔴 阻断性)**: 1. _______________________________________________ 2. _______________________________________________ **中等问题(🟡 影响使用)**: 1. _______________________________________________ 2. _______________________________________________ **轻微问题(🟢 不影响主流程)**: 1. _______________________________________________ 2. _______________________________________________ --- ### 7.3 性能测试记录 | 指标 | 预期 | 实际 | 是否达标 | |------|------|------|---------| | 页面加载时间 | <2秒 | ___秒 | ✅ / ❌ | | 文献选择器打开 | <1秒 | ___秒 | ✅ / ❌ | | 文献切换响应 | <0.5秒 | ___秒 | ✅ / ❌ | | AI首字响应 | <3秒 | ___秒 | ✅ / ❌ | | 文档上传(PDF 20页) | <60秒 | ___秒 | ✅ / ❌ | --- ### 7.4 用户体验评分 **整体体验**:⭐⭐⭐⭐⭐ **分项评分**: - 界面美观度:⭐⭐⭐⭐⭐ - 操作流畅度:⭐⭐⭐⭐⭐ - 功能易用性:⭐⭐⭐⭐⭐ - 错误提示清晰度:⭐⭐⭐⭐⭐ --- ### 7.5 最终结论 **Phase 2验收结果**: ✅ **通过验收** - 可以进入下一阶段 - 核心功能完整 - 性能达标 - 无阻断性问题 ⚠️ **有条件通过** - 需要修复中等问题后再进入下一阶段 - 核心功能基本完整 - 有影响使用的问题 - 需要优先修复 ❌ **未通过验收** - 需要继续完善 - 核心功能有缺失 - 有阻断性问题 - 无法正常使用 **测试人员签字**:________ **测试日期**:________ **建议**:________________________________________________ --- ## 🔧 附录A:常见问题排查 ### A.1 Python微服务无法启动 **症状**:start.bat运行后报错 **排查步骤**: 1. 检查虚拟环境 ```bash cd extraction_service dir venv ``` 2. 重新安装依赖 ```bash cd extraction_service .\install.bat ``` 3. 手动启动测试 ```bash cd extraction_service venv\Scripts\activate python main.py ``` --- ### A.2 文档上传后一直"处理中" **症状**:文档上传后长时间不变为"已就绪" **排查步骤**: 1. 检查Python微服务是否运行 ```bash http://localhost:8000/api/health ``` 2. 查看Backend日志 - 找到Backend的Terminal窗口 - 查看是否有错误日志 3. 查看Python微服务日志 - 找到Python微服务的Terminal窗口 - 查看处理进度 4. 手动测试提取 ```bash http://localhost:8000/docs # 使用Swagger UI测试 /api/extract 接口 ``` --- ### A.3 容量显示不准确 **症状**:容量指示器数字不对 **排查步骤**: 1. 刷新页面 2. 检查Backend API ```bash http://localhost:3001/api/v1/knowledge-bases/{kbId}/document-selection ``` 3. 检查数据库数据 - 使用Prisma Studio查看documents表 - 验证tokensCount字段 --- ### A.4 文献选择器空白 **症状**:点击"逐篇精读"后弹窗空白 **排查步骤**: 1. 打开浏览器Console(F12) 2. 查看是否有JavaScript错误 3. 检查Backend API ```bash http://localhost:3001/api/v1/knowledge-bases/{kbId}/documents ``` 4. 确认知识库中有已完成的文档 --- ### A.5 文献切换后对话历史丢失 **症状**:切换文献后看不到之前的对话 **排查步骤**: 1. 打开浏览器Console 2. 查看是否有React状态错误 3. 检查LocalStorage/SessionStorage 4. 尝试刷新页面重新进入 --- ## 🔧 附录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 --- **祝测试顺利!** 🎉 如有任何问题,随时记录在"问题清单"中。