ГЛОБАЛЬНЫЙ РЕФАКТОРИНГ АРХИТЕКТУРЫ - Рефакторинг этапов 2.30: вынос ветки tool_gate_skip + chat fallback из assistantService в отдельный runtime-адаптер, чтобы в сервисе остался только orchestration flow.
This commit is contained in:
@@ -0,0 +1,148 @@
|
||||
import type { AssistantMessageResponsePayload, AssistantReplyType } from "../types/assistant";
|
||||
import type { NormalizeResponsePayload, RouteHintSummary } from "../types/normalizer";
|
||||
import type { InvestigationStateWithProblemUnits } from "../types/stage2ProblemUnits";
|
||||
import {
|
||||
runAssistantDeepTurnPackagingRuntime,
|
||||
type AssistantDeepTurnPackagingRuntimeInput,
|
||||
type AssistantDeepTurnPackagingRuntimeOutput
|
||||
} from "./assistantDeepTurnPackagingRuntimeAdapter";
|
||||
import {
|
||||
finalizeAssistantDeepTurn,
|
||||
type FinalizeAssistantDeepTurnInput
|
||||
} from "./assistantDeepTurnFinalizeRuntimeAdapter";
|
||||
|
||||
type CompositionLike = {
|
||||
reply_type: AssistantReplyType;
|
||||
[key: string]: unknown;
|
||||
};
|
||||
|
||||
export interface RunAssistantDeepTurnResponseRuntimeInput {
|
||||
featureInvestigationStateV1: boolean;
|
||||
featureContractsV11: boolean;
|
||||
featureAnswerPolicyV11: boolean;
|
||||
sessionId: string;
|
||||
questionId: string;
|
||||
userMessage: string;
|
||||
normalized: {
|
||||
trace_id: string;
|
||||
prompt_version: string;
|
||||
schema_version: string;
|
||||
normalized: NormalizeResponsePayload["normalized"];
|
||||
};
|
||||
normalizedQuestion: string;
|
||||
routeSummary: RouteHintSummary | null;
|
||||
executionPlan: unknown[];
|
||||
requirementExtractionRequirements: unknown[];
|
||||
coverageEvaluationRequirements: unknown[];
|
||||
coverageReport: unknown;
|
||||
groundingCheck: unknown;
|
||||
retrievalCalls: unknown[];
|
||||
retrievalResultsRaw: unknown[];
|
||||
retrievalResults: unknown[];
|
||||
questionTypeClass: string;
|
||||
companyAnchors: unknown;
|
||||
runtimeAnalysisContext: unknown;
|
||||
businessScopeResolution: unknown;
|
||||
temporalGuard: unknown;
|
||||
polarityAudit: unknown;
|
||||
claimAnchorAudit: unknown;
|
||||
targetedEvidenceAudit: unknown;
|
||||
evidenceAdmissibilityGateAudit: unknown;
|
||||
rbpLiveRouteAudit: unknown;
|
||||
faLiveRouteAudit: unknown;
|
||||
groundedAnswerEligibilityGuard: unknown;
|
||||
followupStateUsage: unknown;
|
||||
followupApplied: boolean;
|
||||
composition: CompositionLike;
|
||||
previousInvestigationState: InvestigationStateWithProblemUnits | null | undefined;
|
||||
addressRuntimeMetaForDeep: unknown;
|
||||
extractDroppedIntentSegments: (normalizedPayload: NormalizeResponsePayload["normalized"]) => string[];
|
||||
buildDebugRoutes: (routeSummary: RouteHintSummary | null) => Array<Record<string, unknown>>;
|
||||
extractExecutionState: (normalizedPayload: NormalizeResponsePayload["normalized"]) => unknown[];
|
||||
sanitizeReply: (value: string, fallback?: string) => string;
|
||||
persistInvestigationState: (sessionId: string, snapshot: InvestigationStateWithProblemUnits) => void;
|
||||
messageIdFactory: () => string;
|
||||
appendItem: FinalizeAssistantDeepTurnInput["appendItem"];
|
||||
getSession: FinalizeAssistantDeepTurnInput["getSession"];
|
||||
persistSession: FinalizeAssistantDeepTurnInput["persistSession"];
|
||||
cloneConversation: FinalizeAssistantDeepTurnInput["cloneConversation"];
|
||||
logEvent: FinalizeAssistantDeepTurnInput["logEvent"];
|
||||
runPackagingRuntime?: (
|
||||
input: AssistantDeepTurnPackagingRuntimeInput
|
||||
) => AssistantDeepTurnPackagingRuntimeOutput;
|
||||
runFinalizeDeepTurn?: (input: FinalizeAssistantDeepTurnInput) => { response: AssistantMessageResponsePayload };
|
||||
}
|
||||
|
||||
export interface RunAssistantDeepTurnResponseRuntimeOutput {
|
||||
response: AssistantMessageResponsePayload;
|
||||
debug: Record<string, unknown>;
|
||||
}
|
||||
|
||||
export function runAssistantDeepTurnResponseRuntime(
|
||||
input: RunAssistantDeepTurnResponseRuntimeInput
|
||||
): RunAssistantDeepTurnResponseRuntimeOutput {
|
||||
const runPackagingRuntimeSafe = input.runPackagingRuntime ?? runAssistantDeepTurnPackagingRuntime;
|
||||
const runFinalizeDeepTurnSafe = input.runFinalizeDeepTurn ?? finalizeAssistantDeepTurn;
|
||||
|
||||
const packagingRuntime = runPackagingRuntimeSafe({
|
||||
featureInvestigationStateV1: input.featureInvestigationStateV1,
|
||||
sessionId: input.sessionId,
|
||||
questionId: input.questionId,
|
||||
userMessage: input.userMessage,
|
||||
normalized: input.normalized,
|
||||
normalizedQuestion: input.normalizedQuestion,
|
||||
routeSummary: input.routeSummary,
|
||||
executionPlan: input.executionPlan as any,
|
||||
requirementExtractionRequirements: input.requirementExtractionRequirements as any,
|
||||
coverageEvaluationRequirements: input.coverageEvaluationRequirements as any,
|
||||
coverageReport: input.coverageReport as any,
|
||||
groundingCheck: input.groundingCheck as any,
|
||||
retrievalCalls: input.retrievalCalls as any,
|
||||
retrievalResultsRaw: input.retrievalResultsRaw as any,
|
||||
retrievalResults: input.retrievalResults as any,
|
||||
questionTypeClass: input.questionTypeClass,
|
||||
companyAnchors: input.companyAnchors,
|
||||
runtimeAnalysisContext: input.runtimeAnalysisContext as any,
|
||||
businessScopeResolution: input.businessScopeResolution as any,
|
||||
temporalGuard: input.temporalGuard as any,
|
||||
polarityAudit: input.polarityAudit as any,
|
||||
claimAnchorAudit: input.claimAnchorAudit as any,
|
||||
targetedEvidenceAudit: input.targetedEvidenceAudit as any,
|
||||
evidenceAdmissibilityGateAudit: input.evidenceAdmissibilityGateAudit as any,
|
||||
rbpLiveRouteAudit: input.rbpLiveRouteAudit as any,
|
||||
faLiveRouteAudit: input.faLiveRouteAudit as any,
|
||||
groundedAnswerEligibilityGuard: input.groundedAnswerEligibilityGuard as any,
|
||||
followupStateUsage: input.followupStateUsage as any,
|
||||
followupApplied: input.followupApplied,
|
||||
composition: input.composition as any,
|
||||
featureContractsV11: input.featureContractsV11,
|
||||
featureAnswerPolicyV11: input.featureAnswerPolicyV11,
|
||||
previousInvestigationState: input.previousInvestigationState ?? null,
|
||||
addressRuntimeMetaForDeep: input.addressRuntimeMetaForDeep as any,
|
||||
extractDroppedIntentSegments: input.extractDroppedIntentSegments,
|
||||
buildDebugRoutes: input.buildDebugRoutes,
|
||||
extractExecutionState: input.extractExecutionState,
|
||||
sanitizeReply: input.sanitizeReply,
|
||||
persistInvestigationState: input.persistInvestigationState,
|
||||
messageIdFactory: input.messageIdFactory
|
||||
});
|
||||
|
||||
const finalization = runFinalizeDeepTurnSafe({
|
||||
sessionId: input.sessionId,
|
||||
assistantReply: packagingRuntime.safeAssistantReply,
|
||||
replyType: input.composition.reply_type,
|
||||
assistantItem: packagingRuntime.assistantItem,
|
||||
debug: packagingRuntime.debug,
|
||||
deepAnalysisLogDetails: packagingRuntime.deepAnalysisLogDetails,
|
||||
appendItem: input.appendItem,
|
||||
getSession: input.getSession,
|
||||
persistSession: input.persistSession,
|
||||
cloneConversation: input.cloneConversation,
|
||||
logEvent: input.logEvent
|
||||
});
|
||||
|
||||
return {
|
||||
response: finalization.response,
|
||||
debug: packagingRuntime.debug
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user