import { describe, expect, it } from "vitest"; import { sanitizeAssistantReplyForUserFacing } from "../src/services/answerComposer"; describe("answer composer user-facing formatting", () => { it("keeps intentional blank lines between semantic blocks", () => { const source = [ "Блок 1. Статус результата", "- Дата среза: 31.07.2020.", "", "Блок 2. Что учтено", "- Контур: дебиторка 62/76.", "", "Блок 3. Сводка", "- Строк: 24." ].join("\n"); const sanitized = sanitizeAssistantReplyForUserFacing(source); expect(sanitized).toContain("Блок 1. Статус результата"); expect(sanitized).toContain("\n\nБлок 2. Что учтено\n"); expect(sanitized).toContain("\n\nБлок 3. Сводка\n"); }); it("removes debug payload and still preserves block separators", () => { const source = [ "Итого подтвержденная дебиторка: 1.000,00 ₽.", "", "Блок 1. Статус результата", "- Exact route.", "", "Блок 2. Что учтено", "- Дата среза: 31.07.2020.", "", "### technical_debug_payload_json", "```json", "{\"trace_id\":\"t-1\"}", "```" ].join("\n"); const sanitized = sanitizeAssistantReplyForUserFacing(source); expect(sanitized).toContain("Блок 1. Статус результата"); expect(sanitized).toContain("\n\nБлок 2. Что учтено\n"); expect(sanitized).not.toContain("technical_debug_payload_json"); expect(sanitized).not.toContain("trace_id"); }); });