feat: Add long-term goal for structured receipt import with parser implementation
Co-authored-by: Copilot <copilot@github.com>
This commit is contained in:
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user