NODEDC_1C/llm_normalizer/backend/src/services/assistantDeepTurnPrePackagi...

59 lines
2.5 KiB
TypeScript

import type { NormalizeResponsePayload, RouteHintSummary } from "../types/normalizer";
import type { AssistantDebugRouteRecord, AssistantExecutionStateRecord } from "../types/assistant";
export interface AssistantRuntimeAnalysisContextForPrePackaging {
active: boolean;
as_of_date: string | null;
period_from: string | null;
period_to: string | null;
source: string | null;
snapshot_mode: "auto" | "force_snapshot" | "force_live";
}
export interface AssistantAnalysisContextForContract {
as_of_date: string | null;
period_from: string | null;
period_to: string | null;
source: string | null;
snapshot_mode: "auto" | "force_snapshot" | "force_live";
}
export interface BuildAssistantDeepTurnPrePackagingContextInput {
normalizedPayload: NormalizeResponsePayload["normalized"];
routeSummary: RouteHintSummary | null;
runtimeAnalysisContext: AssistantRuntimeAnalysisContextForPrePackaging;
assistantReply: string;
extractDroppedIntentSegments: (normalizedPayload: NormalizeResponsePayload["normalized"]) => string[];
buildDebugRoutes: (routeSummary: RouteHintSummary | null) => AssistantDebugRouteRecord[];
extractExecutionState: (normalizedPayload: NormalizeResponsePayload["normalized"]) => AssistantExecutionStateRecord[];
sanitizeReply: (value: string, fallback?: string) => string;
}
export interface AssistantDeepTurnPrePackagingContext {
droppedIntentSegments: string[];
analysisContextForContract: AssistantAnalysisContextForContract | null;
routesForDebug: AssistantDebugRouteRecord[];
resolvedExecutionState: AssistantExecutionStateRecord[];
safeAssistantReplyBase: string;
}
export function buildAssistantDeepTurnPrePackagingContext(
input: BuildAssistantDeepTurnPrePackagingContextInput
): AssistantDeepTurnPrePackagingContext {
return {
droppedIntentSegments: input.extractDroppedIntentSegments(input.normalizedPayload),
analysisContextForContract: input.runtimeAnalysisContext.active
? {
as_of_date: input.runtimeAnalysisContext.as_of_date,
period_from: input.runtimeAnalysisContext.period_from,
period_to: input.runtimeAnalysisContext.period_to,
source: input.runtimeAnalysisContext.source,
snapshot_mode: input.runtimeAnalysisContext.snapshot_mode
}
: null,
routesForDebug: input.buildDebugRoutes(input.routeSummary),
resolvedExecutionState: input.extractExecutionState(input.normalizedPayload),
safeAssistantReplyBase: input.sanitizeReply(input.assistantReply, "Нужны уточнения для надежного ответа.")
};
}