44 lines
1.9 KiB
Markdown
44 lines
1.9 KiB
Markdown
# Microservice Importer
|
|
|
|
Intern import-tjänst (`importer-api`) för [recipe-app](../recipe-app). Den hanterar URL-skrapning, OCR, PDF-parsning och AI-kvittoparsning utan databas. Tjänsten körs som Docker-tjänst på det interna `recipe-internal`-nätverket och exponeras inte externt.
|
|
|
|
## Dokumentstatus (2026-05-10)
|
|
|
|
Det här dokumentet är skrivet för systemadministratörer och utvecklare som driftar eller vidareutvecklar importtjänsten. För arkitektur, drift och tekniska detaljer, se [TEKNISK_BESKRIVNING.md](TEKNISK_BESKRIVNING.md). För roadmap och prioriteringar, se [next_steps_MSImporter.md](next_steps_MSImporter.md).
|
|
|
|
## Vad tjänsten gör
|
|
|
|
- Tar emot URL:er, filer och markdown för importflöden
|
|
- Skrapar receptsidor och extraherar `imageUrl` när det finns
|
|
- Kör OCR för bilder och skannade dokument
|
|
- Tolkar kvitton via Mistral AI
|
|
- Returnerar strukturerad data till recipe-app utan att lagra någon session eller databaspost
|
|
|
|
## Flöden
|
|
|
|
- `POST /api/quick-import` för URL-skrapning, bild-OCR och PDF-import
|
|
- `POST /api/recipes/parse-markdown` för markdown till strukturerat recept
|
|
- `POST /api/receipt-import/parse` för kvittobild eller PDF till `ParsedReceiptItem[]`
|
|
- `GET /api/health` för Docker healthcheck
|
|
|
|
## Viktigt
|
|
|
|
- Inga absoluta Windows-sökvägar ska användas i kod eller scripts
|
|
- Tjänsten är stateless
|
|
- Ingen databas är konfigurerad i tjänsten
|
|
- Host-port 3001 används av `wetty` på servern och får därför inte exponeras av importtjänsten
|
|
|
|
## Kort faktadel
|
|
|
|
- Runtime: Node.js 22-alpine
|
|
- Ramverk: NestJS 10 + TypeScript 5
|
|
- OCR: `tesseract.js`
|
|
- PDF: `pdf-parse` med `pdfjs-dist/legacy` fallback
|
|
- AI: `@mistralai/mistralai`
|
|
- Upload: `multer`
|
|
- Alpine-paket: `tesseract-ocr`, `tesseract-ocr-data-swe`, `tesseract-ocr-data-eng`
|
|
|
|
## Support
|
|
|
|
- Git repo: Gitea på `192.168.50.2:2222/nilsjohan/microservice-importer`
|