Files
map-client-vue/STOP_GENERATION_VERIFY.md
2025-10-15 15:07:45 +08:00

5.8 KiB
Raw Blame History

停止生成功能 - 快速验证清单

补充修复完成

修复内容

  1. 按钮文字从"确认"改为"发送"
  2. 停止后消息状态正确显示"已停止"而不是"发送中..."

🧪 快速验证步骤

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

可能原因 3Vue DevTools 状态检查

// 在浏览器控制台运行
console.log(store.state.messages[store.state.messages.length - 1])
// 检查最后一条消息的 status 字段,应该是 'paused'

问题:按钮还是显示"确认"

检查

  1. 确认 ChatLayout.vue 已保存
  2. 检查浏览器是否已刷新
  3. 查看编译输出是否有错误

问题:点击停止无反应

检查

  1. 确认之前的修复都已应用
  2. 查看控制台是否有 JS 错误
  3. 检查 abortController 是否正确创建

📝 手动验证记录

测试日期___________ 测试人员___________

检查项 结果 备注
按钮文字显示"发送"
停止后标签变为"已停止"
Loading 动画消失
显示操作按钮
可以继续对话
控制台无错误
多次重复测试正常

验收标准

所有以下条件必须满足:

  1. 按钮文字为"发送"(不是"确认"
  2. 停止后立即显示"已停止"标签(黄色)
  3. 不显示"发送中..."标签
  4. 不显示 loading 动画
  5. 显示已生成的内容
  6. 显示操作按钮
  7. 可以立即继续对话
  8. 控制台有完整的日志链
  9. 无任何错误日志

🎯 成功标准

如果看到以下效果,说明修复完全成功:

发送消息 → AI 开始回复
         ↓
     点击停止
         ↓
    瞬间响应 (< 100ms)
         ↓
┌─────────────────────────┐
│ [已停止] ← 黄色标签     │
│ 部分生成的内容...       │
│ [复制] [重新生成] [删除] │
└─────────────────────────┘
         ↓
     按钮变为"发送"
         ↓
    可以立即输入新消息

如果验证通过,修复完成!

如果验证失败,请查看 STOP_GENERATION_PATCH.md 进行详细排查。