ГЛОБАЛЬНЫЙ РЕФАКТОРИНГ АРХИТЕКТУРЫ - Рефакторинг этапов 2.652.68 - сборка входов turn attempt в новый builder: assistantTurnAttemptInputBuilder.ts / адаптер на builder (убрал inline-сборку payload для address/deep): assistantTurnAttemptRuntimeAdapter.ts / сборку followupContext/options для address lane attempt в новый builder: assistantAddressLaneAttemptQueryOptionsBuilder.ts / адаптер на builder для query options: assistantAddressLaneAttemptRuntimeAdapter.ts

This commit is contained in:
2026-04-11 10:00:05 +03:00
parent 79b636bfe6
commit bf16309a29
11 changed files with 324 additions and 56 deletions
@@ -0,0 +1,28 @@
import type { RunAssistantAddressLaneAttemptRuntimeInput } from "./assistantAddressLaneAttemptRuntimeAdapter";
export function resolveAssistantAddressLaneAttemptFollowupContext(
carryMeta: RunAssistantAddressLaneAttemptRuntimeInput["carryMeta"]
): Record<string, unknown> | null {
return carryMeta?.followupContext && typeof carryMeta.followupContext === "object"
? (carryMeta.followupContext as Record<string, unknown>)
: null;
}
export interface BuildAssistantAddressLaneAttemptQueryOptionsInput {
analysisDateHint: RunAssistantAddressLaneAttemptRuntimeInput["analysisDateHint"];
scopedFollowupContext: Record<string, unknown> | null;
}
export function buildAssistantAddressLaneAttemptQueryOptions(
input: BuildAssistantAddressLaneAttemptQueryOptionsInput
): Parameters<RunAssistantAddressLaneAttemptRuntimeInput["runAddressQueryTryHandle"]>[1] {
if (input.scopedFollowupContext) {
return {
followupContext: input.scopedFollowupContext,
analysisDateHint: input.analysisDateHint
};
}
return {
analysisDateHint: input.analysisDateHint
};
}
@@ -1,5 +1,9 @@
import type { AssistantAddressLaneLike } from "./assistantAddressLaneRuntimeAdapter";
import type { AssistantAddressCarryoverLike } from "./assistantAddressOrchestrationRuntimeAdapter";
import {
buildAssistantAddressLaneAttemptQueryOptions,
resolveAssistantAddressLaneAttemptFollowupContext
} from "./assistantAddressLaneAttemptQueryOptionsBuilder";
export interface RunAssistantAddressLaneAttemptRuntimeInput {
messageUsed: string;
@@ -22,21 +26,16 @@ export interface RunAssistantAddressLaneAttemptRuntimeInput {
export async function runAssistantAddressLaneAttemptRuntime(
input: RunAssistantAddressLaneAttemptRuntimeInput
): Promise<AssistantAddressLaneLike | null> {
const followupContext =
input.carryMeta?.followupContext && typeof input.carryMeta.followupContext === "object"
? (input.carryMeta.followupContext as Record<string, unknown>)
: null;
const followupContext = resolveAssistantAddressLaneAttemptFollowupContext(input.carryMeta);
const scopedFollowupContext = input.mergeFollowupContextWithOrganizationScope(
followupContext,
input.activeOrganization
);
if (scopedFollowupContext) {
return input.runAddressQueryTryHandle(input.messageUsed, {
followupContext: scopedFollowupContext,
analysisDateHint: input.analysisDateHint
});
}
return input.runAddressQueryTryHandle(input.messageUsed, {
analysisDateHint: input.analysisDateHint
});
return input.runAddressQueryTryHandle(
input.messageUsed,
buildAssistantAddressLaneAttemptQueryOptions({
analysisDateHint: input.analysisDateHint,
scopedFollowupContext
})
);
}
@@ -0,0 +1,45 @@
import type {
RunAssistantTurnAttemptRuntimeAddressInput,
RunAssistantTurnAttemptRuntimeDeepInput,
AssistantSessionOrganizationScopeContext
} from "./assistantTurnAttemptRuntimeAdapter";
import type { RunAssistantUserTurnBootstrapRuntimeOutput } from "./assistantUserTurnBootstrapRuntimeAdapter";
export interface BuildAssistantTurnAttemptAddressRuntimeInputInput<PayloadType = unknown> {
payload: PayloadType;
userTurn: RunAssistantUserTurnBootstrapRuntimeOutput;
sessionOrganizationScope: AssistantSessionOrganizationScopeContext;
}
export function buildAssistantTurnAttemptAddressRuntimeInput<PayloadType = unknown>(
input: BuildAssistantTurnAttemptAddressRuntimeInputInput<PayloadType>
): RunAssistantTurnAttemptRuntimeAddressInput<PayloadType> {
return {
payload: input.payload,
sessionId: input.userTurn.sessionId,
userMessage: input.userTurn.userMessage,
sessionItems: input.userTurn.session.items,
runtimeAnalysisContext: input.userTurn.runtimeAnalysisContext,
sessionOrganizationScope: input.sessionOrganizationScope
};
}
export interface BuildAssistantTurnAttemptDeepRuntimeInputInput<PayloadType = unknown> {
payload: PayloadType;
userTurn: RunAssistantUserTurnBootstrapRuntimeOutput;
addressRuntimeMetaForDeep: Record<string, unknown> | null;
}
export function buildAssistantTurnAttemptDeepRuntimeInput<PayloadType = unknown>(
input: BuildAssistantTurnAttemptDeepRuntimeInputInput<PayloadType>
): RunAssistantTurnAttemptRuntimeDeepInput<PayloadType> {
return {
payload: input.payload,
sessionId: input.userTurn.sessionId,
questionId: input.userTurn.userItem.message_id,
userMessage: input.userTurn.userMessage,
runtimeAnalysisContext: input.userTurn.runtimeAnalysisContext,
sessionInvestigationState: input.userTurn.session.investigation_state,
addressRuntimeMetaForDeep: input.addressRuntimeMetaForDeep
};
}
@@ -1,5 +1,9 @@
import type { RunAssistantAddressRuntimeOutput } from "./assistantAddressRuntimeAdapter";
import type { RunAssistantUserTurnBootstrapRuntimeOutput } from "./assistantUserTurnBootstrapRuntimeAdapter";
import {
buildAssistantTurnAttemptAddressRuntimeInput,
buildAssistantTurnAttemptDeepRuntimeInput
} from "./assistantTurnAttemptInputBuilder";
export interface AssistantSessionOrganizationScopeContext {
knownOrganizations: string[];
@@ -57,14 +61,13 @@ export async function runAssistantTurnAttemptRuntime<ResponseType = unknown, Pay
userTurn.userMessage,
userTurn.session.items
);
const addressRuntime = await input.runAddressAttemptRuntime({
payload: input.payload,
sessionId: userTurn.sessionId,
userMessage: userTurn.userMessage,
sessionItems: userTurn.session.items,
runtimeAnalysisContext: userTurn.runtimeAnalysisContext,
sessionOrganizationScope
});
const addressRuntime = await input.runAddressAttemptRuntime(
buildAssistantTurnAttemptAddressRuntimeInput({
payload: input.payload,
userTurn,
sessionOrganizationScope
})
);
const addressRuntimeMetaForDeep = addressRuntime.addressRuntimeMetaForDeep ?? null;
if (addressRuntime.handled && addressRuntime.response) {
@@ -77,15 +80,13 @@ export async function runAssistantTurnAttemptRuntime<ResponseType = unknown, Pay
};
}
const deepTurnRuntime = await input.runDeepTurnAttemptRuntime({
payload: input.payload,
sessionId: userTurn.sessionId,
questionId: userTurn.userItem.message_id,
userMessage: userTurn.userMessage,
runtimeAnalysisContext: userTurn.runtimeAnalysisContext,
sessionInvestigationState: userTurn.session.investigation_state,
addressRuntimeMetaForDeep
});
const deepTurnRuntime = await input.runDeepTurnAttemptRuntime(
buildAssistantTurnAttemptDeepRuntimeInput({
payload: input.payload,
userTurn,
addressRuntimeMetaForDeep
})
);
return {
response: deepTurnRuntime.response,