diff --git a/next_steps_MSImporter.md b/next_steps_MSImporter.md index b5f49ef..c1e0e29 100644 --- a/next_steps_MSImporter.md +++ b/next_steps_MSImporter.md @@ -78,6 +78,49 @@ För att utveckla **Microservice Importer** vidare kan vi fokusera på att förb - **Docker**: Se till att alla tjänster är korrekt containeriserade för enkel distribution. - **Orkestrering**: Använd Kubernetes för att hantera skalning och hög tillgänglighet. +--- + +## 7. Långsiktigt mål: Kvittoimport som strukturerade poster (Fas 6b) + +### Bakgrund +Idag returnerar `/receipt-import`-endpointen i `recipe-api` ett `markdown`-fält när en PDF-fil importeras. Flutter-klienten parsar då råtextraderna till `ParsedReceiptItem`-objekt på klientsidan. Detta är en tillfällig lösning. + +Det långsiktiga målet är att flytta denna logik till **Microservice Importer**, som ska ansvara för att tolka och strukturera kvitton till väldefinierade produktposter. + +### Mål +- **Microservice Importer** tar emot en kvittofil (PDF eller bild) och returnerar strukturerade poster: + ```json + { + "items": [ + { "rawName": "GURKA SVERIGE ST", "quantity": 1, "price": 16.90 }, + { "rawName": "DRUVOR RÖDA 500G", "quantity": 1, "price": 39.90 } + ], + "source": "pdf" + } + ``` +- **`recipe-api`** fungerar som proxy och vidarebefordrar filen till microservicen och returnerar strukturerade `items` till klienten. +- **Flutter-klienten** tar emot strukturerade `items` direkt och behöver inte längre parsa markdown på klientsidan. + +### Implementation + +#### Steg 1: Parser i Microservice Importer +- Implementera en kvittoparser som extraherar produktrader ur OCR-text från PDF/bild. +- Tolka kvantitet och pris ur varje rad med regex (t.ex. `GURKA SVERIGE ST 16,90`). +- Hantera svenska kvittoformat (Willys, ICA, Coop etc.). +- Returnera strukturerade `items[]` via ett eget API-endpoint, t.ex. `POST /parse-receipt`. + +#### Steg 2: Integration med recipe-api +- `recipe-api`/`/receipt-import` anropar Microservice Importer vid filuppladdning. +- Returnerar `{ items: [...], source: "pdf" }` till klienten i stället för `{ markdown: "..." }`. + +#### Steg 3: Uppdatera Flutter-klienten +- Ta bort den tillfälliga markdown-parsningen i `ImportRepository`. +- Hantera strukturerade `items` direkt från API-svaret. + +#### Steg 4: Granskningssteg och bulk-spara +- Visa importerade produkter i ett granskningssteg där användaren kan korrigera namn, kvantitet och pris. +- Implementera bulk-spara för att spara alla godkända poster till pantry/inventarie. + ### b. Övervakning och loggning - **Loggning**: Implementera centraliserad loggning för att enkelt kunna felsöka problem. - **Övervakning**: Använd verktyg som Prometheus och Grafana för att övervaka prestanda och tillgänglighet.