ГЛОБАЛЬНЫЙ РЕФАКТОРИНГ АРХИТЕКТУРЫ - Рефакторинг этапов 2.45 - объединены три выделенных слоя (NormalizationAttempt + AnalysisAttempt + ResponseAttempt) в один assistantDeepTurnAttemptRuntimeAdapter, после чего в handleMessage остался один вызов вместо трёх
This commit is contained in:
@@ -0,0 +1,174 @@
|
||||
import type { AssistantMessageResponsePayload } from "../types/assistant";
|
||||
import type { InvestigationStateWithProblemUnits } from "../types/stage2ProblemUnits";
|
||||
import {
|
||||
buildAssistantDeepTurnNormalizationRuntime,
|
||||
type BuildAssistantDeepTurnNormalizationRuntimeInput,
|
||||
type BuildAssistantDeepTurnNormalizationRuntimeOutput
|
||||
} from "./assistantDeepTurnNormalizationRuntimeAdapter";
|
||||
import {
|
||||
runAssistantDeepTurnAnalysisAttemptRuntime,
|
||||
type RunAssistantDeepTurnAnalysisAttemptRuntimeInput
|
||||
} from "./assistantDeepTurnAnalysisAttemptRuntimeAdapter";
|
||||
import {
|
||||
runAssistantDeepTurnResponseAttemptRuntime,
|
||||
type RunAssistantDeepTurnResponseAttemptRuntimeInput
|
||||
} from "./assistantDeepTurnResponseAttemptRuntimeAdapter";
|
||||
import type { RunAssistantDeepTurnAnalysisRuntimeOutput } from "./assistantDeepTurnAnalysisRuntimeAdapter";
|
||||
|
||||
export interface RunAssistantDeepTurnAttemptRuntimeInput<ResponseType = AssistantMessageResponsePayload> {
|
||||
sessionId: string;
|
||||
questionId: string;
|
||||
userMessage: string;
|
||||
payload: BuildAssistantDeepTurnNormalizationRuntimeInput["payload"];
|
||||
runtimeAnalysisContext: RunAssistantDeepTurnAnalysisAttemptRuntimeInput["runtimeAnalysisContext"];
|
||||
sessionInvestigationState: InvestigationStateWithProblemUnits | null | undefined;
|
||||
addressRuntimeMetaForDeep: unknown;
|
||||
featureInvestigationStateV1: boolean;
|
||||
featureStateFollowupBindingV1: boolean;
|
||||
featureContractsV11: boolean;
|
||||
featureAnswerPolicyV11: boolean;
|
||||
featureProblemCentricAnswerV1: boolean;
|
||||
featureLifecycleAnswerV1: boolean;
|
||||
buildFollowupStateBinding: BuildAssistantDeepTurnNormalizationRuntimeInput["buildFollowupStateBinding"];
|
||||
normalize: BuildAssistantDeepTurnNormalizationRuntimeInput["normalize"];
|
||||
resolveBusinessScopeAlignment: RunAssistantDeepTurnAnalysisAttemptRuntimeInput["resolveBusinessScopeAlignment"];
|
||||
inferP0DomainFromMessage: RunAssistantDeepTurnAnalysisAttemptRuntimeInput["inferP0DomainFromMessage"];
|
||||
resolveBusinessScopeFromLiveContext: RunAssistantDeepTurnAnalysisAttemptRuntimeInput["resolveBusinessScopeFromLiveContext"];
|
||||
extractRequirements: RunAssistantDeepTurnAnalysisAttemptRuntimeInput["extractRequirements"];
|
||||
toExecutionPlan: RunAssistantDeepTurnAnalysisAttemptRuntimeInput["toExecutionPlan"];
|
||||
enforceRbpLiveRoutePlan: RunAssistantDeepTurnAnalysisAttemptRuntimeInput["enforceRbpLiveRoutePlan"];
|
||||
enforceFaLiveRoutePlan: RunAssistantDeepTurnAnalysisAttemptRuntimeInput["enforceFaLiveRoutePlan"];
|
||||
executeRouteRuntime: RunAssistantDeepTurnAnalysisAttemptRuntimeInput["executeRouteRuntime"];
|
||||
mapNoRouteReason: RunAssistantDeepTurnAnalysisAttemptRuntimeInput["mapNoRouteReason"];
|
||||
buildSkippedResult: RunAssistantDeepTurnAnalysisAttemptRuntimeInput["buildSkippedResult"];
|
||||
evaluateCoverage: RunAssistantDeepTurnAnalysisAttemptRuntimeInput["evaluateCoverage"];
|
||||
checkGrounding: RunAssistantDeepTurnAnalysisAttemptRuntimeInput["checkGrounding"];
|
||||
collectRbpLiveRouteAudit: RunAssistantDeepTurnAnalysisAttemptRuntimeInput["collectRbpLiveRouteAudit"];
|
||||
collectFaLiveRouteAudit: RunAssistantDeepTurnAnalysisAttemptRuntimeInput["collectFaLiveRouteAudit"];
|
||||
hasExplicitPeriodAnchor: RunAssistantDeepTurnAnalysisAttemptRuntimeInput["hasExplicitPeriodAnchor"];
|
||||
extractDroppedIntentSegments: RunAssistantDeepTurnResponseAttemptRuntimeInput<ResponseType>["extractDroppedIntentSegments"];
|
||||
buildDebugRoutes: RunAssistantDeepTurnResponseAttemptRuntimeInput<ResponseType>["buildDebugRoutes"];
|
||||
extractExecutionState: RunAssistantDeepTurnResponseAttemptRuntimeInput<ResponseType>["extractExecutionState"];
|
||||
sanitizeReply: RunAssistantDeepTurnResponseAttemptRuntimeInput<ResponseType>["sanitizeReply"];
|
||||
persistInvestigationState: RunAssistantDeepTurnResponseAttemptRuntimeInput<ResponseType>["persistInvestigationState"];
|
||||
messageIdFactory: RunAssistantDeepTurnResponseAttemptRuntimeInput<ResponseType>["messageIdFactory"];
|
||||
appendItem: RunAssistantDeepTurnResponseAttemptRuntimeInput<ResponseType>["appendItem"];
|
||||
getSession: RunAssistantDeepTurnResponseAttemptRuntimeInput<ResponseType>["getSession"];
|
||||
persistSession: RunAssistantDeepTurnResponseAttemptRuntimeInput<ResponseType>["persistSession"];
|
||||
cloneConversation: RunAssistantDeepTurnResponseAttemptRuntimeInput<ResponseType>["cloneConversation"];
|
||||
logEvent: RunAssistantDeepTurnResponseAttemptRuntimeInput<ResponseType>["logEvent"];
|
||||
runPackagingRuntime?: RunAssistantDeepTurnResponseAttemptRuntimeInput<ResponseType>["runPackagingRuntime"];
|
||||
runFinalizeDeepTurn?: RunAssistantDeepTurnResponseAttemptRuntimeInput<ResponseType>["runFinalizeDeepTurn"];
|
||||
runDeepTurnNormalizationRuntime?: (
|
||||
input: BuildAssistantDeepTurnNormalizationRuntimeInput
|
||||
) => Promise<BuildAssistantDeepTurnNormalizationRuntimeOutput>;
|
||||
runDeepTurnAnalysisAttemptRuntime?: (
|
||||
input: RunAssistantDeepTurnAnalysisAttemptRuntimeInput
|
||||
) => Promise<RunAssistantDeepTurnAnalysisRuntimeOutput>;
|
||||
runDeepTurnResponseAttemptRuntime?: (
|
||||
input: RunAssistantDeepTurnResponseAttemptRuntimeInput<ResponseType>
|
||||
) => {
|
||||
response: ResponseType;
|
||||
debug: Record<string, unknown>;
|
||||
};
|
||||
}
|
||||
|
||||
export interface RunAssistantDeepTurnAttemptRuntimeOutput<ResponseType = AssistantMessageResponsePayload> {
|
||||
response: ResponseType;
|
||||
debug: Record<string, unknown>;
|
||||
normalizationRuntime: BuildAssistantDeepTurnNormalizationRuntimeOutput;
|
||||
deepTurnAnalysisRuntime: RunAssistantDeepTurnAnalysisRuntimeOutput;
|
||||
}
|
||||
|
||||
export async function runAssistantDeepTurnAttemptRuntime<ResponseType = AssistantMessageResponsePayload>(
|
||||
input: RunAssistantDeepTurnAttemptRuntimeInput<ResponseType>
|
||||
): Promise<RunAssistantDeepTurnAttemptRuntimeOutput<ResponseType>> {
|
||||
const runDeepTurnNormalizationRuntimeSafe =
|
||||
input.runDeepTurnNormalizationRuntime ?? buildAssistantDeepTurnNormalizationRuntime;
|
||||
const runDeepTurnAnalysisAttemptRuntimeSafe =
|
||||
input.runDeepTurnAnalysisAttemptRuntime ?? runAssistantDeepTurnAnalysisAttemptRuntime;
|
||||
const runDeepTurnResponseAttemptRuntimeSafe =
|
||||
input.runDeepTurnResponseAttemptRuntime ?? runAssistantDeepTurnResponseAttemptRuntime;
|
||||
|
||||
const normalizationRuntime = await runDeepTurnNormalizationRuntimeSafe({
|
||||
userMessage: input.userMessage,
|
||||
payload: input.payload,
|
||||
featureInvestigationStateV1: input.featureInvestigationStateV1,
|
||||
featureStateFollowupBindingV1: input.featureStateFollowupBindingV1,
|
||||
sessionInvestigationState: input.sessionInvestigationState,
|
||||
buildFollowupStateBinding: input.buildFollowupStateBinding,
|
||||
normalize: input.normalize
|
||||
});
|
||||
|
||||
const followupBinding = normalizationRuntime.followupBinding;
|
||||
const normalized = normalizationRuntime.normalized;
|
||||
|
||||
const deepTurnAnalysisRuntime = await runDeepTurnAnalysisAttemptRuntimeSafe({
|
||||
userMessage: input.userMessage,
|
||||
normalizedPayload: normalized.normalized,
|
||||
routeSummary: normalized.route_hint_summary,
|
||||
runtimeAnalysisContext: input.runtimeAnalysisContext,
|
||||
followupUsage: followupBinding.usage,
|
||||
investigationState: input.sessionInvestigationState,
|
||||
featureAnswerPolicyV11: input.featureAnswerPolicyV11,
|
||||
featureProblemCentricAnswerV1: input.featureProblemCentricAnswerV1,
|
||||
featureLifecycleAnswerV1: input.featureLifecycleAnswerV1,
|
||||
resolveBusinessScopeAlignment: input.resolveBusinessScopeAlignment,
|
||||
inferP0DomainFromMessage: input.inferP0DomainFromMessage,
|
||||
resolveBusinessScopeFromLiveContext: input.resolveBusinessScopeFromLiveContext,
|
||||
extractRequirements: input.extractRequirements,
|
||||
toExecutionPlan: input.toExecutionPlan,
|
||||
enforceRbpLiveRoutePlan: input.enforceRbpLiveRoutePlan,
|
||||
enforceFaLiveRoutePlan: input.enforceFaLiveRoutePlan,
|
||||
executeRouteRuntime: input.executeRouteRuntime,
|
||||
mapNoRouteReason: input.mapNoRouteReason,
|
||||
buildSkippedResult: input.buildSkippedResult,
|
||||
evaluateCoverage: input.evaluateCoverage,
|
||||
checkGrounding: input.checkGrounding,
|
||||
collectRbpLiveRouteAudit: input.collectRbpLiveRouteAudit,
|
||||
collectFaLiveRouteAudit: input.collectFaLiveRouteAudit,
|
||||
hasExplicitPeriodAnchor: input.hasExplicitPeriodAnchor
|
||||
});
|
||||
|
||||
const deepTurnResponseRuntime = runDeepTurnResponseAttemptRuntimeSafe({
|
||||
featureInvestigationStateV1: input.featureInvestigationStateV1,
|
||||
featureContractsV11: input.featureContractsV11,
|
||||
featureAnswerPolicyV11: input.featureAnswerPolicyV11,
|
||||
sessionId: input.sessionId,
|
||||
questionId: input.questionId,
|
||||
userMessage: input.userMessage,
|
||||
normalized: {
|
||||
trace_id: normalized.trace_id,
|
||||
prompt_version: normalized.prompt_version,
|
||||
schema_version: normalized.schema_version,
|
||||
normalized: normalized.normalized
|
||||
},
|
||||
normalizedQuestion: followupBinding.normalizedQuestion,
|
||||
deepTurnAnalysisRuntime,
|
||||
runtimeAnalysisContext: input.runtimeAnalysisContext,
|
||||
followupStateUsage: followupBinding.usage,
|
||||
followupApplied: Boolean((followupBinding.usage as { applied?: unknown } | null)?.applied),
|
||||
previousInvestigationState: input.sessionInvestigationState,
|
||||
addressRuntimeMetaForDeep: input.addressRuntimeMetaForDeep,
|
||||
extractDroppedIntentSegments: input.extractDroppedIntentSegments,
|
||||
buildDebugRoutes: input.buildDebugRoutes,
|
||||
extractExecutionState: input.extractExecutionState,
|
||||
sanitizeReply: input.sanitizeReply,
|
||||
persistInvestigationState: input.persistInvestigationState,
|
||||
messageIdFactory: input.messageIdFactory,
|
||||
appendItem: input.appendItem,
|
||||
getSession: input.getSession,
|
||||
persistSession: input.persistSession,
|
||||
cloneConversation: input.cloneConversation,
|
||||
logEvent: input.logEvent,
|
||||
runPackagingRuntime: input.runPackagingRuntime,
|
||||
runFinalizeDeepTurn: input.runFinalizeDeepTurn
|
||||
});
|
||||
|
||||
return {
|
||||
response: deepTurnResponseRuntime.response,
|
||||
debug: deepTurnResponseRuntime.debug,
|
||||
normalizationRuntime,
|
||||
deepTurnAnalysisRuntime
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user