fix: accepter les réponses IA avec contrôles OCR
This commit is contained in:
29
server/invoiceExtractor.test.ts
Normal file
29
server/invoiceExtractor.test.ts
Normal file
@@ -0,0 +1,29 @@
|
||||
import { describe, expect, it } from "vitest";
|
||||
import { cleanJsonResponse } from "./invoiceExtractor";
|
||||
|
||||
describe("cleanJsonResponse", () => {
|
||||
it("supprime les caractères de contrôle bruts dans une chaîne JSON LLM", () => {
|
||||
const rawResponse = `{
|
||||
"pageCount": 1,
|
||||
"invoiceCount": 1,
|
||||
"invoices": [{
|
||||
"supplierName": "Manus AI",
|
||||
"invoiceNumber": "J6LNGDAL-0021",
|
||||
"extractedText": "Ligne valide\u0000suite du texte"
|
||||
}]
|
||||
}`;
|
||||
|
||||
const parsed = JSON.parse(cleanJsonResponse(rawResponse));
|
||||
|
||||
expect(parsed.invoices[0].invoiceNumber).toBe("J6LNGDAL-0021");
|
||||
expect(parsed.invoices[0].extractedText).toBe("Ligne validesuite du texte");
|
||||
});
|
||||
|
||||
it("préserve les retours à la ligne échappés dans les chaînes JSON", () => {
|
||||
const rawResponse = '{"invoices":[{"extractedText":"Ligne 1\nLigne 2"}] }';
|
||||
|
||||
const parsed = JSON.parse(cleanJsonResponse(rawResponse));
|
||||
|
||||
expect(parsed.invoices[0].extractedText).toBe("Ligne 1\nLigne 2");
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user