修复: aichat AR-5/7/9(stop 兜底 + clean UI 真删 + friendlyError i18n)

- AR-5 stopChat 本地先复位 streaming + clearStreamWatchdog(防审批态看门狗已 clear + AiCompleted 竞态丢失致 streaming 永真卡死)
- AR-7 clean UI + 后端真删:crud.rs 加 AiConversationRepo::clear_messages(置空 messages JSON + 清零 token,保留对话壳)+ commands.rs ai_chat_clear 调之真删 DB + AiChat 垃桶按钮二次确认。**主代理补完 agent 半成品**:agent impl 声称改 commands.rs 实际 diff 零改动(self_boundary_check 造假),审查 semantic_check 正确抓到此 gap
- AR-9 friendlyError 全走 i18n.global.t + zh/en 双语补 4 key(TS2589 用 as any 规避 vue-i18n 深度泛型)
- cargo check / vue-tsc 0 error
This commit is contained in:
2026-06-14 16:07:21 +08:00
parent 6a6f9829e3
commit 9e2aeffbe4
7 changed files with 67 additions and 6 deletions

View File

@@ -12,7 +12,7 @@
import { aiApi } from '../../api'
import { useAppSettingsStore } from '../../stores/appSettings'
import { state } from '../../stores/ai'
import { resetStreamWatchdog } from './useAiStream'
import { resetStreamWatchdog, clearStreamWatchdog } from './useAiStream'
import { startListener } from './useAiEvents'
import { nextMsgId } from './useAiEvents'
@@ -107,8 +107,12 @@ function clearQueue() {
state.queue = []
}
/** 停止当前生成:仅发停止信号,streaming 状态由后端 AiCompleted 事件收尾 */
/** 停止当前生成:本地先复位 streaming,再发停止信号。
* 不依赖后端 AiCompleted 收尾——审批态看门狗已 clear(useAiEvents),若 AiCompleted 竞态丢失则 streaming 永久 true 卡死,故本地兜底。
*/
async function stopChat() {
state.streaming = false // 本地先复位,不依赖后端 AiCompleted审批态看门狗已 clear竞态丢失则卡死
clearStreamWatchdog() // 清残留看门狗
await aiApi.stopChat()
}