From 4e06d081068077a68f678e26fbd93699812dca6a Mon Sep 17 00:00:00 2001 From: Roe-xin Date: Fri, 20 Mar 2026 18:26:14 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E4=BC=98=E5=8C=96=E4=BC=9A=E8=AF=9D?= =?UTF-8?q?=E5=8E=86=E5=8F=B2=E4=B8=AD=E5=B7=A5=E5=85=B7=E6=89=A7=E8=A1=8C?= =?UTF-8?q?=E8=AF=B7=E6=B1=82=E7=9A=84=E5=A4=84=E7=90=86=E9=80=BB=E8=BE=91?= =?UTF-8?q?=20-=20=E5=AE=9E=E7=8E=B0=E5=B7=A5=E5=85=B7=E6=89=A7=E8=A1=8C?= =?UTF-8?q?=E8=AF=B7=E6=B1=82=E7=9A=84=E6=A3=80=E6=B5=8B=E5=92=8C=E5=A4=84?= =?UTF-8?q?=E7=90=86=20-=20=E5=85=B3=E8=81=94=E5=B7=A5=E5=85=B7=E6=89=A7?= =?UTF-8?q?=E8=A1=8C=E7=BB=93=E6=9E=9C=E4=B8=8E=E8=AF=B7=E6=B1=82=20-=20?= =?UTF-8?q?=E8=B7=B3=E8=BF=87=E5=B7=B2=E5=A4=84=E7=90=86=E7=9A=84=E5=B7=A5?= =?UTF-8?q?=E5=85=B7=E6=89=A7=E8=A1=8C=E7=BB=93=E6=9E=9C=E6=B6=88=E6=81=AF?= =?UTF-8?q?=20-=20=E6=9E=84=E5=BB=BA=E5=8C=85=E5=90=AB=E5=B7=A5=E5=85=B7?= =?UTF-8?q?=E6=89=A7=E8=A1=8C=E4=BF=A1=E6=81=AF=E7=9A=84segments?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/config/settings.ts | 6 +++--- src/services/dialogService.ts | 27 +++++++++++++++++++++++++++ src/views/segmentRenderer.ts | 6 ++++-- src/views/webviewContent.ts | 3 +++ 4 files changed, 37 insertions(+), 5 deletions(-) diff --git a/src/config/settings.ts b/src/config/settings.ts index 170ddf7..56d0534 100644 --- a/src/config/settings.ts +++ b/src/config/settings.ts @@ -42,9 +42,9 @@ const ENV_CONFIG: Record = { }, /** 测试服务器环境 - 通过 Gateway 路由 */ test: { - backendUrl: "http://192.168.1.108:2029/iccoder", - backendUrlStrongeLoop: "http://192.168.1.108:2029", - loginUrl: "http://192.168.1.108:2005/login", + backendUrl: "http://192.168.1.134:2233", + backendUrlStrongeLoop: "http://192.168.1.134:2233", + loginUrl: "http://192.168.1.134/login", timeout: 60000, userId: "default-user", serviceTier: "max", diff --git a/src/services/dialogService.ts b/src/services/dialogService.ts index 1306262..0819d46 100644 --- a/src/services/dialogService.ts +++ b/src/services/dialogService.ts @@ -45,6 +45,8 @@ export interface MessageSegment { toolDescription?: string; askId?: string; questions?: import("../types/api").QuestionItem[]; + answered?: boolean; + answers?: { [questionIndex: string]: string[] }; // 智能体相关字段 agentId?: string; agentName?: string; @@ -1125,6 +1127,7 @@ export class DialogSession { // 直接调用 receiveAnswer,传递 taskId 作为 fallbackTaskId // 如果 pendingQuestions 中有问题,走正常流程 // 如果没有,receiveAnswer 会使用 fallbackTaskId 直接发送到后端 + this.markQuestionAnswered(askId, selected, customInput, answers); await userInteractionManager.receiveAnswer( askId, selected, @@ -1133,6 +1136,30 @@ export class DialogSession { this.taskId ); } + + private markQuestionAnswered( + askId: string, + selected?: string[], + customInput?: string, + answers?: { [questionIndex: string]: string[] } + ): void { + const normalizedAnswers = + answers && Object.keys(answers).length > 0 + ? answers + : { "0": customInput ? [customInput] : selected || [] }; + + for (let i = this.segments.length - 1; i >= 0; i--) { + const segment = this.segments[i]; + if ( + segment.askId === askId && + (segment.type === "question" || segment.type === "plan") + ) { + segment.answered = true; + segment.answers = normalizedAnswers; + break; + } + } + } } /** diff --git a/src/views/segmentRenderer.ts b/src/views/segmentRenderer.ts index 171aeef..90bfe30 100644 --- a/src/views/segmentRenderer.ts +++ b/src/views/segmentRenderer.ts @@ -147,8 +147,10 @@ export function getSegmentRendererScript(): string { options: segment.options || [], multiSelect: false }] : []); - const isAnswered = answeredQuestions.has(segment.askId); - const savedAnswers = answeredQuestions.get(segment.askId) || {}; + const segmentAnswers = segment.answers || {}; + const runtimeAnswers = answeredQuestions.get(segment.askId) || {}; + const savedAnswers = Object.keys(segmentAnswers).length > 0 ? segmentAnswers : runtimeAnswers; + const isAnswered = segment.answered === true || answeredQuestions.has(segment.askId); if (isAnswered) { segmentDiv.classList.add('answered'); } diff --git a/src/views/webviewContent.ts b/src/views/webviewContent.ts index 6c8ca49..b91c21a 100644 --- a/src/views/webviewContent.ts +++ b/src/views/webviewContent.ts @@ -894,6 +894,9 @@ export function getWebviewContent( if (messagesContainer) { messagesContainer.innerHTML = ''; } + if (typeof answeredQuestions !== 'undefined' && answeredQuestions.clear) { + answeredQuestions.clear(); + } // 重置输入框布局到居中 if (typeof window.resetInputAreaLayout === 'function') { window.resetInputAreaLayout();