Open-World: добавить возрастной сигнал открытых расчетов
This commit is contained in:
@@ -361,8 +361,8 @@ describe("assistant MCP discovery answer adapter", () => {
|
||||
},
|
||||
{
|
||||
rows: [
|
||||
{ Period: "2020-12-31T00:00:00", Amount: 100000, Counterparty: "Клиент А", Contract: "Договор А" },
|
||||
{ Period: "2020-12-31T00:00:00", Amount: 50000, Counterparty: "Поставщик А", Contract: "Договор Б" }
|
||||
{ Period: "2020-12-31T00:00:00", Amount: 100000, Counterparty: "Клиент А", Contract: "Договор А от 10.02.2019" },
|
||||
{ Period: "2020-12-31T00:00:00", Amount: 50000, Counterparty: "Поставщик А", Contract: "Договор Б от 15.03.2020" }
|
||||
]
|
||||
},
|
||||
{ rows: [] },
|
||||
@@ -380,12 +380,16 @@ describe("assistant MCP discovery answer adapter", () => {
|
||||
|
||||
expect(draft.headline).toContain("долговой срез");
|
||||
expect(draft.headline).toContain("качество открытых расчетов");
|
||||
expect(draft.headline).toContain("возрастной сигнал открытых расчетов");
|
||||
expect(draft.confirmed_lines.join("\n")).toContain("Долговой срез на 2020-12-31");
|
||||
expect(draft.confirmed_lines.join("\n")).toContain("Качество открытых расчетов на 2020-12-31");
|
||||
expect(draft.confirmed_lines.join("\n")).toContain("Возрастной сигнал открытых расчетов");
|
||||
expect(draft.confirmed_lines.join("\n")).toContain("не due-date анализ");
|
||||
expect(draft.confirmed_lines.join("\n")).toContain("нетто");
|
||||
expect(draft.unknown_lines.join("\n")).toContain("due-date");
|
||||
expect(draft.reason_codes).toContain("answer_contains_business_overview_debt_position");
|
||||
expect(draft.reason_codes).toContain("answer_contains_business_overview_open_settlement_quality");
|
||||
expect(draft.reason_codes).toContain("answer_contains_business_overview_debt_age_signal");
|
||||
expect(draft.must_not_claim).toContain("Do not present a debt-position snapshot as debt aging, overdue debt, or credit-quality analysis.");
|
||||
expect(draft.must_not_claim).toContain("Do not present open-settlement concentration as contractual due-date aging or confirmed overdue debt.");
|
||||
});
|
||||
|
||||
@@ -326,8 +326,8 @@ describe("assistant MCP discovery pilot executor", () => {
|
||||
},
|
||||
{
|
||||
rows: [
|
||||
{ Period: "2020-12-31T00:00:00", Amount: 90000, Counterparty: "Клиент А", Contract: "Договор А" },
|
||||
{ Period: "2020-12-31T00:00:00", Amount: 30000, Counterparty: "Клиент Б", Contract: "Договор Б" }
|
||||
{ Period: "2020-12-31T00:00:00", Amount: 90000, Counterparty: "Клиент А", Contract: "Договор А от 10.02.2019" },
|
||||
{ Period: "2020-12-31T00:00:00", Amount: 30000, Counterparty: "Клиент Б", Contract: "Договор Б от 15.03.2020" }
|
||||
]
|
||||
},
|
||||
{ rows: [] },
|
||||
@@ -368,16 +368,31 @@ describe("assistant MCP discovery pilot executor", () => {
|
||||
unique_contracts: 2,
|
||||
concentration_top_contract_pct: 75
|
||||
});
|
||||
expect(result.derived_business_overview?.debt_open_settlement_quality?.age_signal).toMatchObject({
|
||||
contracts_with_start_date: 2,
|
||||
oldest_start_date: "2019-02-10",
|
||||
latest_start_date: "2020-03-15",
|
||||
max_age_days: 690
|
||||
});
|
||||
expect(result.derived_business_overview?.debt_open_settlement_quality?.age_signal?.top_aged_contracts[0]).toMatchObject({
|
||||
contract: "Договор А от 10.02.2019",
|
||||
start_date: "2019-02-10",
|
||||
age_days: 690,
|
||||
total_amount: 90000
|
||||
});
|
||||
expect(result.derived_business_overview?.missing_signal_families).not.toContain("debt_position");
|
||||
expect(result.derived_business_overview?.missing_signal_families).not.toContain("debt_open_settlement_quality");
|
||||
expect(result.derived_business_overview?.missing_signal_families).toContain("debt_due_date_aging_quality");
|
||||
expect(result.evidence.confirmed_facts.join("\n")).toContain("Долговая позиция на 2020-12-31");
|
||||
expect(result.evidence.confirmed_facts.join("\n")).toContain("Качество открытых расчетов на 2020-12-31");
|
||||
expect(result.evidence.confirmed_facts.join("\n")).toContain("Возрастной сигнал открытых расчетов");
|
||||
expect(result.evidence.confirmed_facts.join("\n")).toContain("не due-date анализ");
|
||||
expect(result.evidence.unknown_facts.join("\n")).toContain("due-date");
|
||||
expect(result.reason_codes).toContain("pilot_business_overview_debt_query_mcp_executed");
|
||||
expect(result.reason_codes).toContain("pilot_derived_business_overview_debt_position_from_confirmed_rows");
|
||||
expect(result.reason_codes).toContain("pilot_business_overview_open_contracts_query_mcp_executed");
|
||||
expect(result.reason_codes).toContain("pilot_derived_business_overview_open_settlement_quality_from_confirmed_rows");
|
||||
expect(result.reason_codes).toContain("pilot_derived_business_overview_debt_age_signal_from_contract_dates");
|
||||
expect(deps.executeAddressMcpQuery).toHaveBeenCalledTimes(9);
|
||||
const receivablesCall = deps.executeAddressMcpQuery.mock.calls[3]?.[0];
|
||||
const payablesCall = deps.executeAddressMcpQuery.mock.calls[4]?.[0];
|
||||
|
||||
Reference in New Issue
Block a user