Files
microservice-importer/next_steps_MSImporter.md
T
2026-04-30 12:48:25 +02:00

146 lines
6.6 KiB
Markdown

# Plan för vidareutveckling av Microservice Importer
För att utveckla **Microservice Importer** vidare kan vi fokusera på att förbättra befintliga funktioner, lägga till nya funktioner, optimera arkitekturen och säkerställa skalbarhet. Nedan är en strukturerad plan för projektets fortsatta utveckling.
---
## 1. Förbättra befintliga funktioner
### a. PDF-import och konvertering
- **OCR-implementering**: Slutför OCR-stödet för skannade PDF-filer. Använd bibliotek som Tesseract.js för att extrahera text från bilder.
- **Förbättrad metadatahantering**: Lägg till stöd för fler metadatafält, såsom författare, nyckelord och språk.
- **Förbättrad felhantering**: Utöka felmeddelanden för att ge tydligare feedback vid problem med PDF-filer.
### b. Webb-skrapning
- **Utöka stöd för webbplatser**: Lägg till specifika parsers för fler populära receptwebbplatser.
- **Förbättrad robusthet**: Hantera dynamiskt innehåll och JavaScript-renderade sidor med verktyg som Puppeteer.
- **Caching**: Implementera caching för att minska belastningen på extern webbplatser och förbättra prestanda.
---
## 2. Lägga till nya funktioner
### a. Stöd för fler dokumentformat
- **Word-dokument**: Lägg till stöd för att importera och konvertera `.docx`-filer till Markdown.
- **Bildfiler**: Implementera OCR för att extrahera text från bilder (t.ex. `.jpg`, `.png`).
### b. Databasintegration
- **Lokal databas**: Lägg till stöd för att spara konverterade dokument och metadata i en databas (t.ex. PostgreSQL eller MongoDB).
- **Sökfunktion**: Implementera en sökfunktion för att enkelt hitta sparade dokument.
### c. Användarautentisering
- **Inloggning**: Lägg till autentisering för att skydda API:et och möjliggöra användarspecifika dokument.
- **Rollbaserad åtkomst**: Implementera roller för att styra åtkomst till olika funktioner.
---
## 3. Optimera arkitekturen
### a. Backend
- **Modulär struktur**: Se till att varje funktion är tydligt separerad i moduler för att underlätta underhåll och skalning.
- **Prestandaoptimering**: Använd caching och asynkron bearbetning för att förbättra prestandan vid stora filuppladdningar.
### b. Frontend
- **Förbättrad användarupplevelse**: Lägg till en förhandsgranskning av konverterade dokument innan de sparas.
- **Responsiv design**: Säkerställ att gränssnittet fungerar bra på mobila enheter.
---
## 4. Testning och kvalitetssäkring
### a. Enhetstestning
- **Backend**: Skriv enhetstester för alla tjänster och parsers.
- **Frontend**: Testa komponenter och API-anrop.
### b. Integrationstestning
- **API-tester**: Verifiera att alla API-endpoints fungerar som förväntat.
- **E2E-tester**: Testa hela flödet från filuppladdning till visning av konverterat dokument.
### c. Säkerhetstestning
- **Säkerhetsgranskning**: Kontrollera att API:et är skyddat mot vanliga säkerhetshot, såsom SQL-injektioner och CSRF-attacker.
---
## 5. Dokumentation och användarstöd
### a. API-dokumentation
- **Swagger/OpenAPI**: Lägg till automatiskt genererad API-dokumentation för att underlätta integration med andra system.
### b. Användarhandbok
- **Installationsguide**: Uppdatera `README.md` med tydliga instruktioner för installation och användning.
- **Felsökningsguide**: Lägg till vanliga problem och lösningar.
---
## 6. Skalbarhet och drift
### a. Containerisering
- **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.
---
## 7. Framtida utökningar
### a. AI-integration
- **Automatisk sammanfattning**: Använd NLP för att automatiskt sammanfatta konverterade dokument.
- **Smart kategorisering**: Klassificera dokument baserat på innehåll.
### b. Integration med molntjänster
- **Molnupladdning**: Lägg till stöd för att ladda upp dokument till molntjänster som Google Drive eller Dropbox.
---
## Prioriteringsförslag
1. **OCR-implementering** (hög prioritet)
2. **Databasintegration** (medel prioritet)
3. **Användarautentisering** (medel prioritet)
4. **Stöd för fler dokumentformat** (låg prioritet)
5. **AI-integration** (framtida utökning)