import { describe, expect, it } from "vitest"; import { resolveInventoryAddressIntent } from "../src/services/addressInventoryIntentSignals"; import { resolveAddressIntent } from "../src/services/addressIntentResolver"; describe("addressInventoryIntentSignals", () => { it("classifies plain Russian stock wording from the agent replay as inventory on hand", () => { const result = resolveAddressIntent("какие остатки на складе на март 2021"); expect(result.intent).toBe("inventory_on_hand_as_of_date"); expect(result.reasons).toContain("inventory_on_hand_signal_detected"); }); it("classifies warehouse snapshot wording through the extracted inventory owner", () => { const result = resolveInventoryAddressIntent("show inventory on hand as of 2020-03-15"); expect(result?.intent).toBe("inventory_on_hand_as_of_date"); expect(result?.reasons).toContain("inventory_on_hand_signal_detected"); }); it("keeps bare highest-margin nomenclature wording out of the stock snapshot route", () => { const result = resolveInventoryAddressIntent( "\u041a\u0430\u043a\u0430\u044f \u043d\u043e\u043c\u0435\u043d\u043a\u043b\u0430\u0442\u0443\u0440\u0430 \u0431\u044b\u043b\u0430 \u0441\u0430\u043c\u043e\u0439 \u043c\u0430\u0440\u0436\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0439 \u0437\u0430 2020 \u0433\u043e\u0434?" ); expect(result?.intent).toBe("inventory_margin_ranking_for_nomenclature"); expect(result?.reasons).toContain("inventory_margin_ranking_signal_detected"); }); it("classifies selected-object purchase provenance wording through the extracted inventory owner", () => { const result = resolveInventoryAddressIntent("selected object supplier provenance"); expect(result?.intent).toBe("inventory_purchase_provenance_for_item"); expect(result?.reasons).toContain("inventory_selected_object_provenance_signal_detected"); }); it("keeps the main resolver behavior stable through inventory-owner delegation", () => { const result = resolveAddressIntent("а по этой позиции когда была закупка?"); expect(result.intent).toBe("inventory_purchase_provenance_for_item"); expect(result.reasons).toContain("inventory_purchase_date_signal_detected"); }); it("classifies direct Russian purchase-date wording with an explicit item", () => { const result = resolveAddressIntent("Когда был куплен товар Столешница 600*3050*26 дуб ниагара"); expect(result.intent).toBe("inventory_purchase_provenance_for_item"); expect(result.reasons).toContain("inventory_purchase_date_signal_detected"); }); it("does not steal non-inventory open-items wording into the inventory owner", () => { const result = resolveInventoryAddressIntent("хвосты покажи по счету 60 на август 2022"); expect(result).toBeNull(); }); });