界面隐显后继续流式输出;优化中断逻辑

This commit is contained in:
2026-08-06 08:52:06 +08:00
parent b4e69802c0
commit add3802d62
2 changed files with 61 additions and 35 deletions

View File

@@ -1418,13 +1418,14 @@ import { openFile as openFileNative, downloadAndOpen } from '@/utils/fileOpener.
streamingMessageId.value = null
}
// 立即关闭弹窗,清除超时
// clearTimeout(aiResponseTimer)
isThinking.value = false
socketStore.isThinking = false
isSelfSent.value = false
textMessage.value = ''
uploadedFiles.value = []
// takeConversationMessages 由后端中断确认驱动(见 handleBusinessMessage
// 中断后刷新消息列表,获取服务端最终状态
await takeConversationMessages()
// await takeUserConversations()
uni.showToast({
title: '已中断',
icon: 'none',
@@ -1982,10 +1983,23 @@ import { openFile as openFileNative, downloadAndOpen } from '@/utils/fileOpener.
if (chatType === 0) {
await takeUserConversations();
// 只有在会话ID存在时才获取消息
// 如果正在流式输出,跳过重新加载消息列表,避免打断流式输出
if (currentSessionId.value) {
isLoadingMessages.value = true
takeConversationMessages();
if (socketStore.isThinking) {
// 流式输出中:不刷新消息,但确保消息列表中包含流式气泡
// 如果流式气泡因某些原因丢失,重新创建
if (streamingMessageId.value && !allmessages.value.some(m => m._id === streamingMessageId.value)) {
allmessages.value = [...allmessages.value, {
role: 'assistant',
content: socketStore.messageString || '',
_streaming: true,
_id: streamingMessageId.value
}]
}
} else {
isLoadingMessages.value = true
takeConversationMessages();
}
}
// AI 对话页面:主动建立 socket 连接,确保消息实时推送
if (userToken.value && currentSessionId.value && !socketStore.isConnected) {