feat: enhance PDF processing and error handling; add Node.js version tracking
Test Suite / test (24.15.0) (push) Has been cancelled
Test Suite / test (24.15.0) (push) Has been cancelled
Co-authored-by: Copilot <copilot@github.com>
This commit is contained in:
+5
-2
@@ -17,11 +17,14 @@ All detaljhistorik och djup teknisk bakgrund finns i respektive tekniska dokumen
|
|||||||
- Produktmodell: user-scoped produkter och seed renodlad till kategorier.
|
- Produktmodell: user-scoped produkter och seed renodlad till kategorier.
|
||||||
- Testinfrastruktur: parametriserade enhetstester för kvittoimport (18 testfall).
|
- Testinfrastruktur: parametriserade enhetstester för kvittoimport (18 testfall).
|
||||||
- CI/CD: GitHub Actions-pipeline för automatiserad testkörning vid push och pull request.
|
- 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
|
## 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.
|
1. Aliasstrategi i kvittoimport: user-scope som standard, global fallback via admin.
|
||||||
2. Aliasstrategi i kvittoimport: user-scope som standard, global fallback via admin.
|
|
||||||
3. Stabilisera bildimport och diagnostik i alla miljoer.
|
3. Stabilisera bildimport och diagnostik i alla miljoer.
|
||||||
4. Lokalisera kvarvarande stora Flutter-vyer i import/inventarie.
|
4. Lokalisera kvarvarande stora Flutter-vyer i import/inventarie.
|
||||||
5. Forbereda avancerad AI-integration med tydlig loggning/audit.
|
5. Forbereda avancerad AI-integration med tydlig loggning/audit.
|
||||||
|
|||||||
@@ -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.
|
- **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.
|
- **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.
|
- **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
|
### Driftnotering
|
||||||
Verifiera efter deploy att seed-körning inkluderar uppdaterat kategoriträd och att kvittoflödet använder den senaste regelbaserade parserlogiken.
|
Verifiera efter deploy att seed-körning inkluderar uppdaterat kategoriträd och att kvittoflödet använder den senaste regelbaserade parserlogiken.
|
||||||
|
|||||||
@@ -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.
|
- 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.
|
- 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`.
|
- 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
|
- **Scope:** quick-import, parse-markdown, receipt-import
|
||||||
- **Arkitektur:** Backend-till-backend — recipe-app NestJS-backend anropar microservice-importer internt via HTTP. Frontend ändras inte.
|
- **Arkitektur:** Backend-till-backend — recipe-app NestJS-backend anropar microservice-importer internt via HTTP. Frontend ändras inte.
|
||||||
|
|||||||
Reference in New Issue
Block a user