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

6.6 KiB

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:
    {
      "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)