fix: preserve investigation execution history by round

This commit is contained in:
2026-10-30 17:07:53 +08:00
parent 1ee21d1c7f
commit 185bf31446
16 changed files with 830 additions and 32 deletions
+29 -2
View File
@@ -50,6 +50,7 @@ import { FeaturePopover } from "./components/feature-popover";
import { ScheduledConditionFeed } from "./components/scheduled-condition-feed";
import { TaskConversationReview } from "./components/task-conversation-review";
import type { InvestigationDiscussion } from "./api/investigation-report";
import { fetchOperationalTaskRuns, type TaskExecutionHistoryTarget } from "./api/operational-task-client";
import { WorkbenchAgentPanels } from "./components/workbench-agent-panels";
import { OperationalTimeline } from "./operational-timeline/operational-timeline";
import {
@@ -1013,6 +1014,29 @@ function MapWorkbenchContent({
openAgentPanelForViewport();
}
async function handleViewTaskExecutionHistory(
taskId: string,
target: TaskExecutionHistoryTarget,
knownRunId?: string
) {
mapController.clearScadaAnalysis();
let runId = knownRunId;
if (!runId) {
const runs = await fetchOperationalTaskRuns(taskId, getAccessToken);
runId = runs.find((run) => (target.executionGeneration == null
|| run.generation === target.executionGeneration)
&& run.agent_session_id === target.sessionId)?.run_id;
}
if (!runId) {
throw new Error(target.executionGeneration == null
? "所选历史报告没有匹配的执行记录。"
: `第 ${target.executionGeneration} 轮调查没有匹配的执行记录。`);
}
await agent.openTaskExecutionHistory(taskId, runId, target.sessionId);
readingWorkspace?.close();
openAgentPanelForViewport();
}
async function handleDeleteAgentHistorySession(sessionId: string) {
const clearsActiveAnalysis = sessionId === agent.sessionId;
const deleted = await agent.deleteHistorySession(sessionId);
@@ -1240,14 +1264,15 @@ function MapWorkbenchContent({
promptSuggestionsLoading: promptSuggestions.loading,
promptSuggestionsUnavailable: promptSuggestions.unavailable,
activeSessionId: agent.sessionId,
qaOnly: agent.sessionPurpose === "task_collaboration",
qaOnly: agent.sessionPurpose === "task_collaboration" || agent.sessionPurpose === "task_execution",
executionHistory: agent.sessionPurpose === "task_execution",
statusLabel: agent.statusLabel,
connectionStatus: agent.connectionStatus,
streaming: agent.streaming,
inputDelivery: agent.inputDelivery,
onInputDeliveryChange: agent.setInputDelivery,
pendingInputs: agent.pendingInputs,
interactionRequests: agent.interactionRequests,
interactionRequests: agent.sessionPurpose === "task_execution" ? undefined : agent.interactionRequests,
onPendingInputDeliveryChange: agent.updateInputDelivery,
onPendingInputEdit: (id) => agent.withdrawInput(id, true),
onPendingInputCancel: (id) => agent.withdrawInput(id, false),
@@ -1542,6 +1567,7 @@ function MapWorkbenchContent({
onLoadHistorySession={handleLoadAgentHistorySession}
onSubmitPrompt={agent.submitPrompt}
onOpenTaskCollaboration={handleOpenTaskCollaboration}
onViewTaskExecutionHistory={handleViewTaskExecutionHistory}
onTaskDecision={operationalTasks.decideAction}
onTaskExecute={operationalTasks.executeAction}
onTaskDraftUpdate={operationalTasks.updateWorkOrderDraft}
@@ -1699,6 +1725,7 @@ function MapWorkbenchContent({
onLoadHistorySession={handleLoadAgentHistorySession}
onSubmitPrompt={agent.submitPrompt}
onOpenTaskCollaboration={handleOpenTaskCollaboration}
onViewTaskExecutionHistory={handleViewTaskExecutionHistory}
onTaskDecision={operationalTasks.decideAction}
onTaskExecute={operationalTasks.executeAction}
onTaskDraftUpdate={operationalTasks.updateWorkOrderDraft}