Post-F: закрепить документный приоритет над bank cue

This commit is contained in:
dctouch 2026-04-24 15:36:04 +03:00
parent 394eef066e
commit 7d9ba76cc5
3 changed files with 29 additions and 0 deletions

View File

@ -1645,6 +1645,9 @@ function resolveUnicodeAddressIntentBridge(text) {
/(?:хвост|задержк|проблем|систематическ)/iu.test(normalized)) { /(?:хвост|задержк|проблем|систематическ)/iu.test(normalized)) {
return unicodeBridgeResolution("list_payables_counterparties", "high", "supplier_tail_risk_signal_detected"); return unicodeBridgeResolution("list_payables_counterparties", "high", "supplier_tail_risk_signal_detected");
} }
if (hasDocumentCue && (hasCounterpartyCue || hasLooseCounterpartyByAnchor) && !hasContractCue) {
return unicodeBridgeResolution("list_documents_by_counterparty", "high", "unicode_documents_by_counterparty_bridge_signal_detected");
}
if (hasBankCue && (hasCounterpartyCue || hasLooseCounterpartyByAnchor) && !hasContractCue) { if (hasBankCue && (hasCounterpartyCue || hasLooseCounterpartyByAnchor) && !hasContractCue) {
return unicodeBridgeResolution("bank_operations_by_counterparty", "high", "unicode_bank_ops_by_counterparty_bridge_signal_detected"); return unicodeBridgeResolution("bank_operations_by_counterparty", "high", "unicode_bank_ops_by_counterparty_bridge_signal_detected");
} }

View File

@ -2140,6 +2140,14 @@ function resolveUnicodeAddressIntentBridge(text: string): AddressIntentResolutio
); );
} }
if (hasDocumentCue && (hasCounterpartyCue || hasLooseCounterpartyByAnchor) && !hasContractCue) {
return unicodeBridgeResolution(
"list_documents_by_counterparty",
"high",
"unicode_documents_by_counterparty_bridge_signal_detected"
);
}
if (hasBankCue && (hasCounterpartyCue || hasLooseCounterpartyByAnchor) && !hasContractCue) { if (hasBankCue && (hasCounterpartyCue || hasLooseCounterpartyByAnchor) && !hasContractCue) {
return unicodeBridgeResolution( return unicodeBridgeResolution(
"bank_operations_by_counterparty", "bank_operations_by_counterparty",

View File

@ -2195,6 +2195,13 @@ describe("address intent resolver expansion (M2.3a)", () => {
expect(result.intent).toBe("list_documents_by_counterparty"); expect(result.intent).toBe("list_documents_by_counterparty");
}); });
it("keeps document asks with numeric counterparty suffix out of bank operations", () => {
const result = resolveAddressIntent(
"\u041f\u043e\u043a\u0430\u0436\u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u044b \u043f\u043e \u0416\u0443\u043a\u043e\u0432\u043a\u0435 51."
);
expect(result.intent).toBe("list_documents_by_counterparty");
});
it("resolves transliterated docy slang as documents by counterparty intent", () => { it("resolves transliterated docy slang as documents by counterparty intent", () => {
const result = resolveAddressIntent("svk poka docy za 2020"); const result = resolveAddressIntent("svk poka docy za 2020");
expect(result.intent).toBe("list_documents_by_counterparty"); expect(result.intent).toBe("list_documents_by_counterparty");
@ -3168,6 +3175,17 @@ describe("address filter extraction for balance drilldown", () => {
expect(result.warnings).toContain("counterparty_anchor_derived_from_loose_by_phrase"); expect(result.warnings).toContain("counterparty_anchor_derived_from_loose_by_phrase");
}); });
it("extracts document counterparty anchor with numeric suffix without account leakage", () => {
const result = extractAddressFilters(
"\u041f\u043e\u043a\u0430\u0436\u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u044b \u043f\u043e \u0416\u0443\u043a\u043e\u0432\u043a\u0435 51.",
"list_documents_by_counterparty"
);
expect(result.extracted_filters.counterparty).toBe("\u0416\u0443\u043a\u043e\u0432\u043a\u0435 51");
expect(result.extracted_filters.account).toBeUndefined();
expect(result.missing_required_filters).toEqual([]);
expect(result.warnings).toContain("counterparty_anchor_derived_from_loose_by_phrase");
});
it("cuts trailing as-of date from contract anchor", () => { it("cuts trailing as-of date from contract anchor", () => {
const result = extractAddressFilters( const result = extractAddressFilters(
"Покажи документы по договору 1-ПМ/2020 на дату 31.07.2020", "Покажи документы по договору 1-ПМ/2020 на дату 31.07.2020",