Закрепить широкий phase12 agent replay

This commit is contained in:
2026-06-02 10:02:12 +03:00
parent b52279d19e
commit 7995980215
8 changed files with 435 additions and 10 deletions
@@ -4944,6 +4944,27 @@ describe("address decompose stage follow-up carryover", () => {
expect(result?.baseReasons).toContain("organization_from_followup_context");
});
it("does not inherit stale debt date when a new counterparty documents root starts", () => {
const result = runAddressDecomposeStage("покажи документы по свк", {
previous_intent: "receivables_confirmed_as_of_date",
previous_filters: {
organization: 'ООО "Альтернатива Плюс"',
period_from: "2017-05-01",
period_to: "2017-05-31",
as_of_date: "2017-05-31"
},
previous_anchor_type: "unknown",
previous_anchor_value: null
});
expect(result).not.toBeNull();
expect(result?.intent.intent).toBe("list_documents_by_counterparty");
expect(result?.filters.extracted_filters.counterparty).toBe("свк");
expect(result?.filters.extracted_filters.organization).toBe('ООО "Альтернатива Плюс"');
expect(result?.filters.extracted_filters.as_of_date).toBeUndefined();
expect(result?.filters.extracted_filters.period_from).toBeUndefined();
expect(result?.filters.extracted_filters.period_to).toBeUndefined();
});
it("inherits as_of_date from previous period for same-date balance follow-up", () => {
const result = runAddressDecomposeStage("а по счету 60.01 на ту же дату", {
previous_intent: "list_documents_by_counterparty",
@@ -107,6 +107,16 @@ describe("assistant runtime contract registry", () => {
expect(contract?.execution_adapter).toBe("AddressQueryService");
});
it("declares open-items account/counterparty capability as a contracted runtime route", () => {
const contract = getAssistantCapabilityContractByIntent("open_items_by_counterparty_or_contract");
expect(contract?.capability_id).toBe("address_open_items_by_counterparty_or_contract");
expect(contract?.runtime_lane).toBe("address_exact");
expect(contract?.supported_transition_classes).toEqual(["T1", "T2", "T6", "T7"]);
expect(contract?.result_shape).toBe("open_items_by_account_counterparty_or_contract");
expect(contract?.required_scenario_families).toContain("exact_negative_answer");
});
it("declares counterparty document and value-flow contracts used by semantic dialog authority replay", () => {
const documents = getAssistantCapabilityContractByIntent("list_documents_by_counterparty");
expect(documents?.capability_id).toBe("documents_drilldown");