5.8 KiB
5.8 KiB
停止生成功能 - 快速验证清单
✅ 补充修复完成
修复内容
- ✅ 按钮文字从"确认"改为"发送"
- ✅ 停止后消息状态正确显示"已停止"而不是"发送中..."
🧪 快速验证步骤
1. 启动应用
cd web
npm run dev
2. 测试流程
1. 输入消息:"请详细介绍 Vue 3 的新特性"
2. 点击"发送"按钮 ← 确认按钮文字是"发送"
3. 等待 AI 开始回复(看到文字输出)
4. 立即点击"停止"按钮
5. 验证以下几点:
3. 验证检查点
✅ 按钮状态
- 未输入时:按钮显示"发送"且禁用
- 输入后:按钮显示"发送"且可用
- 发送中:按钮显示"停止"且为红色
- 停止后:按钮立即变回"发送"且可用
✅ 消息状态标签
- 发送中:显示蓝色"发送中..."标签
- 停止后:显示黄色"已停止"标签
- 不显示红色"发送失败"标签
✅ Loading 动画
- 发送中:显示三个跳动的点
... ... ... - 停止后:立即隐藏 loading 动画
- 停止后:显示已生成的文字内容
✅ 操作按钮
- 停止后立即显示:复制、重新生成、删除按钮
- 所有按钮都可点击
✅ 继续对话
- 停止后输入框立即可用
- 可以立即发送新消息
- 新消息正常发送和接收
📊 预期界面表现
发送中
┌─────────────────────────────────────┐
│ AI 助手 14:53 [发送中...] │
│ ... ... ... ← loading 动画 │
│ 正在生成的文字内容... │
└─────────────────────────────────────┘
[不启用 MCP] [模型选择] [停止] ← 红色按钮
停止后(正确)
┌─────────────────────────────────────┐
│ AI 助手 14:53 [已停止] ← 黄色 │
│ 已生成的文字内容(完整保留) │
│ [复制] [重新生成] [删除] │
└─────────────────────────────────────┘
[不启用 MCP] [模型选择] [发送] ← 蓝色按钮
如果还是错误(需要重新检查)
┌─────────────────────────────────────┐
│ AI 助手 14:53 [发送中...] ← ❌ │
│ ... ... ... ← ❌ 还在动 │
│ 已生成的文字内容 │
└─────────────────────────────────────┘
🔍 控制台日志验证
点击停止后,控制台应该按顺序显示:
// 1. 用户点击停止
🛑 [handleStopGeneration] 用户请求停止生成
// 2. 流读取检测到中止
🛑 [makeChatRequestStream] 检测到中止信号,停止读取流
// 3. API 层抛出中止错误
⚠️ [makeChatRequestStream] 请求被中止: 用户中止操作
// 4. Service 层识别并设置 paused 状态
⏸️ [sendMessageStream] 用户主动停止生成,保留已生成内容
// 5. Store 层更新 UI(新增的关键日志)
⏸️ [sendMessageStream] 用户中止,更新消息状态 ← ✅ 关键
如果缺少最后一条日志,说明 catch 块没有正确执行,需要检查代码。
🐛 常见问题排查
问题:停止后仍显示"发送中..."
可能原因 1:浏览器缓存
# 强制刷新页面
Cmd/Ctrl + Shift + R
# 或清除缓存后刷新
可能原因 2:代码未正确编译
# 重启开发服务器
cd web
npm run dev
可能原因 3:Vue DevTools 状态检查
// 在浏览器控制台运行
console.log(store.state.messages[store.state.messages.length - 1])
// 检查最后一条消息的 status 字段,应该是 'paused'
问题:按钮还是显示"确认"
检查:
- 确认 ChatLayout.vue 已保存
- 检查浏览器是否已刷新
- 查看编译输出是否有错误
问题:点击停止无反应
检查:
- 确认之前的修复都已应用
- 查看控制台是否有 JS 错误
- 检查 abortController 是否正确创建
📝 手动验证记录
测试日期:___________ 测试人员:___________
| 检查项 | 结果 | 备注 |
|---|---|---|
| 按钮文字显示"发送" | ⬜ | |
| 停止后标签变为"已停止" | ⬜ | |
| Loading 动画消失 | ⬜ | |
| 显示操作按钮 | ⬜ | |
| 可以继续对话 | ⬜ | |
| 控制台无错误 | ⬜ | |
| 多次重复测试正常 | ⬜ |
✨ 验收标准
所有以下条件必须满足:
- ✅ 按钮文字为"发送"(不是"确认")
- ✅ 停止后立即显示"已停止"标签(黄色)
- ✅ 不显示"发送中..."标签
- ✅ 不显示 loading 动画
- ✅ 显示已生成的内容
- ✅ 显示操作按钮
- ✅ 可以立即继续对话
- ✅ 控制台有完整的日志链
- ✅ 无任何错误日志
🎯 成功标准
如果看到以下效果,说明修复完全成功:
发送消息 → AI 开始回复
↓
点击停止
↓
瞬间响应 (< 100ms)
↓
┌─────────────────────────┐
│ [已停止] ← 黄色标签 │
│ 部分生成的内容... │
│ [复制] [重新生成] [删除] │
└─────────────────────────┘
↓
按钮变为"发送"
↓
可以立即输入新消息
如果验证通过,修复完成! ✅
如果验证失败,请查看 STOP_GENERATION_PATCH.md 进行详细排查。