Архитектура: централизовать displayed-entity retarget в continuity policy и убрать dead owner из transition
This commit is contained in:
@@ -2,7 +2,6 @@
|
||||
import {
|
||||
applyHistoricalPartyCarryoverFilters,
|
||||
applyOrganizationCarryoverFilters,
|
||||
applyReferencedEntityCarryover,
|
||||
applySelectedItemCarryover,
|
||||
applyTemporalCarryoverFilters,
|
||||
buildRootScopedCarryoverFilters,
|
||||
@@ -13,6 +12,7 @@ import {
|
||||
readAddressDebugTemporalScope,
|
||||
resolveAddressDebugCarryoverFilters,
|
||||
resolveAddressDebugAnchorContext,
|
||||
resolveDisplayedEntityFollowupRetarget,
|
||||
resolveAssistantOrganizationAuthority
|
||||
} from "./assistantContinuityPolicy";
|
||||
|
||||
@@ -364,39 +364,6 @@ export function createAssistantTransitionPolicy(deps) {
|
||||
return null;
|
||||
}
|
||||
|
||||
function resolveDisplayedEntityRetargetIntent(userMessage, entityType) {
|
||||
const normalized = deps.compactWhitespace(
|
||||
deps.repairAddressMojibake(String(userMessage ?? "")).toLowerCase()
|
||||
);
|
||||
if (!normalized) {
|
||||
return null;
|
||||
}
|
||||
if (entityType === "counterparty") {
|
||||
if (/(?:договор|контракт)/iu.test(normalized)) {
|
||||
return "list_contracts_by_counterparty";
|
||||
}
|
||||
if (/(?:банк|выписк|плат[её]ж|оплат|statement|payment|wire)/iu.test(normalized)) {
|
||||
return "bank_operations_by_counterparty";
|
||||
}
|
||||
if (/(?:документ|накладн|счет|сч[её]т|акт|реализац|поступл)/iu.test(normalized)) {
|
||||
return "list_documents_by_counterparty";
|
||||
}
|
||||
if (/(?:сколько\s+денег|сколько\s+принес|выручк|сумм[аы]?|оплатил|продаж)/iu.test(normalized)) {
|
||||
return "customer_revenue_and_payments";
|
||||
}
|
||||
return null;
|
||||
}
|
||||
if (entityType === "contract") {
|
||||
if (/(?:банк|выписк|плат[её]ж|оплат|statement|payment|wire)/iu.test(normalized)) {
|
||||
return "bank_operations_by_contract";
|
||||
}
|
||||
if (/(?:документ|накладн|счет|сч[её]т|акт|реализац|поступл)/iu.test(normalized)) {
|
||||
return "list_documents_by_contract";
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
function resolveAddressFollowupCarryoverContext(
|
||||
userMessage,
|
||||
items,
|
||||
@@ -854,25 +821,23 @@ export function createAssistantTransitionPolicy(deps) {
|
||||
(deps.toNonEmptyString(alternateMessage)
|
||||
? deps.resolveDisplayedAddressEntityMention(String(alternateMessage ?? ""), displayedEntities)
|
||||
: null);
|
||||
if (resolvedEntityFromFollowup && !rootScopedPivot) {
|
||||
displayedEntityTargetIntent = resolveDisplayedEntityRetargetIntent(
|
||||
userMessage,
|
||||
resolvedEntityFromFollowup.entityType
|
||||
);
|
||||
}
|
||||
({
|
||||
displayedEntityTargetIntent,
|
||||
previousFilters,
|
||||
previousAnchorType,
|
||||
previousAnchorValue: previousAnchor,
|
||||
followupSelectionMode,
|
||||
resolvedCounterpartyFromDisplay
|
||||
} = applyReferencedEntityCarryover(
|
||||
} = resolveDisplayedEntityFollowupRetarget(
|
||||
userMessage,
|
||||
resolvedEntityFromFollowup,
|
||||
previousFilters,
|
||||
previousAnchorType,
|
||||
previousAnchor,
|
||||
followupSelectionMode,
|
||||
resolvedEntityFromFollowup,
|
||||
rootScopedPivot,
|
||||
deps.compactWhitespace,
|
||||
deps.repairAddressMojibake,
|
||||
deps.toNonEmptyString
|
||||
));
|
||||
({
|
||||
|
||||
Reference in New Issue
Block a user