feat(docs): update NEXT_STEPS, README, and TEKNISK_BESKRIVNING with new features and improvements

This commit is contained in:
Nils-Johan Gynther
2026-04-17 23:20:21 +02:00
parent 470763715d
commit 84b49bc186
3 changed files with 200 additions and 48 deletions
+12 -20
View File
@@ -14,8 +14,11 @@
| Snabbimport (URL/PDF/bild/ICA) | ✅ Klart |
| Kvittoimport (Mistral AI, OCR, alias) | ✅ Klart |
| Matplanering (veckovy, inköpslista) | ✅ Klart |
| Matplan — portionsjustering per dag | ✅ Klart |
| Matplan — inventariejämförelse | ✅ Klart |
| Baslager (lista, lägg till, ta bort) | ✅ Klart |
| Admin: Produkter (edit, merge, duplicate, restore, reset) | ✅ Klart |
| Admin: Bulk-kategorisering | ✅ Klart |
| Receptredigering (frontend UX) | ✅ Klart |
| Receptbilder (upload URL) | ✅ Klart |
| Autentisering (JWT, Auth.js v5, User-modell) | ✅ Klart |
@@ -24,8 +27,7 @@
| Taggning av produkter | ✅ Klart |
| Näringsvärden på produkter | ✅ Klart (schema + API) |
| Kategoritilldelning i admin-UI | ✅ Klart |
| Portionsjustering | ❌ Saknas |
| Matplan — inventariejämförelse | ❌ Saknas |
| Kategori-seed (supplement, idempotent) | ✅ Klart |
| Seed produktdata med kategoritilldelning | ❌ Saknas (002-seed-products.sql.disabled) |
| Användarspecifika produkter (UserProduct) | ⚠️ Schema klart, UI basic |
| Användarroller (user / admin) | ❌ Saknas |
@@ -37,27 +39,17 @@
### 1. Seed produktdata med kategoritilldelning
`db/init/002-seed-products.sql` är inaktiverad (`.disabled`) tills den uppdateras med rätt `categoryId` för varje produkt. Utan detta är produktdatabasen tom vid fresh install.
- Gå igenom de ~190 produkterna och tilldela rätt kategori-ID från tabellen `Category`
- Gå igenom de ~190 produkterna och tilldela rätt kategori-ID från tabellen `Category` (nu inklusive supplement-kategorier)
- Aktivera filen igen genom att ta bort `.disabled`-suffixet
- Alternativt: bygg ett admin-verktyg för bulk-kategorisering
- Kontrollera att varje produkts `categoryId` matchar mot det ID som genereras i databasen (auto-increment — kör ett SELECT för att verifiera)
### 2. Portionsjustering av recept
Recept lagras utan portionsangivelse. Lägg till ett `servings`-fält och låt användaren justera antal portioner i receptvyn — ingrediensmängderna räknas om proportionellt (t.ex. 4 → 6 pers: × 1,5).
- **Databas:** `servings Int?``Recipe` i Prisma + migration
- **Backend:** `servings` exponeras i `RecipeDto`, sätts vid create/update
- **Frontend (`app/recipes/[id]/`):** räknare (+ / ) bredvid ingredienslistan, beräkning i klientkomponent utan extra API-anrop
- **Receptskapande (`write/`):** lägg till grundportioner-fält
- **Matplan (`app/matplan/`):** inköpslistan justeras efter önskat portionsantal per dag
### 2. Matplan — djupare inventariejämförelse i frontend
Backend-endpointen `GET /api/meal-plan/inventory-compare?from=...&to=...` returnerar ingrediensstatus per dag. Funktionen saknar dock en frontend-vy som tydligt visar "vad behöver jag handla — och vad har jag redan hemma?" aggregerat för hela veckan.
- Visa inköpslistan med tydliga statusindikatorer: ✅ Finns hemma / ⚠️ Delvis / ❌ Saknas
- Möjlig placering: ny flik i matplanen eller sidopanel i veckovy
- Kräver: aggregering av `inventory-compare`-svaret per ingrediens över hela veckan
### 3. Matplanering — jämförelse mot inventariet
Veckovy och inköpslista fungerar. Nästa steg är att visa vilka ingredienser på inköpslistan som redan finns hemma och i vilken mängd — liknande receptvyns inventory-preview. Implementeras via `GET /api/recipes/:id/inventory-preview` per recept, aggregerat på veckonivå.
### 4. Bulk-kategorisering av produkter i admin
Admin-UI:t tillåter idag att sätta kategori per produkt. För att effektivt kategorisera hundratals produkter behövs:
- Filtervy för okategoriserade produkter
- Möjlighet att sätta kategori på flera produkter samtidigt (bulk-select)
### 5. Användarroller och användarhantering i admin
### 3. Användarroller och användarhantering i admin
Idag har alla inloggade användare samma behörighetsnivå. Behövs:
- **Databas:** Lägg till `role` (enum `user` | `admin`) på `User`-modellen i Prisma + migration
- **Backend:** Rollbaserad guard (`@Roles('admin')`) — skyddar admin-endpoints; vanliga användare nekas med 403