59 lines
2.5 KiB
TypeScript
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, "Нужны уточнения для надежного ответа.")
|
|
};
|
|
}
|