NODEDC_1C/llm_normalizer/backend/src/services/assistantInvestigationState...

56 lines
2.0 KiB
TypeScript

import type { AssistantReplyType, AssistantRequirement, RequirementCoverageReport, UnifiedRetrievalResult } from "../types/assistant";
import type { RouteHintSummary } from "../types/normalizer";
import type { InvestigationStateWithProblemUnits } from "../types/stage2ProblemUnits";
import { updateInvestigationState } from "./investigationState";
export interface BuildAssistantInvestigationStateSnapshotInput {
featureEnabled: boolean;
previousState: InvestigationStateWithProblemUnits | null | undefined;
timestamp: string;
questionId: string;
userMessage: string;
routeSummary: RouteHintSummary | null;
requirements: AssistantRequirement[];
coverageReport: RequirementCoverageReport;
retrievalResults: UnifiedRetrievalResult[];
replyType: AssistantReplyType;
followupApplied: boolean;
}
export function buildAssistantInvestigationStateSnapshot(
input: BuildAssistantInvestigationStateSnapshotInput
): InvestigationStateWithProblemUnits | null {
if (!input.featureEnabled || !input.previousState) {
return null;
}
return updateInvestigationState({
previous: input.previousState,
timestamp: input.timestamp,
questionId: input.questionId,
userMessage: input.userMessage,
routeSummary: input.routeSummary,
requirements: input.requirements,
coverageReport: input.coverageReport,
retrievalResults: input.retrievalResults,
replyType: input.replyType,
followupApplied: input.followupApplied
});
}
export interface PersistAssistantInvestigationStateSnapshotInput {
featureEnabled: boolean;
sessionId: string;
snapshot: InvestigationStateWithProblemUnits | null;
persist: (sessionId: string, snapshot: InvestigationStateWithProblemUnits) => void;
}
export function persistAssistantInvestigationStateSnapshot(
input: PersistAssistantInvestigationStateSnapshotInput
): boolean {
if (!input.featureEnabled || !input.snapshot) {
return false;
}
input.persist(input.sessionId, input.snapshot);
return true;
}