Open-World: добавить staleness risk proxy в бизнес-обзор
This commit is contained in:
@@ -488,16 +488,22 @@ describe("assistant MCP discovery answer adapter", () => {
|
||||
|
||||
expect(draft.headline).toContain("складской срез");
|
||||
expect(draft.headline).toContain("оборотный proxy склада");
|
||||
expect(draft.headline).toContain("staleness risk proxy склада");
|
||||
expect(draft.confirmed_lines.join("\n")).toContain("Складской срез на 2020-12-31");
|
||||
expect(draft.confirmed_lines.join("\n")).toContain("Товар А");
|
||||
expect(draft.confirmed_lines.join("\n")).toContain("Оборотный proxy склада за 2020");
|
||||
expect(draft.confirmed_lines.join("\n")).toContain("sales-to-stock ratio 2x");
|
||||
expect(draft.confirmed_lines.join("\n")).toContain("Staleness risk proxy склада");
|
||||
expect(draft.confirmed_lines.join("\n")).toContain("зона наблюдения");
|
||||
expect(draft.inference_lines.join("\n")).toContain("оборотный proxy склада");
|
||||
expect(draft.unknown_lines.join("\n")).toContain("Полная складская ликвидность");
|
||||
expect(draft.inference_lines.join("\n")).toContain("staleness risk proxy склада");
|
||||
expect(draft.unknown_lines.join("\n")).toContain("Резервы");
|
||||
expect(draft.reason_codes).toContain("answer_contains_business_overview_inventory_position");
|
||||
expect(draft.reason_codes).toContain("answer_contains_business_overview_inventory_turnover_proxy");
|
||||
expect(draft.reason_codes).toContain("answer_contains_business_overview_inventory_staleness_risk_proxy");
|
||||
expect(draft.must_not_claim).toContain("Do not present an inventory snapshot or purchase-date aging signal as turnover, obsolescence, liquidation value, or full inventory health.");
|
||||
expect(draft.must_not_claim).toContain("Do not present business overview inventory turnover proxy as full inventory liquidity, FIFO turnover, obsolescence analysis, or liquidation value.");
|
||||
expect(draft.must_not_claim).toContain("Do not present business overview inventory staleness risk proxy as confirmed obsolete stock, reserve, write-off, or liquidation value.");
|
||||
});
|
||||
|
||||
it("renders metadata-scoped movement all-time follow-up as an all-time bounded answer", async () => {
|
||||
|
||||
@@ -592,16 +592,28 @@ describe("assistant MCP discovery pilot executor", () => {
|
||||
sales_to_stock_amount_ratio: 2,
|
||||
stock_to_sales_revenue_pct: 50
|
||||
});
|
||||
expect(result.derived_business_overview?.inventory_staleness_risk_proxy).toMatchObject({
|
||||
period_scope: "2020",
|
||||
as_of_date: "2020-12-31",
|
||||
oldest_purchase_date: "2020-01-10",
|
||||
max_purchase_age_days: 356,
|
||||
sales_to_stock_amount_ratio: 2,
|
||||
risk_band: "watch"
|
||||
});
|
||||
expect(result.derived_business_overview?.missing_signal_families).not.toContain("inventory_position");
|
||||
expect(result.derived_business_overview?.missing_signal_families).not.toContain("inventory_turnover_quality");
|
||||
expect(result.derived_business_overview?.missing_signal_families).toContain("inventory_liquidity_quality");
|
||||
expect(result.derived_business_overview?.missing_signal_families).not.toContain("inventory_liquidity_quality");
|
||||
expect(result.derived_business_overview?.missing_signal_families).toContain("inventory_reserve_liquidation_quality");
|
||||
expect(result.evidence.confirmed_facts.join("\n")).toContain("Складской срез на 2020-12-31");
|
||||
expect(result.evidence.confirmed_facts.join("\n")).toContain("Оборотный proxy склада за 2020");
|
||||
expect(result.evidence.confirmed_facts.join("\n")).toContain("sales-to-stock ratio 2x");
|
||||
expect(result.evidence.unknown_facts.join("\n")).toContain("Полная складская ликвидность");
|
||||
expect(result.evidence.confirmed_facts.join("\n")).toContain("Staleness risk proxy склада");
|
||||
expect(result.evidence.confirmed_facts.join("\n")).toContain("зона наблюдения");
|
||||
expect(result.evidence.unknown_facts.join("\n")).toContain("Резервы");
|
||||
expect(result.reason_codes).toContain("pilot_business_overview_inventory_query_mcp_executed");
|
||||
expect(result.reason_codes).toContain("pilot_derived_business_overview_inventory_position_from_confirmed_rows");
|
||||
expect(result.reason_codes).toContain("pilot_derived_business_overview_inventory_turnover_proxy_from_confirmed_rows");
|
||||
expect(result.reason_codes).toContain("pilot_derived_business_overview_inventory_staleness_risk_proxy_from_confirmed_rows");
|
||||
expect(deps.executeAddressMcpQuery).toHaveBeenCalledTimes(10);
|
||||
const inventoryCall = deps.executeAddressMcpQuery.mock.calls[6]?.[0];
|
||||
expect(inventoryCall?.account_scope).toContain("41.01");
|
||||
|
||||
Reference in New Issue
Block a user