NODEDC_1C/llm_normalizer/backend/tests/assistantContinuityPolicy.t...

79 lines
2.7 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import { describe, expect, it } from "vitest";
import {
resolveAddressDebugContextFacts,
resolveAssistantOrganizationAuthority
} from "../src/services/assistantContinuityPolicy";
describe("assistantContinuityPolicy organization authority", () => {
it("prefers explicit assistant organization authority over older grounded continuity and merges known organizations once", () => {
const authority = resolveAssistantOrganizationAuthority({
sessionItems: [
{
role: "assistant",
debug: {
execution_lane: "address_query",
answer_grounding_check: { status: "grounded" },
extracted_filters: {
organization: "Org Grounded",
as_of_date: "2020-03-31"
},
detected_intent: "receivables_confirmed_as_of_date"
}
},
{
role: "assistant",
debug: {
execution_lane: "living_chat",
living_chat_selected_organization: "Org Selected",
assistant_active_organization: "Org Selected",
assistant_known_organizations: ["Org Selected", "Org Known"],
living_chat_data_scope_probe_organizations: ["Org Probe"]
}
}
],
sessionKnownOrganizations: ["Org Session"],
lastOrganizationClarificationDebug: {
organization_candidates: ["Org Candidate", "Org Selected"]
}
});
expect(authority.continuitySnapshot.activeOrganization).toBe("Org Grounded");
expect(authority.continuityActiveOrganization).toBe("Org Selected");
expect(authority.selectedOrganization).toBe("Org Selected");
expect(authority.activeOrganization).toBe("Org Selected");
expect(authority.knownOrganizations).toEqual([
"Org Session",
"Org Selected",
"Org Known",
"Org Probe",
"Org Grounded"
]);
expect(authority.organizationClarificationCandidates).toEqual([
"Org Candidate",
"Org Selected",
"Org Session",
"Org Known",
"Org Probe",
"Org Grounded"
]);
expect(authority.organizationClarificationSelectionFromScope).toBe("Org Selected");
});
it("reads item, organization and scoped date from root-frame fallback when direct filters are missing", () => {
const facts = resolveAddressDebugContextFacts({
anchor_type: "item",
anchor_value_resolved: "Рабочая станция",
address_root_frame_context: {
organization: 'ООО "Альтернатива Плюс"',
as_of_date: "2020-03-31"
}
});
expect(facts).toEqual({
item: "Рабочая станция",
organization: 'ООО "Альтернатива Плюс"',
scopedDate: "31.03.2020"
});
});
});