ОРРКЕСТРАЦИЯ -Уточнить safety-policy оркестратора: останавливать loop на hard blockers и рискованных решениях, а не только по порогу 80%
This commit is contained in:
@@ -42,6 +42,30 @@ describe("address capability policy", () => {
|
||||
expect(isCapabilityRouteBlocked(decision)).toBe(false);
|
||||
});
|
||||
|
||||
it("marks inventory provenance intents as blocked exact-capability gaps", () => {
|
||||
const decision = resolveAddressCapabilityRouteDecision("inventory_purchase_provenance_for_item");
|
||||
expect(decision.capability_id).toBe("inventory_inventory_purchase_provenance_for_item");
|
||||
expect(decision.capability_layer).toBe("compute");
|
||||
expect(decision.capability_route_mode).toBe("exact");
|
||||
expect(decision.capability_route_enabled).toBe(false);
|
||||
expect(decision.capability_route_reason).toBe("inventory_provenance_route_not_implemented");
|
||||
expect(isCapabilityRouteBlocked(decision)).toBe(true);
|
||||
});
|
||||
|
||||
it("marks purchase-to-sale trace and aging intents as blocked exact-capability gaps", () => {
|
||||
const chainDecision = resolveAddressCapabilityRouteDecision("inventory_purchase_to_sale_chain");
|
||||
expect(chainDecision.capability_id).toBe("inventory_inventory_purchase_to_sale_chain");
|
||||
expect(chainDecision.capability_route_mode).toBe("exact");
|
||||
expect(chainDecision.capability_route_enabled).toBe(false);
|
||||
expect(isCapabilityRouteBlocked(chainDecision)).toBe(true);
|
||||
|
||||
const agingDecision = resolveAddressCapabilityRouteDecision("inventory_aging_by_purchase_date");
|
||||
expect(agingDecision.capability_id).toBe("inventory_inventory_aging_by_purchase_date");
|
||||
expect(agingDecision.capability_route_mode).toBe("exact");
|
||||
expect(agingDecision.capability_route_enabled).toBe(false);
|
||||
expect(isCapabilityRouteBlocked(agingDecision)).toBe(true);
|
||||
});
|
||||
|
||||
it("maps document drilldown intent to navigation capability", () => {
|
||||
const decision = resolveAddressCapabilityRouteDecision("list_documents_by_contract");
|
||||
expect(decision.capability_id).toBe("documents_drilldown");
|
||||
|
||||
@@ -4394,5 +4394,51 @@ describe("address recipe catalog counterparty filtering", () => {
|
||||
expect(reply.semantics?.result_mode).toBe("confirmed_balance");
|
||||
expect(reply.semantics?.balance_confirmed).toBe(true);
|
||||
});
|
||||
});
|
||||
|
||||
it("routes inventory provenance questions to a dedicated intent", () => {
|
||||
const result = resolveAddressIntent("От какого поставщика куплен товар Шкаф картоотечный?");
|
||||
expect(result.intent).toBe("inventory_purchase_provenance_for_item");
|
||||
});
|
||||
|
||||
it("keeps inventory supplier overlap questions out of on-hand routing", () => {
|
||||
const result = resolveAddressIntent("Какие товары от поставщика Альфа сейчас лежат на складе?");
|
||||
expect(result.intent).toBe("inventory_supplier_stock_overlap_as_of_date");
|
||||
});
|
||||
|
||||
it("routes inventory purchase document questions to a dedicated intent", () => {
|
||||
const result = resolveAddressIntent("По каким документам был куплен товар Шкаф картоотечный?");
|
||||
expect(result.intent).toBe("inventory_purchase_documents_for_item");
|
||||
});
|
||||
|
||||
it("routes inventory sale chain questions to a dedicated intent", () => {
|
||||
const result = resolveAddressIntent(
|
||||
"Через какие документы прошел путь товара Шкаф картоотечный: закупка -> склад -> продажа?"
|
||||
);
|
||||
expect(result.intent).toBe("inventory_sale_trace_for_item");
|
||||
});
|
||||
|
||||
it("keeps inventory provenance wording out of inventory-on-hand routing", () => {
|
||||
const result = resolveAddressIntent("От кого куплен товар Шкаф картоотечный и когда был куплен?");
|
||||
expect(result.intent).toBe("inventory_purchase_provenance_for_item");
|
||||
});
|
||||
|
||||
it("keeps aging wording out of open-items and bank routing", () => {
|
||||
const result = resolveAddressIntent("Какие товары были куплены очень давно и до сих пор лежат на складе?");
|
||||
expect(result.intent).toBe("inventory_aging_by_purchase_date");
|
||||
});
|
||||
|
||||
it("routes purchase-document trace wording to dedicated inventory intent", () => {
|
||||
const result = resolveAddressIntent("Какими документами был куплен товар Шкаф картоотечный?");
|
||||
expect(result.intent).toBe("inventory_purchase_documents_for_item");
|
||||
});
|
||||
it("keeps very old stock wording in dedicated aging intent", () => {
|
||||
const result = resolveAddressIntent("Есть ли остатки товара, которые закупались очень давно?");
|
||||
expect(result.intent).toBe("inventory_aging_by_purchase_date");
|
||||
});
|
||||
|
||||
it("keeps unresolved stock provenance wording out of open-items routing", () => {
|
||||
const result = resolveAddressIntent("Какие товары сейчас висят в остатке без понятной привязки к поставщику?");
|
||||
expect(result.intent).toBe("inventory_purchase_provenance_for_item");
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user