@@ -161,21 +161,6 @@ export const useSocketStore = defineStore('socket', () => {
|
||||
// 调试日志:明确输出 type 和 data
|
||||
console.log(`[handleMessage] type = ${type}, data = ${JSON.stringify(data)}`);
|
||||
|
||||
const eventConversationId =
|
||||
conversation_id ||
|
||||
data?.conversation_id ||
|
||||
data?.page?.conversation?.conversation_id ||
|
||||
data?.page?.conversation?.id ||
|
||||
''
|
||||
if (
|
||||
eventConversationId &&
|
||||
config.value.conversationId &&
|
||||
String(eventConversationId) !== String(config.value.conversationId)
|
||||
) {
|
||||
addLog('info', `忽略非当前会话消息: ${eventConversationId}`)
|
||||
return
|
||||
}
|
||||
|
||||
switch (type) {
|
||||
case 'auth_ok':
|
||||
addLog('success', '连接成功')
|
||||
@@ -191,42 +176,6 @@ export const useSocketStore = defineStore('socket', () => {
|
||||
addLog('warn', 'AI成功收到用户发送的消息')
|
||||
break
|
||||
|
||||
case 'forbid_input':
|
||||
addLog('warn', '收到封框指令')
|
||||
isThinking.value = true
|
||||
break
|
||||
|
||||
case 'relieve_input':
|
||||
addLog('warn', '收到解框指令')
|
||||
isThinking.value = false
|
||||
break
|
||||
|
||||
case 'turn_status': {
|
||||
const status = String(messageData.status || data?.status || '').toLowerCase()
|
||||
if (status === 'locked') {
|
||||
addLog('warn', '后端确认程序封框')
|
||||
isThinking.value = true
|
||||
} else if (status === 'finished' || status === 'cancelled' || status === 'unlocked' || status === 'relieved') {
|
||||
addLog('warn', `后端确认当前轮结束/解框: ${status}`)
|
||||
isThinking.value = false
|
||||
}
|
||||
break
|
||||
}
|
||||
|
||||
case 'prompt':
|
||||
if ((messageData.info || data?.info) === '结束等待') {
|
||||
addLog('warn', '收到结束等待信号')
|
||||
isThinking.value = false
|
||||
}
|
||||
break
|
||||
|
||||
case 'refresh':
|
||||
if (messageData.page?.waiting === false || data?.page?.waiting === false) {
|
||||
addLog('warn', 'refresh 确认 waiting=false,释放输入框')
|
||||
isThinking.value = false
|
||||
}
|
||||
break
|
||||
|
||||
case 'render':
|
||||
addLog('warn', 'AI正在回复信息')
|
||||
handleBusinessMessage(data)
|
||||
@@ -234,8 +183,6 @@ export const useSocketStore = defineStore('socket', () => {
|
||||
|
||||
case 'pc_offline':
|
||||
addLog('warn', 'PC 端已离线')
|
||||
isThinking.value = false
|
||||
authFailReason.value = 'pc offline'
|
||||
break
|
||||
|
||||
default:
|
||||
@@ -282,46 +229,6 @@ export const useSocketStore = defineStore('socket', () => {
|
||||
// 处理 data 为对象的情况
|
||||
if (!data || typeof data !== 'object') return
|
||||
|
||||
const msgType = String(data.type || '').trim()
|
||||
if (msgType === 'forbid_input') {
|
||||
console.log("收到后端封框指令");
|
||||
isThinking.value = true
|
||||
return
|
||||
}
|
||||
if (msgType === 'relieve_input') {
|
||||
console.log("收到后端解框指令");
|
||||
isThinking.value = false
|
||||
return
|
||||
}
|
||||
|
||||
if (data.cmd === 'turn_status') {
|
||||
const status = String(data.status || '').toLowerCase()
|
||||
if (status === 'locked') {
|
||||
console.log("后端确认程序封框");
|
||||
isThinking.value = true
|
||||
return
|
||||
}
|
||||
if (status === 'finished' || status === 'cancelled' || status === 'unlocked' || status === 'relieved') {
|
||||
console.log("后端确认当前轮结束/解框:", status);
|
||||
isThinking.value = false
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
if (data.cmd === 'prompt' && data.info === '结束等待') {
|
||||
console.log("收到结束等待信号");
|
||||
isThinking.value = false
|
||||
return
|
||||
}
|
||||
|
||||
// refresh 也会在流式输出和工具中间消息落盘时出现,不能直接当成最终完成。
|
||||
// 只有后端明确 page.waiting=false 时,才作为漏发结束信号的兜底释放。
|
||||
if (data.cmd === 'refresh' && data.page?.waiting === false) {
|
||||
console.log("refresh 确认 waiting=false,释放输入框");
|
||||
isThinking.value = false
|
||||
return
|
||||
}
|
||||
|
||||
// 中断确认:后端返回 cmd=event_callback 表示中断成功
|
||||
if (data.cmd === 'event_callback' && data.info === '中断成功') {
|
||||
console.log("后端确认中断成功");
|
||||
@@ -396,4 +303,4 @@ export const useSocketStore = defineStore('socket', () => {
|
||||
clearLogs,
|
||||
getStatusText
|
||||
}
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user