import assert from "node:assert/strict"; import test from "node:test"; import { resolveEvidenceQuote, publicEvidenceItemStatus } from "../src/lib/rectification-agentic/v9/evidence-quote.ts"; const SOURCE = "2020年4月开始实习 6月转正 10月离职"; test("uses exact source-turn offsets for evidence quotes", () => { const intern = resolveEvidenceQuote(SOURCE, { quoteStart: 0, quoteEnd: 11 }); assert.equal(intern.ok, true); if (intern.ok) assert.equal(intern.quote, "2020年4月开始实习"); const rewritten = resolveEvidenceQuote(SOURCE, { quote: "2020年6月转正" }); assert.equal(rewritten.ok, false); if (!rewritten.ok) assert.equal(rewritten.errorCode, "quote_mismatch"); const original = resolveEvidenceQuote(SOURCE, { quote: "6月转正" }); assert.equal(original.ok, true); if (original.ok) assert.equal(original.quote, "6月转正"); }); test("returns per-item evidence batch results", () => { assert.equal(publicEvidenceItemStatus({ outcome: "accepted", idempotent: false, errorCode: null, }), "created"); assert.equal(publicEvidenceItemStatus({ outcome: "accepted", idempotent: true, errorCode: null, }), "already_exists"); assert.equal(publicEvidenceItemStatus({ outcome: "rejected", idempotent: false, errorCode: "quote_not_grounded", }), "quote_mismatch"); });