ГЛОБАЛЬНЫЙ РЕФАКТОРИНГ АРХИТЕКТУРЫ - Рефакторинг этапов 2.42: вынос finalizeAddressLaneResponse из assistantService в отдельный attempt-bridge (как для living chat), для уменьшения монолита без изменения поведения.

This commit is contained in:
2026-04-10 23:27:37 +03:00
parent fbf2d6a19a
commit 875f3bfbcd
6 changed files with 211 additions and 31 deletions
@@ -0,0 +1,45 @@
import type { AssistantMessageResponsePayload } from "../types/assistant";
import {
runAssistantAddressLaneResponseRuntime,
type RunAssistantAddressLaneResponseRuntimeInput,
type RunAssistantAddressLaneResponseRuntimeOutput
} from "./assistantAddressLaneResponseRuntimeAdapter";
export interface RunAssistantAddressLaneResponseAttemptRuntimeInput<
ResponseType = AssistantMessageResponsePayload
> extends RunAssistantAddressLaneResponseRuntimeInput<ResponseType> {
runAddressLaneResponseRuntime?: (
input: RunAssistantAddressLaneResponseRuntimeInput<ResponseType>
) => RunAssistantAddressLaneResponseRuntimeOutput<ResponseType>;
}
export function runAssistantAddressLaneResponseAttemptRuntime<
ResponseType = AssistantMessageResponsePayload
>(
input: RunAssistantAddressLaneResponseAttemptRuntimeInput<ResponseType>
): ResponseType {
const runAddressLaneResponseRuntimeSafe =
input.runAddressLaneResponseRuntime ?? runAssistantAddressLaneResponseRuntime;
const runtime = runAddressLaneResponseRuntimeSafe({
sessionId: input.sessionId,
userMessage: input.userMessage,
effectiveAddressUserMessage: input.effectiveAddressUserMessage,
addressLane: input.addressLane,
carryoverMeta: input.carryoverMeta,
llmPreDecomposeMeta: input.llmPreDecomposeMeta,
knownOrganizations: input.knownOrganizations,
activeOrganization: input.activeOrganization,
sanitizeOutgoingAssistantText: input.sanitizeOutgoingAssistantText,
buildAddressDebugPayload: input.buildAddressDebugPayload,
buildAddressFollowupOffer: input.buildAddressFollowupOffer,
mergeKnownOrganizations: input.mergeKnownOrganizations,
toNonEmptyString: input.toNonEmptyString,
appendItem: input.appendItem,
getSession: input.getSession,
persistSession: input.persistSession,
cloneConversation: input.cloneConversation,
logEvent: input.logEvent,
messageIdFactory: input.messageIdFactory
});
return runtime.response;
}
@@ -19,7 +19,7 @@ import * as openaiResponsesClient_1 from "./openaiResponsesClient";
import * as addressMcpClient_1 from "./addressMcpClient";
import * as capabilitiesRegistry_1 from "./capabilitiesRegistry";
import * as assistantCanon_1 from "./assistantCanon";
import * as assistantAddressLaneResponseRuntimeAdapter_1 from "./assistantAddressLaneResponseRuntimeAdapter";
import * as assistantAddressLaneResponseAttemptRuntimeAdapter_1 from "./assistantAddressLaneResponseAttemptRuntimeAdapter";
import * as assistantCoverageGrounding_1 from "./assistantCoverageGrounding";
import * as assistantDeepTurnAnalysisRuntimeAdapter_1 from "./assistantDeepTurnAnalysisRuntimeAdapter";
import * as assistantDeepTurnCompositionRuntimeAdapter_1 from "./assistantDeepTurnCompositionRuntimeAdapter";
@@ -4353,8 +4353,7 @@ export class AssistantService {
nowIso: () => new Date().toISOString()
});
const sessionOrganizationScope = resolveSessionOrganizationScopeContext(userMessage, session.items);
const finalizeAddressLaneResponse = (addressLane, effectiveAddressUserMessage, carryoverMeta = null, llmPreDecomposeMeta = null) => {
const runtime = (0, assistantAddressLaneResponseRuntimeAdapter_1.runAssistantAddressLaneResponseRuntime)({
const finalizeAddressLaneResponse = (addressLane, effectiveAddressUserMessage, carryoverMeta = null, llmPreDecomposeMeta = null) => (0, assistantAddressLaneResponseAttemptRuntimeAdapter_1.runAssistantAddressLaneResponseAttemptRuntime)({
sessionId,
userMessage,
effectiveAddressUserMessage,
@@ -4375,8 +4374,6 @@ export class AssistantService {
logEvent: (payload) => (0, log_1.logJson)(payload),
messageIdFactory: () => `msg-${(0, nanoid_1.nanoid)(10)}`
});
return runtime.response;
};
const tryHandleLivingChat = async (modeDecision, addressRuntimeMeta = null) => (0, assistantLivingChatAttemptRuntimeAdapter_1.runAssistantLivingChatAttemptRuntime)({
sessionId,
userMessage,