АРЧ АП11 - Архитектура после регресса: Архитектура: протянуть continuity snapshot в route arbitration и убрать non-domain drift при выборе организации
This commit is contained in:
@@ -4,6 +4,7 @@ import {
|
||||
normalizeOrganizationScopeValue
|
||||
} from "./assistantOrganizationMatcher";
|
||||
import {
|
||||
resolveAssistantContinuitySnapshot,
|
||||
isGroundedAddressDebug,
|
||||
readAddressDebugOrganization
|
||||
} from "./assistantContinuityPolicy";
|
||||
@@ -296,6 +297,12 @@ export function createAssistantDataScopePolicy(deps: AssistantDataScopePolicyDep
|
||||
}
|
||||
|
||||
function findLastAssistantActiveOrganization(items: unknown[]): string | null {
|
||||
const continuitySnapshot = resolveAssistantContinuitySnapshot({
|
||||
sessionItems: items,
|
||||
toNonEmptyString: normalizeOrganizationScopeValue
|
||||
});
|
||||
const continuityOrganization = normalizeOrganizationScopeValue(continuitySnapshot.activeOrganization);
|
||||
|
||||
for (let index = (Array.isArray(items) ? items.length : 0) - 1; index >= 0; index -= 1) {
|
||||
const item = Array.isArray(items) ? items[index] : null;
|
||||
if (!item || typeof item !== "object" || (item as { role?: string }).role !== "assistant") {
|
||||
@@ -323,7 +330,7 @@ export function createAssistantDataScopePolicy(deps: AssistantDataScopePolicyDep
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
return continuityOrganization;
|
||||
}
|
||||
|
||||
function extractOrganizationFactsFromRows(rows: unknown[]): AssistantOrganizationFacts {
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
// @ts-nocheck
|
||||
import { resolveAssistantContinuitySnapshot } from "./assistantContinuityPolicy";
|
||||
|
||||
const ADDRESS_INTENTS_KEEP_ADDRESS_LANE = new Set([
|
||||
"period_coverage_profile",
|
||||
"document_type_and_account_section_profile",
|
||||
@@ -107,17 +109,26 @@ export function createAssistantRoutePolicy(deps) {
|
||||
const sessionOrganizationScope = input?.sessionOrganizationScope && typeof input.sessionOrganizationScope === "object"
|
||||
? input.sessionOrganizationScope
|
||||
: null;
|
||||
const lastGroundedAddressDebug = findLastGroundedAddressAnswerDebug(sessionItems);
|
||||
const continuitySnapshot = resolveAssistantContinuitySnapshot({
|
||||
sessionItems,
|
||||
toNonEmptyString
|
||||
});
|
||||
const continuityActiveOrganization = normalizeOrganizationScopeValue(sessionOrganizationScope?.activeOrganization) ??
|
||||
normalizeOrganizationScopeValue(continuitySnapshot.activeOrganization);
|
||||
const lastGroundedAddressDebug = findLastGroundedAddressAnswerDebug(sessionItems) ??
|
||||
continuitySnapshot.lastGroundedAddressDebug;
|
||||
const lastOrganizationClarificationDebug = findLastOrganizationClarificationAddressDebug(sessionItems);
|
||||
const organizationClarificationCandidates = Array.isArray(lastOrganizationClarificationDebug?.organization_candidates)
|
||||
? mergeKnownOrganizations([
|
||||
...lastOrganizationClarificationDebug.organization_candidates,
|
||||
...((Array.isArray(sessionOrganizationScope?.knownOrganizations)
|
||||
? sessionOrganizationScope.knownOrganizations
|
||||
: []))
|
||||
: [])),
|
||||
continuityActiveOrganization
|
||||
])
|
||||
: [];
|
||||
const organizationClarificationSelectionFromScope = normalizeOrganizationScopeValue(sessionOrganizationScope?.selectedOrganization);
|
||||
const organizationClarificationSelectionFromScope = normalizeOrganizationScopeValue(sessionOrganizationScope?.selectedOrganization) ??
|
||||
continuityActiveOrganization;
|
||||
const organizationClarificationSelection = resolveOrganizationSelectionFromMessage(rawUserMessage, organizationClarificationCandidates) ??
|
||||
resolveOrganizationSelectionFromMessage(repairedRawUserMessage, organizationClarificationCandidates) ??
|
||||
resolveOrganizationSelectionFromMessage(effectiveAddressUserMessage, organizationClarificationCandidates) ??
|
||||
@@ -230,7 +241,7 @@ export function createAssistantRoutePolicy(deps) {
|
||||
hasShortInventoryObjectFollowupSignal(repairedRawUserMessage) ||
|
||||
hasShortInventoryObjectFollowupSignal(effectiveAddressUserMessage) ||
|
||||
hasShortInventoryObjectFollowupSignal(repairedEffectiveAddressUserMessage)));
|
||||
const organizationClarificationContinuationDetected = Boolean(followupContext &&
|
||||
const organizationClarificationContinuationDetected = Boolean((followupContext || continuitySnapshot.hasGroundedAddressContext) &&
|
||||
lastOrganizationClarificationDebug &&
|
||||
organizationClarificationSelection &&
|
||||
!dataScopeMetaQuery &&
|
||||
@@ -727,7 +738,9 @@ export function createAssistantRoutePolicy(deps) {
|
||||
repairedEffectiveAddressUserMessage,
|
||||
sessionItems
|
||||
}));
|
||||
const hasPriorAddressAnswerContext = Boolean(lastGroundedAddressDebug || toNonEmptyString(followupContext?.previous_intent));
|
||||
const hasPriorAddressAnswerContext = Boolean(lastGroundedAddressDebug ||
|
||||
continuitySnapshot.hasGroundedAddressContext ||
|
||||
toNonEmptyString(followupContext?.previous_intent));
|
||||
const metaFollowupOverGroundedAnswer = isMetaFollowupOverGroundedAnswer({
|
||||
followupContext,
|
||||
hasPriorAddressAnswerContext,
|
||||
|
||||
Reference in New Issue
Block a user