# Nasta steg Detta ar huvudroadmap for Recipe App. All detaljhistorik och djup teknisk bakgrund finns i respektive tekniska dokument. ## Dokumentstatus (2026-05-03) - Fokus: en gemensam prioriteringslista for produkt, utveckling och drift. - Delplaner for underomraden ska referera hit, inte duplicera hela roadmapen. ## Nyligen klart - Kvittoimport: förbättrad antal/förpackningsinferens och robustare regelmotor. - Kategorisering: utökade brödregler + contradiction guards och nya regler för pasta, grädde, ägg, juice, godis, och potatis. - Kategoriträd: nya noder `Korvbröd` under `Fastfoodbröd` och `Grädde` under `Matlagning` i seed-data. - Flutter: klientpersistens för pågående kvittoimport. - Produktmodell: user-scoped produkter och seed renodlad till kategorier. - Testinfrastruktur: parametriserade enhetstester för kvittoimport (18 testfall). - CI/CD: GitHub Actions-pipeline för automatiserad testkörning vid push och pull request. - **Node.js versionsparitet:** `package-lock.json` spåras nu i git för båda repos; Dockerfiles kör `npm ci` — reproducerbara byggen i alla miljöer. - **PDF-kvittoimport stabiliserad:** `pdf-parse` CJS-fix + `pdfjs-dist/legacy` fallback löser `DOMMatrix`-fel i Node.js. - **Felkods-forwarding fixad:** `receipt-import.service.ts` i recipe-api vidarebefordrar nu 503 från importer-api som `ServiceUnavailableException` istället för att alltid returnera 400. - **AI-optimering (PDF):** `looksLikeReceiptProductLine()` i importer-api filtrerar bort header/footer-rader — Mistral anropas enbart för rader som faktiskt kan vara produkter. ## Huvudprioriteringar 1. Aliasstrategi i kvittoimport: user-scope som standard, global fallback via admin. 3. Stabilisera bildimport och diagnostik i alla miljoer. 4. Lokalisera kvarvarande stora Flutter-vyer i import/inventarie. 5. Forbereda avancerad AI-integration med tydlig loggning/audit. 6. Pa borja EAN-stod via Open Food Facts. ## Beslut som styr arbetet - User-scope for data som ar personligt agd. - Backend-kontrakt ar sanningskalla; klienter foljer kontrakten. - Importfunktionalitet ar delegerad till microservice-importer dar det ar beslutat. ## Framtida förbättringsområden ### Alternativa ingredienser — migrering till relationsmodell (Option B) Nuläge: `RecipeIngredient.alternativeProductIds` lagras som JSON-kolumn (Option A). Detta fungerar men saknar referensintegritet — om en alternativ produkt tas bort uppdateras inte kolumnen automatiskt. Framtida lösning: Ersätt JSON-kolumnen med en separat tabell: ```prisma model RecipeIngredientAlternative { id Int @id @default(autoincrement()) recipeIngredientId Int recipeIngredient RecipeIngredient @relation(fields: [recipeIngredientId], references: [id], onDelete: Cascade) productId Int product Product @relation(fields: [productId], references: [id], onDelete: Cascade) } ``` Fördelar: FK-integritet, möjlig sortering/prioritering av alternativ, lättare att querrya. Förutsättning: migration som konverterar befintlig JSON-data till rader i tabellen. ## Relaterade dokument - `README.md` - anvandarperspektiv. - `TEKNISK_BESKRIVNING.md` - teknisk huvudreferens. - `produktlansering.md` - releasechecklista. - `migrering-MSI.md` - migreringshistorik for importer. - `flutter/next_steps_flutter.md` - Flutter-specifik plan. - `_archive/microservice-ai/AI-FUNKTIONER.md` - AI-strategi och historik.