fix: 修复SSE连接关闭后停止按钮不消失的问题

- 添加hasCompleted标志位跟踪complete事件
- onClose时检查并补充完成逻辑
- sendMessage时重置hasCompleted状态
This commit is contained in:
XiaoFeng
2026-01-10 16:45:48 +08:00
parent 15a1de3a90
commit 4a7af49fea

View File

@ -92,6 +92,7 @@ export class DialogSession {
private toolContext: ToolExecutorContext;
private accumulatedText = '';
private isActive = false;
private hasCompleted = false; // 标记是否已收到 complete 事件
private segments: MessageSegment[] = [];
private currentTextSegment: MessageSegment | null = null;
@ -331,6 +332,7 @@ export class DialogSession {
}
this.isActive = true;
this.hasCompleted = false; // 重置完成标志
this.accumulatedText = '';
this.segments = [];
this.currentTextSegment = null;
@ -686,6 +688,7 @@ export class DialogSession {
onComplete: (data) => {
this.isActive = false;
this.hasCompleted = true; // 标记已收到 complete 事件
this.finalizeTextSegment();
// 追踪 AI 消息(用于后端重启后恢复)
@ -807,6 +810,15 @@ export class DialogSession {
onClose: () => {
console.log('[DialogSession] SSE 连接已关闭');
// 如果没有收到 complete 事件,需要补充完成逻辑
if (!this.hasCompleted && this.isActive) {
console.log('[DialogSession] 未收到 complete 事件,补充完成处理');
this.finalizeTextSegment();
if (this.accumulatedText) {
historyManager.trackAiMessage(this.accumulatedText);
}
callbacks.onComplete?.(this.segments);
}
this.isActive = false;
}
};