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();