feat: Enhance README and technical description with quick-import module details and parser architecture

This commit is contained in:
Nils-Johan Gynther
2026-04-12 17:09:40 +02:00
parent 8fe9a7a4d2
commit e90fd2d670
2 changed files with 74 additions and 4 deletions
+40 -3
View File
@@ -127,10 +127,14 @@ backend/src/
│ ├── update-product.dto.ts
│ ├── merge-products.dto.ts
│ └── update-canonical-name.dto.ts
├── quick-import/ # NYT: Snabbimport-modul
├── quick-import/ # 🆕 Snabbimport-modul
│ ├── quick-import.controller.ts # POST /api/quick-import
│ ├── quick-import.service.ts # ICA-skrapning, PDF-stöd
── quick-import.module.ts # Module definition
│ ├── quick-import.service.ts # ICA-skrapning, URL-parsing
── quick-import.module.ts # Module definition
│ └── parsers/
│ ├── base.parser.ts # Abstract RecipeParser class
│ ├── ica.parser.ts # ICA.se-specifik parser (JSON-LD)
│ └── generic.parser.ts # Fallback-parser (HTML + JSON-LD)
└── recipes/
├── recipes.controller.ts # Recept endpoints
├── recipes.service.ts # Recept + Markdown-parsing
@@ -148,6 +152,22 @@ backend/src/
- Databasspecifik hälsokontroll (responseTime, connection test)
- Returnerar statusCode 200 eller 503
**Quick-Import API:** 📌 (Även tillgänglig via [Microservice Importer](../microservice-importer/))
- **Endpoint:** `POST /api/quick-import`
- **Input:** URL (t.ex. `https://ica.se/recept/...`) eller filsökväg (PDF)
- **Process:**
1. URL-validering (HTTP fetch med User-Agent)
2. Parser-urval baserat på `canHandle(url)`
3. HTML-parsing och receptextraktion
4. Markdown-konvertering med källlänk i footer
- **Parser-arkitektur:**
- **Base Parser** (`RecipeParser`): Abstract class med gemensam parseIngredientLine()-logik
- Hanterar bråkmängder (1 1/2 dl), parentetiska noter, unit-validering
- Kända enheter: g, kg, hg, mg, ml, dl, l, tl, st, tsk, msk, krm, port, efter smak, förp, klyfta, m.fl.
- **ICA Parser** (`IcaRecipeParser`): Prioriterar JSON-LD structured data, fallback HTML
- **Generic Parser** (`GenericRecipeParser`): Försöker alla webbplatser (JSON-LD → HTML)
- **Output:** Markdown-format recepttext (namn, beskrivning, ingredienser, instruktioner, källa)
**Inventarie-API:**
- CRUD för inventarieföremål (produktreferens, kvantitet, enhet, plats, märke, bäst före, mm)
- Konsumtionshistorik-tracking (registrera brukat amount och kommentar)
@@ -710,3 +730,20 @@ Konfigureras via `.env` eller `docker compose up`:
- Recept-delning
- Nutrition facts
- Allergi-tracking
---
## Framtida arkitektur: Microservice Importer
Recipe App har ett **companion-projekt** för receptimport: [`microservice-importer`](../microservice-importer/)
### Nuläge
Quick-import-funktionen är för närvarande **integrerad i Recipe App** med full funktionalitet.
### Framtida möjlighet
I framtiden kan snabbimport-logiken extraheras till en **standalone microservice** för:
- Oberoende scaling
- Enklare API-integration med andra system
- Lägre komplexitet (ingen databaskonfiguration)
Se [microservice-importer README](../microservice-importer/README.md) för komplett dokumentation och deployment-instruktioner när separation blir aktuell.