diff --git a/NEXT_STEPS.md b/NEXT_STEPS.md index 207ce6d1..3c27c23f 100644 --- a/NEXT_STEPS.md +++ b/NEXT_STEPS.md @@ -17,11 +17,14 @@ All detaljhistorik och djup teknisk bakgrund finns i respektive tekniska dokumen - Produktmodell: user-scoped produkter och seed renodlad till kategorier. - Testinfrastruktur: parametriserade enhetstester för kvittoimport (18 testfall). - CI/CD: GitHub Actions-pipeline för automatiserad testkörning vid push och pull request. +- **Node.js versionsparitet:** `package-lock.json` spåras nu i git för båda repos; Dockerfiles kör `npm ci` — reproducerbara byggen i alla miljöer. +- **PDF-kvittoimport stabiliserad:** `pdf-parse` CJS-fix + `pdfjs-dist/legacy` fallback löser `DOMMatrix`-fel i Node.js. +- **Felkods-forwarding fixad:** `receipt-import.service.ts` i recipe-api vidarebefordrar nu 503 från importer-api som `ServiceUnavailableException` istället för att alltid returnera 400. +- **AI-optimering (PDF):** `looksLikeReceiptProductLine()` i importer-api filtrerar bort header/footer-rader — Mistral anropas enbart för rader som faktiskt kan vara produkter. ## Huvudprioriteringar -1. Node.js versionsparitet i alla miljöer: lås samma major/minor i lokal utveckling, Docker och CI för att undvika miljödrift och svårfelsökta importfel. -2. Aliasstrategi i kvittoimport: user-scope som standard, global fallback via admin. +1. Aliasstrategi i kvittoimport: user-scope som standard, global fallback via admin. 3. Stabilisera bildimport och diagnostik i alla miljoer. 4. Lokalisera kvarvarande stora Flutter-vyer i import/inventarie. 5. Forbereda avancerad AI-integration med tydlig loggning/audit. diff --git a/TEKNISK_BESKRIVNING.md b/TEKNISK_BESKRIVNING.md index e0b14fe2..31fe5a03 100644 --- a/TEKNISK_BESKRIVNING.md +++ b/TEKNISK_BESKRIVNING.md @@ -18,6 +18,10 @@ Detta dokument är skrivet för systemadministratörer och programmerare. Fokus - **Kvittokategorisering:** förbättrad deterministisk kategorisering med nya regler för pasta, grädde, ägg, juice, godis, och potatis. AI-guardrail justerad för att tillåta medium confidence-kategorisering. - **Testinfrastruktur:** parametriserade enhetstester för kvittoimport (18 testfall) och CI/CD-pipeline med automatiserad testkörning på push. - **CI/CD:** GitHub Actions-integration för automatiserad testkörning vid push och pull request. +- **Node.js versionsparitet:** `package-lock.json` spåras i git för båda repos; Dockerfiles kör `npm ci` för reproducerbara byggen. +- **PDF-kvittoimport:** `pdf-parse` importeras med `require()` (CJS); `pdfjs-dist/legacy/build/pdf.js` som fallback undviker `DOMMatrix`-fel. +- **Felkods-forwarding:** `receipt-import.service.ts` kastar `ServiceUnavailableException` vid 503/429 från importer-api (tidigare alltid 400). +- **AI-skippning (PDF):** `looksLikeReceiptProductLine()` i importer-api filtrerar rader utan siffra — minskar Mistral-anrop drastiskt för vanliga PDF-kvitton. ### Driftnotering Verifiera efter deploy att seed-körning inkluderar uppdaterat kategoriträd och att kvittoflödet använder den senaste regelbaserade parserlogiken. diff --git a/migrering-MSI.md b/migrering-MSI.md index 714d5441..edf2b345 100644 --- a/migrering-MSI.md +++ b/migrering-MSI.md @@ -12,6 +12,10 @@ Detta dokument är för systemadministratörer och utvecklare som ansvarar för - Brödrelaterade kategoriregler och contradiction guards har utökats för högre träffsäkerhet. - Klientens kvittosession i Flutter är nu persistent utan att ändra backendkontrakt eller införa serverlagring av sessionen. - Kategoriträdet i seed-data har utökats med `Korvbröd` under `Fastfoodbröd`. +- **PDF-fix (2026-05-03):** `pdf-parse` använder `require()` istället för ESM-import; `pdfjs-dist/legacy/build/pdf.js` är fallback vid parsningsfel — löser `DOMMatrix is not defined` i Node.js Alpine-miljö. +- **Felkods-forwarding (2026-05-03):** `receipt-import.service.ts` returnerar nu `ServiceUnavailableException` (503) vid 503/429 från importer-api istället för `BadRequestException` (400). +- **Reproducerbart bygge (2026-05-03):** `package-lock.json` spåras i git; Dockerfile för importer-api kör `npm ci`. +- **AI-optimering (2026-05-03):** `looksLikeReceiptProductLine()` filtrerar PDF-rader utan siffra innan Mistral-anrop — minskar onödiga API-anrop vid kvittoimport. - **Scope:** quick-import, parse-markdown, receipt-import - **Arkitektur:** Backend-till-backend — recipe-app NestJS-backend anropar microservice-importer internt via HTTP. Frontend ändras inte.