# V2 Database Service 手动测试用例 ## 准备工作 ```javascript // 1. 打开浏览器控制台,启用V2功能 localStorage.setItem('featureFlags', JSON.stringify({ USE_UNIFIED_DB_SERVICE: true })) location.reload() // 2. 确认功能已启用 JSON.parse(localStorage.getItem('featureFlags') || '{}') // 应该看到: { USE_UNIFIED_DB_SERVICE: true } ``` ## 测试场景一:基础聊天功能 ✅ ### 1.1 消息发送与保存 **测试功能**: `saveMessageAndBlocksToDBV2`, `updateBlocksV2` 1. 创建新的聊天会话 2. 发送消息:"你好,请介绍一下React Hooks的使用" 3. 等待助手回复完成 4. 刷新页面 5. **验证**: 消息应该被正确保存并重新加载 ### 1.2 消息加载(已测试稳定) **测试功能**: `loadTopicMessagesThunkV2` 1. 切换到其他会话 2. 再切换回刚才的会话 3. **验证**: 消息应该立即加载,无需等待 ### 1.3 实时流式更新 **测试功能**: `updateSingleBlockV2` (throttled updates) 1. 发送一个需要较长回复的问题:"请详细解释JavaScript的事件循环机制" 2. 观察助手回复时的流式更新 3. **验证**: 文字应该平滑流式显示,没有卡顿或丢失 ## 测试场景二:消息编辑与删除 🗑️ ### 2.1 删除单条消息 **测试功能**: `deleteMessageFromDBV2` 1. 在现有会话中,右键点击任意一条消息 2. 选择"删除" 3. 刷新页面 4. **验证**: 被删除的消息不应再出现 ### 2.2 删除消息组(用户问题+助手回答) **测试功能**: `deleteMessagesFromDBV2` 1. 找到一组问答(用户提问+助手回答) 2. 删除整组对话 3. **验证**: 用户消息和对应的助手回答都被删除 ### 2.3 清空会话 **测试功能**: `clearMessagesFromDBV2` 1. 在一个有多条消息的会话中 2. 使用"清空会话"功能 3. 刷新页面 4. **验证**: 会话应该为空,但会话本身还存在 ## 测试场景三:文件和图片处理 📎 ### 3.1 上传图片 **测试功能**: `saveMessageAndBlocksToDBV2`, `updateFileCountV2` 1. 在输入框中上传一张图片 2. 添加文字:"这张图片是什么内容?" 3. 发送消息 4. 刷新页面 5. **验证**: 图片应该正确显示,文件引用计数正确 ### 3.2 上传文件 **测试功能**: `bulkAddBlocksV2` 1. 上传一个文本文件或PDF 2. 发送消息询问文件内容 3. **验证**: 文件应该被正确处理和显示 ### 3.3 复制带图片的消息到新会话 **测试功能**: `bulkAddBlocksV2`, `updateFileCountV2` 1. 选择包含图片的消息 2. 复制到新的会话 3. **验证**: 图片在新会话中正确显示,文件引用计数增加 ## 测试场景四:Agent Session 功能 🤖 ### 4.1 Agent会话消息加载 **测试功能**: `loadTopicMessagesThunkV2` (agent-session分支) 1. 创建或打开一个Agent会话 2. 发送消息给Agent 3. 切换到其他会话再切回 4. **验证**: Agent会话消息正确加载 ### 4.2 Agent会话消息持久化 🔥 (已修复) **测试功能**: `saveMessageAndBlocksToDBV2` → `AgentMessageDataSource.appendMessage` 1. 在Agent会话中发送消息 2. **立即切换到其他会话**(不等待响应完成) 3. 切回Agent会话 4. **验证**: 用户消息应该已保存并显示 5. 等待Agent响应完成 6. 刷新页面 7. **验证**: 完整对话正确保存 ### 4.3 Agent会话清空(应该无操作) **测试功能**: `clearMessagesFromDBV2` (agent no-op) 1. 尝试清空Agent会话 2. **验证**: 操作应该被正确处理(可能显示不支持或静默处理) ## 测试场景五:高级功能 🚀 ### 5.1 消息重新生成 **测试功能**: `updateMessageV2`, `updateBlocksV2` 1. 选择一条助手回复 2. 点击"重新生成" 3. **验证**: 原消息被重置,新回复正常生成 ### 5.2 消息分支 **测试功能**: `saveMessageAndBlocksToDBV2` 1. 选择一条用户消息 2. 创建分支并输入不同的问题 3. **验证**: 分支正确创建,两个分支独立存在 ### 5.3 翻译功能 **测试功能**: `updateSingleBlockV2` 1. 选择一条消息 2. 点击翻译按钮 3. **验证**: 翻译块正确创建和更新 ### 5.4 多模型响应 **测试功能**: `saveMessageAndBlocksToDBV2`, `updateBlocksV2` 1. 启用多模型功能 2. 发送一个问题 3. **验证**: 多个模型的响应都正确保存 ## 测试场景六:并发和性能 ⚡ ### 6.1 快速切换会话 **测试功能**: `loadTopicMessagesThunkV2` 1. 快速在多个会话间切换 2. **验证**: 消息加载无错误,无内存泄漏 ### 6.2 大量消息处理 **测试功能**: 所有V2函数 1. 在一个会话中累积50+条消息 2. 执行各种操作(删除、编辑、刷新) 3. **验证**: 性能无明显下降 ### 6.3 同时操作 1. 在流式回复过程中切换会话 2. 在文件上传过程中发送新消息 3. **验证**: 操作不冲突,数据一致 ## 测试场景七:错误处理 ⚠️ ### 7.1 网络中断恢复 1. 发送消息 2. 在回复过程中断网 3. 恢复网络 4. **验证**: 消息状态正确,可以重试 ### 7.2 异常数据处理 1. 尝试删除不存在的消息(通过控制台) 2. **验证**: 错误被优雅处理,不崩溃 ## 测试检查清单 ### 功能验证 - [x] 普通聊天消息发送/接收 - [ ] Agent会话消息发送/接收 - [x] 消息删除(单个/批量/清空) - [x] 文件/图片上传和显示 - [x] 消息编辑和更新 - [x] 流式响应更新 - [x] 消息重新生成 - [x] 分支创建 - [x] 翻译功能 ### 数据一致性 - [x] 刷新后数据保持一致 - [x] 切换会话数据正确 - [x] 文件引用计数正确 - [ ] Agent会话数据隔离 ### 性能表现 - [x] 消息加载速度正常 - [x] 流式更新流畅 - [x] 大量数据处理正常 - [x] 内存使用合理 ### 错误处理 - [x] 网络错误处理正确 - [x] 异常操作不崩溃 - [x] 错误信息清晰 ## 回滚测试 完成所有测试后,验证回滚功能: ```javascript // 禁用V2功能 localStorage.setItem('featureFlags', JSON.stringify({ USE_UNIFIED_DB_SERVICE: false })) location.reload() // 验证切换回原实现后一切正常 ``` ## 问题记录 如果发现问题,请记录: 1. 测试场景编号 2. 具体操作步骤 3. 预期结果 4. 实际结果 5. 浏览器控制台错误信息(如有) --- **提示**: 建议按顺序执行测试,每个大场景可以单独测试。重点关注数据一致性和错误处理。