Open-World: закрепить реестр недостающих доказательств бизнес-обзора

This commit is contained in:
2026-05-05 13:41:49 +03:00
parent 42283a6ac2
commit c0a89ccece
9 changed files with 307 additions and 32 deletions
@@ -290,12 +290,14 @@ describe("assistant MCP discovery answer adapter", () => {
expect(draft.must_not_claim).toContain("Do not present business overview supplier concentration as vendor-risk audit, procurement quality, or full expense structure.");
expect(draft.must_not_claim).toContain("Do not present business overview document/account-section activity profile as process quality, accounting correctness, or completeness of all 1C activity.");
expect(draft.must_not_claim).toContain("Do not present business overview counterparty or contract profile as CRM quality, counterparty due diligence, contract-risk audit, or legal completeness.");
expect(draft.must_not_claim).toContain("Do not present business overview missing proof families as checked, executed, or confirmed routes.");
expect(draft.reason_codes).toContain("answer_contains_business_overview");
expect(draft.reason_codes).toContain("answer_contains_business_overview_supplier_concentration");
expect(draft.reason_codes).toContain("answer_contains_business_overview_yearly_operating_breakdown");
expect(draft.reason_codes).toContain("answer_contains_business_overview_document_activity_profile");
expect(draft.reason_codes).toContain("answer_contains_business_overview_counterparty_profile");
expect(draft.reason_codes).toContain("answer_contains_business_overview_contract_usage_profile");
expect(draft.reason_codes).toContain("answer_contains_business_overview_missing_proof_ledger");
expect(draft.reason_codes).toContain("answer_contains_business_overview_analyst_synthesis");
});
@@ -258,6 +258,20 @@ describe("assistant MCP discovery pilot executor", () => {
unused_contracts: 372,
used_contract_share_pct: 28.46
});
expect(result.derived_business_overview?.missing_proof_families).toEqual(
expect.arrayContaining([
expect.objectContaining({
family: "accounting_profit_margin",
current_status: "reviewed_route_not_wired",
current_supported_evidence: null
}),
expect.objectContaining({
family: "vendor_risk_procurement_quality",
current_status: "proxy_only_currently",
current_supported_evidence: "supplier_concentration_proxy_from_confirmed_outgoing_payment_rows"
})
])
);
expect(result.evidence.confirmed_facts.join("\n")).toContain("В 1С подтверждены входящие поступления");
expect(result.evidence.confirmed_facts.join("\n")).toContain("Самый крупный подтвержденный поставщик");
expect(result.evidence.confirmed_facts.join("\n")).toContain("Годовая раскладка операционного денежного потока");
@@ -275,6 +289,7 @@ describe("assistant MCP discovery pilot executor", () => {
expect(result.reason_codes).toContain("pilot_derived_business_overview_document_activity_profile_from_confirmed_rows");
expect(result.reason_codes).toContain("pilot_derived_business_overview_counterparty_profile_from_confirmed_rows");
expect(result.reason_codes).toContain("pilot_derived_business_overview_contract_usage_profile_from_confirmed_rows");
expect(result.reason_codes).toContain("pilot_business_overview_missing_proof_families_recorded");
expect(deps.executeAddressMcpQuery).toHaveBeenCalledTimes(6);
});
@@ -370,6 +385,15 @@ describe("assistant MCP discovery pilot executor", () => {
expect(result.derived_business_overview?.missing_signal_families).not.toContain("tax_position");
expect(result.derived_business_overview?.missing_signal_families).not.toContain("profit_margin");
expect(result.derived_business_overview?.missing_signal_families).toContain("accounting_profit_margin");
expect(result.derived_business_overview?.missing_proof_families).toEqual(
expect.arrayContaining([
expect.objectContaining({
family: "accounting_profit_margin",
current_status: "proxy_only_currently",
current_supported_evidence: "trading_margin_proxy_from_sales_and_purchase_document_rows"
})
])
);
expect(result.evidence.confirmed_facts.join("\n")).toContain("НДС-позиция за 2020 подтверждена");
expect(result.evidence.confirmed_facts.join("\n")).toContain("Торговый margin proxy за 2020");
expect(result.evidence.unknown_facts.join("\n")).toContain("Чистая прибыль");