Files
AIclinicalresearch/测试记录/2025-10-13-首次测试.md
HaHafeng 855d142fec chore: add remaining test docs, scripts and temp files
- 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
2025-11-16 15:44:55 +08:00

12 KiB
Raw Blame History

Phase 2 测试记录 - 首次测试

测试日期2025-10-13
测试人员:用户
测试类型:快速测试(部分功能)
测试耗时约10分钟已暂停待修复验证


📊 测试信息

测试环境

  • Python微服务 已启动(假设)
  • Backend服务 已启动(假设)
  • Frontend服务 已启动
  • 测试知识库: 已准备(假设)

测试范围

  • 智能问答页面访问
  • 知识库模式选择
  • 知识库选择
  • 全文阅读模式切换
  • 容量指示器显示(未达到)
  • 文献综述测试(未达到)
  • 逐篇精读模式(未测试)

🐛 发现的问题

问题1全文阅读模式加载失败 🔴

严重等级🔴 严重(阻断性)
状态 已修复

详细信息:见 问题清单.md - 问题1

测试步骤

  1. 访问:http://localhost:3000/chat
  2. 选择:"知识库模式"
  3. 选择知识库:[知识库名称]
  4. 点击:"全文阅读"模式
  5. 结果 报错"加载文档选择失败"

Console错误

Failed to load document selection: TypeError: Cannot read properties of undefined (reading 'maxFiles')
    at loadFullTextData (ChatPage.tsx:76:35)

修复方案

  • 修改了 frontend/src/api/knowledgeBaseApi.ts
  • return response.data 改为 return response.data.data

验证计划

  • 重启Frontend服务
  • 重新执行测试步骤
  • 验证能正常显示容量指示器

问题2全文阅读模式无法找到对话输入框 🔴

严重等级🔴 严重(阻断性)
状态 已修复

详细信息:见 问题清单.md - 问题2

测试步骤

  1. 修复问题1后重新测试全文阅读模式
  2. 页面能显示容量指示器和文献列表
  3. 结果 找不到对话输入框无法与AI交流

问题原因

  • FullTextMode组件缺少外层flex容器
  • 导致组件高度塌缩,输入框不可见

修复方案

  • 修改了 frontend/src/pages/ChatPage.tsx 第294-305行
  • 为FullTextMode添加外层flex容器<div style={{ flex: 1, display: 'flex', flexDirection: 'column', overflow: 'hidden' }}>
  • 同时对逐篇精读模式应用相同修复

验证计划

  • 重启Frontend服务
  • 验证全文阅读模式能看到底部输入框
  • 验证逐篇精读模式能看到底部输入框

问题3逐篇精读模式React Hooks调用错误 🔴

严重等级🔴 严重(阻断性)
状态 已修复

详细信息:见 问题清单.md - 问题3

测试步骤

  1. 选择知识库 → 选择"逐篇精读"模式
  2. 在弹出的文献选择器中选择文献
  3. 点击"确认"按钮
  4. 结果 控制台报React Hooks错误

Console错误

Uncaught Error: Invalid hook call. Hooks can only be called inside of the body of a function component.
    at useDeepReadState (useDeepReadState.ts:10:43)
    at handleConfirmDocSelection (ChatPage.tsx:105:22)

问题原因

  • 违反React Hooks规则
  • 在事件处理器handleConfirmDocSelection中直接调用了useDeepReadState Hook
  • Hook只能在组件顶层调用

修复方案

  • 修改了 frontend/src/pages/ChatPage.tsx 多处:
    1. 第43-46行在组件顶层调用useDeepReadState([])
    2. 第104-118行使用Hook返回的updateSelectedDocs方法
    3. 全文替换所有deepReadStatedeepReadHook

验证计划

  • 重启Frontend服务
  • 验证逐篇精读模式能正常选择文献
  • 验证能进入精读模式并正常对话
  • 验证文献切换功能正常

问题4消息列表事件监听器错误 🔴

严重等级🔴 严重(阻断性)
状态 已修复

详细信息:见 问题清单.md - 问题4

测试步骤

  1. 修复问题1、2、3后重启测试
  2. 进入全文阅读模式
  3. 输入问题并点击发送
  4. 结果 页面卡住,控制台报错

Console错误

Uncaught TypeError: Cannot read properties of undefined (reading 'contains')
    at HTMLDocument.handleCitationMouseEnter (MessageList.tsx:71:28)

Uncaught TypeError: Cannot read properties of undefined (reading 'contains')
    at HTMLDocument.handleCitationMouseLeave (MessageList.tsx:79:28)

问题原因

  • MessageList的事件监听器绑定在document上
  • 鼠标事件的target可能是非Element节点
  • 直接访问classList.contains()导致错误

修复方案

  • 修改了 frontend/src/components/chat/MessageList.tsx
  • 在三个事件处理器中添加target.classList存在性检查
  • if (target.classList && target.classList.contains('citation-badge'))

验证计划

  • 重启Frontend服务
  • 全文阅读模式发送消息
  • 验证消息正常显示,不再卡住

问题5全文阅读模式Header占据过多空间 🔴

严重等级🔴 严重(阻断性)
状态 已修复

详细信息:见 问题清单.md - 问题5

测试步骤

  1. 修复前面问题后继续测试
  2. 进入全文阅读模式
  3. 结果 只能看到输入框和Header看不到聊天消息区域

问题原因

  • FullTextModeHeader包含容量指示器和已加载文献列表
  • 当文献很多时Header占据大部分屏幕空间
  • CSS没有限制Header的最大高度
  • 聊天消息区域被挤压,看不见

修复方案

  • 修改了 frontend/src/components/chat/FullTextModeHeader.css
  • 添加flex-shrink: 0(防止被压缩)
  • 添加max-height: 40vh最大高度为屏幕40%
  • 添加overflow-y: auto(超出部分滚动)

验证计划

  • 重启Frontend服务
  • 全文阅读模式发送消息
  • 验证Header不会占据过多空间
  • 验证能看到聊天消息
  • 验证文献列表如果太长会出现滚动条

测试结果

功能测试(部分完成)

功能模块 状态 备注
页面访问 通过 智能问答页面正常加载
模式选择 通过 知识库模式选择正常
知识库选择 通过 下拉列表正常显示
全文阅读-加载 已修复 问题1API数据结构已修复
全文阅读-布局 已修复 问题2输入框容器已修复
全文阅读-Header 已修复 问题5Header高度已修复
全文阅读-消息 已修复 问题4事件监听器已修复
逐篇精读-选择 已修复 问题3Hooks调用已修复
逐篇精读-布局 已修复 问题2输入框容器已修复
容量指示器 待验证 需重启验证修复效果
文献综述对话 待验证 需重启验证功能完整性
文献切换功能 待验证 需重启验证功能完整性

性能测试(未执行)

因功能问题未能执行性能测试


📝 测试笔记

测试流程

  1. 用户按照Phase 2快速测试清单开始测试
  2. 在"测试A全文阅读模式"步骤发现问题1API数据结构
  3. AI助手快速分析并修复问题1
  4. 用户继续测试发现问题2找不到输入框
  5. 同时发现问题3逐篇精读Hooks错误
  6. AI助手一次性修复问题2和问题3
  7. 更新测试记录和问题清单

问题分析过程

问题1API数据结构错误

  1. 查看Console错误Cannot read properties of undefined (reading 'maxFiles')
  2. 定位到ChatPage.tsx第76行
  3. 检查API返回数据结构
  4. 发现API层返回了多余的一层包装
  5. 修改knowledgeBaseApi.ts返回response.data.data

问题2布局容器缺失

  1. 用户反馈:能看到容量指示器但找不到输入框
  2. 检查FullTextMode组件结构
  3. 发现缺少外层flex容器
  4. 为FullTextMode添加flex容器包裹

问题3React Hooks错误

  1. 用户报错:Invalid hook call
  2. 定位到handleConfirmDocSelection函数
  3. 发现在事件处理器中调用了Hook
  4. 重构在组件顶层调用Hook事件处理器中使用Hook返回的方法

问题4DOM事件监听器错误

  1. 用户反馈:发送消息后页面卡住
  2. 查看Console错误Cannot read properties of undefined (reading 'contains')
  3. 定位到MessageList的事件处理器
  4. 发现没有检查target是否有classList属性
  5. 添加target.classList存在性检查

问题5Header占据过多空间

  1. 用户反馈:只能看到输入框,看不到聊天消息
  2. 检查FullTextMode布局结构
  3. 发现Header没有高度限制文献列表很长时占据大部分空间
  4. 添加max-height: 40vhoverflow-y: auto

经验教训

  1. API数据结构一致性很重要

    • Backend和Frontend对数据结构的理解要一致
    • 应该有明确的类型定义
  2. React基础规则必须严格遵守

    • Hooks只能在组件顶层调用
    • 违反规则会导致运行时错误
  3. 布局设计需要完整

    • Flex布局中子元素需要正确设置flex属性
    • 高度塌缩问题很隐蔽,容易遗漏
    • 容器需要设置高度限制,防止内容过多时挤占其他区域
  4. DOM事件处理需要防御性编程

    • 事件监听器绑定在document上时target可能是任何节点
    • 必须检查target的属性是否存在再使用
    • TypeScript的类型断言不能保证运行时安全
  5. 测试工具有效

    • 快速测试清单帮助快速发现问题
    • Console错误信息准确定位问题
    • 迭代测试能持续发现深层问题
  6. 问题修复流程完善

    • 从发现到修复约45分钟5个严重问题
    • 问题记录清晰完整
    • 修复后需要继续测试验证

🎯 下一步计划

立即行动(用户需执行)

  1. 重启Frontend服务

    # 在Frontend窗口
    Ctrl + C  # 停止当前服务
    npm run dev  # 重新启动
    
  2. 验证3个问题的修复

    • 问题1验证:全文阅读模式能正常加载,显示容量指示器
    • 问题2验证:全文阅读模式底部能看到对话输入框
    • 问题3验证:逐篇精读模式能正常选择文献并进入精读模式
  3. 继续完整测试

    • 完成全文阅读模式完整测试对话、引用、Token显示
    • 完成逐篇精读模式完整测试(文献切换、对话历史)
    • 测试端到端场景(文献综述 → 精读切换)
    • 测试文献切换功能

后续计划

  • 完成快速测试清单预计还需20分钟
  • 记录所有发现的问题
  • 做出验收决策

📊 测试进度

Phase 2测试进度约20%

✅ 已完成:
  - 环境准备
  - 页面基础功能
  - 发现1个严重问题并修复

⏳ 进行中:
  - 等待修复验证

⏸️ 待测试:
  - 全文阅读模式(剩余部分)
  - 逐篇精读模式
  - 端到端场景

🎊 测试评价

工具效果

  • 快速测试清单:有效,帮助快速发现问题
  • 问题记录模板:清晰,便于追踪
  • 修复流程:高效,问题快速解决

系统质量

  • ⚠️ 代码质量:存在数据结构访问错误
  • 错误提示Console错误信息准确
  • 功能完整性:待继续验证

建议

  1. 增加TypeScript类型定义减少运行时错误
  2. 增加API数据验证提前发现数据问题
  3. 在开发阶段进行更充分的自测

📞 联系信息

测试人员[用户]
问题报告:已创建问题清单文档
修复记录:已记录在问题清单中


测试状态⏸️ 暂停(等待修复验证)
下次测试:验证修复 + 继续完整测试


最后更新2025-10-13
维护者:测试团队