АРЧ АП11 - Оркестрация: дожать агентный прогон по selected-object continuity и сохранить accepted

This commit is contained in:
2026-04-17 18:24:02 +03:00
parent c2bafcff9b
commit 7f42d8ab50
22 changed files with 1775 additions and 816 deletions
@@ -4120,6 +4120,27 @@ describe("address decompose stage follow-up carryover", () => {
).toBe(true);
});
it("promotes selected-item purchase-date wording 'а по этой позиции когда была закупка' into inventory provenance", () => {
const result = runAddressDecomposeStage("а по этой позиции когда была закупка?", {
previous_intent: "inventory_purchase_provenance_for_item",
previous_filters: {
as_of_date: "2021-03-31",
period_from: "2021-03-01",
period_to: "2021-03-31",
item: "Столешница 600*3050*26 альмандин"
},
previous_anchor_type: "unknown",
previous_anchor_value: null
});
expect(result).not.toBeNull();
expect(result?.intent.intent).toBe("inventory_purchase_provenance_for_item");
expect(result?.filters.extracted_filters.item).toBe("Столешница 600*3050*26 альмандин");
expect(
result?.baseReasons?.includes("intent_adjusted_to_inventory_followup_context") ||
result?.intent.reasons.includes("inventory_purchase_date_signal_detected")
).toBe(true);
});
it("promotes conversational buyer follow-up into inventory sale trace with inherited date context", () => {
const result = runAddressDecomposeStage("кому в итоге мы продали этот товар?", {
previous_intent: "inventory_purchase_provenance_for_item",
@@ -5141,6 +5162,11 @@ it("routes old purchase residue questions to aging-by-purchase-date", () => {
expect(result.intent).toBe("inventory_purchase_provenance_for_item");
});
it("keeps selected-object purchase-date pronoun wording out of generic counterparty docs intent", () => {
const result = resolveAddressIntent("а по этой позиции когда была закупка?");
expect(result.intent).toBe("inventory_purchase_provenance_for_item");
});
it("keeps direct item supplier questions in provenance intent even with current-stock tail", () => {
const result = resolveAddressIntent(
"От какого поставщика куплен товар Диван трехместный из текущего остатка на складе Основной склад?"
@@ -0,0 +1,45 @@
import { describe, expect, it } from "vitest";
import {
buildConfirmedBalanceSemantics,
buildFactualListReply,
buildFactualSummaryReply,
buildHeuristicCandidatesSemantics
} from "../src/services/address_runtime/replyContracts";
describe("replyContracts", () => {
it("builds factual replies from line arrays", () => {
const result = buildFactualListReply(["Первая строка", "Вторая строка"], buildConfirmedBalanceSemantics("strong"));
expect(result).toEqual({
responseType: "FACTUAL_LIST",
text: "Первая строка\nВторая строка",
semantics: {
result_mode: "confirmed_balance",
evidence_strength: "strong",
balance_confirmed: true
}
});
});
it("supports downgraded confirmed-balance semantics", () => {
expect(buildFactualSummaryReply("Нет подтвержденных строк", buildConfirmedBalanceSemantics("medium", false)).semantics).toEqual({
result_mode: "confirmed_balance",
evidence_strength: "medium",
balance_confirmed: false
});
});
it("builds heuristic candidate semantics from candidate presence", () => {
expect(buildHeuristicCandidatesSemantics(true)).toEqual({
result_mode: "heuristic_candidates",
evidence_strength: "medium",
balance_confirmed: false
});
expect(buildHeuristicCandidatesSemantics(false)).toEqual({
result_mode: "heuristic_candidates",
evidence_strength: "weak",
balance_confirmed: false
});
});
});