import { describe, expect, it } from "vitest"; import { __evalRouteTestUtils } from "../src/routes/eval"; describe("eval runtime question splitting", () => { it("merges short conversational tails into previous question", () => { const parsed = __evalRouteTestUtils.splitQuestionCandidate( "Покажи контрагентов с риском несверки по акту? и коротко? без воды?" ); expect(parsed).toHaveLength(1); expect(parsed[0]).toMatch(/коротко/i); expect(parsed[0]).toMatch(/без воды/i); }); it("keeps independent full questions as separate items", () => { const parsed = __evalRouteTestUtils.splitQuestionCandidate( "Где зависли оплаты по счету 60? Какие документы не закрылись по 62 за июль 2020?" ); expect(parsed).toHaveLength(2); expect(parsed[0]).toMatch(/\?/); expect(parsed[1]).toMatch(/\?/); }); it("normalizes list input and removes placeholders and duplicates", () => { const parsed = __evalRouteTestUtils.normalizeRuntimeQuestions([ "Вопросы", "Покажи хвосты по поставщикам", "и коротко?" ]); expect(parsed).toHaveLength(1); expect(parsed[0]).toMatch(/поставщик/i); expect(parsed[0]).toMatch(/коротко/i); }); it("repairs mojibake questions before runtime job materialization", () => { const parsed = __evalRouteTestUtils.normalizeRuntimeQuestions([ "кайф - что там РЅР° складе РїРѕ остаткам?" ]); expect(parsed).toEqual(["кайф - что там на складе по остаткам?"]); }); it("repairs damaged clarification as one scenario turn when splitting is disabled", () => { const parsed = __evalRouteTestUtils.normalizeRuntimeQuestions( ["\u0410\u041b\u042c\u0422\u0415\u0420\u041d\u0410\u0422\uFFFD?\u0412\u0410"], { dedupe: false, splitCandidates: false } ); expect(parsed).toEqual(["\u0410\u041b\u042c\u0422\u0415\u0420\u041d\u0410\u0422\u0418\u0412\u0410"]); }); it("repairs C1-control autorun clarification before runtime job materialization", () => { const damagedAlternative = String.fromCharCode( 0x420, 0x452, 0x420, 0x203a, 0x420, 0xac, 0x420, 0x45e, 0x420, 0x2022, 0x420, 0xa0, 0x420, 0x45c, 0x420, 0x452, 0x420, 0x45e, 0x420, 0x98, 0x420, 0x2019, 0x420, 0x452 ); const parsed = __evalRouteTestUtils.normalizeRuntimeQuestions([damagedAlternative], { dedupe: false, splitCandidates: false }); expect(parsed).toEqual(["\u0410\u041b\u042c\u0422\u0415\u0420\u041d\u0410\u0422\u0418\u0412\u0410"]); }); });