diff --git a/NEXT_STEPS.md b/NEXT_STEPS.md index 740adfae..8e9f88b7 100644 --- a/NEXT_STEPS.md +++ b/NEXT_STEPS.md @@ -13,6 +13,7 @@ | Snabbimport (URL/PDF/bild/ICA) | ✅ Klart | | Kvittoimport (Mistral AI, OCR, alias) | ✅ Klart | | Import-microservice (importer-api, backend-till-backend) | ✅ Klart (2026-04-30) | +| Kvittoimport — granskningsflöde i Flutter (edit, merge, destination) | ✅ Klart (2026-05-01) | | Matplanering (veckovy, inköpslista) | ✅ Klart | | Matplan — portionsjustering per dag | ✅ Klart | | Matplan — inventariejämförelse (backend) | ✅ Klart | @@ -53,9 +54,10 @@ | Avancerad AI-integration (veckoplanering, receptförslag) | ❌ Planerad | | EAN-skanning via Open Food Facts API | ❌ Planerad | -## Status — senast genomgånget: 2026-04-30 +## Status — senast genomgånget: 2026-05-01 ### Nyheter och förbättringar +- **Kvittoimport Fas 6b klar (2026-05-01)** — Flutter-granskningsflödet färdigt: per-rad checkbox, redigeringsdialog med destination-väljare (Inventarie/Baslager), merge-förhandsvisning, parallell laddning av inventarie och baslager, snackbar med separat räkning. - **Microservice-importer integrerad (2026-04-30)** — All import-logik (URL-skrapning, OCR, PDF-parsning, AI-kvittoparsning) delegeras nu till `importer-api` som körs som intern Docker-tjänst. `recipe-api` behåller Levenshtein-matchning, produktdatabas och AI-kategorisering. Se [migrering-MSI.md](migrering-MSI.md) för detaljer. - **User-scope för pantry och matplan** — Alla baslager- och matplansdata är nu per användare. Backend och Prisma-schema är migrerade. - **Robust bildimport** — Bild-URL normaliseras, laddas ner och optimeras i backend. Bilden kopplas till receptet och raderas vid delete. Diagnostikloggning på alla steg. @@ -71,7 +73,7 @@ ## Nästa steg -1. Slutför kvittoimport (granskningssteg och bulk-spara i Flutter). +1. Deploy och smoke-test av kvittoimportflödet på server. 2. Fortsatt flytt av UI-strängar till ARB (inventarie, pantry, recept). 3. Smoke-test på testdomän och avstämning. 4. Planera och påbörja avancerad AI-integration och EAN-skanning. diff --git a/flutter/next_steps_flutter.md b/flutter/next_steps_flutter.md index 2ddea92b..f05c7598 100644 --- a/flutter/next_steps_flutter.md +++ b/flutter/next_steps_flutter.md @@ -32,16 +32,15 @@ Relaterade dokument: ## Arbetsplan ### Pågående arbete -- **Kvittoimport (Fas 6b):** Grundflödet fungerar (2026-04-30) — PDF laddas upp, Mistral AI tolkar kvittot och returnerar strukturerade poster. Återstår: granskningssteg i UI och bulk-spara till pantry/inventarie. +- **Kvittoimport (Fas 6b):** ✅ Klar (2026-05-01) — Granskning, redigering, val av destination (inventarie/baslager), merge och spara implementerat. - **Bildimport:** Säkerställa att containrar är uppdaterade med senaste kod och att diagnostikloggar syns vid felsökning. - **Adminfunktioner:** Avancerad AI-integration och ytterligare adminfunktioner planeras men är ej migrerade. ### Prioriterade nästa steg -1. Slutför kvittoimport: granskningssteg + bulk-spara. -2. Säkerställa robust bildimport och diagnostik. -3. Implementera avancerad AI-integration för produktkategorisering. -4. Utöka adminfunktioner för användarhantering och produktadministration. -5. Förbättra UI/UX för användarflöden, inklusive onboarding och profilhantering. +1. Säkerställa robust bildimport och diagnostik. +2. Implementera avancerad AI-integration för produktkategorisering. +3. Utöka adminfunktioner för användarhantering och produktadministration. +4. Förbättra UI/UX för användarflöden, inklusive onboarding och profilhantering. ## Beslut 2026-04-22 - User-scope för pantry och matplan @@ -66,10 +65,10 @@ För v1 ska dessa flöden vara stabila i Flutter: - **Mål:** Säkerställa att alla kärnfunktioner är stabila och buggfria. - **Åtgärder:** - - [ ] **Kvittoimport (OCR, bulk-spara):** - - [ ] Implementera granskningssteg för kvittoimport. - - [ ] Bulk-spara för bekräftade rader. - - [ ] Säkerställa att `file_picker: ^8.0.0` är integrerat för filval på Flutter Web. + - [x] **Kvittoimport (OCR, bulk-spara) — KLAR 2026-05-01:** + - [x] Granskningssteg med checkbox, redigering och destination-väljare. + - [x] Bulk-spara till inventarie (ny/merge) eller baslager (ny/hoppa-över). + - [x] `file_picker: ^8.0.0` integrerat för filval på Flutter Web. - [ ] **UI/UX-förbättringar för adminpaneler:** - [ ] Lägg till tydlig placeholder-text i sökfältet. @@ -198,11 +197,16 @@ För v1 ska dessa flöden vara stabila i Flutter: - [x] Svar: `{ markdown: string, source: 'ica'|'pdf'|'image'|'other', imageUrl?: string }`. - [x] På lyckat resultat: navigera till `/recipes/create` med markdown-texten förifylld. -### 6b — Kvittoimport -- [ ] Endpoint: `POST /api/receipt-import` -- [ ] Läge: filuppladdning, `multipart/form-data`, fält `file`, max 15 MB. -- [ ] Svar: `ParsedReceiptItem[]` med fälten `rawName`, `quantity`, `unit`, `suggestedProductId?`, `suggestedProductName?`, `categorySuggestion?`. -- [ ] På lyckat resultat: granskningssteg där användaren bekräftar/skippar rader. +### 6b — Kvittoimport (KLAR 2026-05-01) +- [x] Endpoint: `POST /api/receipt-import` +- [x] Läge: filuppladdning, `multipart/form-data`, fält `file`, max 15 MB. +- [x] Svar: `ParsedReceiptItem[]` med fälten `rawName`, `quantity`, `unit`, `suggestedProductId?`, `suggestedProductName?`, `categorySuggestion?`. +- [x] Granskningssteg: checkboxlista med per-rad redigering (produkt, antal, enhet, destination). +- [x] Destination per rad: **Inventarie** eller **Baslager** via SegmentedButton i redigeringsdialogen. +- [x] Inventarie: ny post skapas, eller befintlig post slås ihop (PATCH quantity) med merge-förhandsvisning. +- [x] Baslager: produkt läggs till om den inte redan finns, annars hoppas den över. +- [x] AI-kategorisuggestion visas som chip (grön, `AI: kategori`) för premium-användare. +- [x] Snackbar med separat räkning: skapade/sammanslagna i inventarie + tillagda/redan-i-baslager. ## UI/UX-förbättringar (KLAR 2026-04-22) - [x] Produktval med bottenark (ProductPickerField) i inventarie/pantry. @@ -371,12 +375,12 @@ Relaterade dokument: ## Arbetsplan ### Pågående arbete -- **Kvittoimport (Fas 6b):** Påbörjad men granskningssteg och bulk-spara återstår. +- **Kvittoimport (Fas 6b):** ✅ Klar (2026-05-01) — granskningssteg, destination-väljare, merge och spara klart. - **Bildimport:** Säkerställa att containrar är uppdaterade med senaste kod och att diagnostikloggar syns vid felsökning. - **Adminfunktioner:** Avancerad AI-integration och ytterligare adminfunktioner planeras men är ej migrerade. ### Prioriterade nästa steg -1. Slutför kvittoimport och bulk-spara. +1. ~~Slutför kvittoimport och bulk-spara.~~ ✅ Klart (2026-05-01) 2. Säkerställa robust bildimport och diagnostik. 3. Implementera avancerad AI-integration för produktkategorisering. 4. Utöka adminfunktioner för användarhantering och produktadministration. diff --git a/flutter/teknisk_beskrivning_flutter.md b/flutter/teknisk_beskrivning_flutter.md index 6553f8ad..209ba6aa 100644 --- a/flutter/teknisk_beskrivning_flutter.md +++ b/flutter/teknisk_beskrivning_flutter.md @@ -2,6 +2,18 @@ Viktigt att komma ihåg vid implementering av nya funktioner och kodning är att inte använda Windows-sökvägar. Använd inte `c:/dev/recipe-app/...` eftersom bygg- och testmiljön är på en remote Ubuntu-server. Utveckling sker lokalt och test samt drift sker på remote server. Säkerställ att inga absoluta Windows-sökvägar används i koden, för att stödja bygg och drift på Linux/Ubuntu. +## Senaste ändringar (2026-05-01) + +**Kvittoimport Fas 6b — komplett:** +- Granskningssteg i `receipt_import_tab.dart` med per-rad checkbox, redigeringsdialog och destinationsväljare. +- Destinationsväljare: **Inventarie** eller **Baslager** via `SegmentedButton<_Destination>` i redigeringsdialogen. +- Vid vald destination **Baslager** dolt antal/enhet-fält med informationstext. +- Inventarie-flöde: skapar ny post eller slår ihop (PATCH quantity) med befintlig post. Förhandsvisning av ny mängd visas i listan. +- Baslager-flöde: lägger till produkten om den inte redan finns. Befintliga baslagerprodukter visas med orange chip. +- Snackbar visar separat räkning: skapade/sammanslagna i inventarie + tillagda/hoppa-över i baslager. +- `_loadInventory()` laddar nu inventarie och baslager i parallell via `Future.wait`. +- AI-kategorisuggestion chip (grön) visas för premium-användare i granskningslistan. + ## Senaste ändringar (2026-04-25) **Arkitektur- och UX-förbättringar:** @@ -64,7 +76,7 @@ Viktigt att komma ihåg vid implementering av nya funktioner och kodning är att - `{ markdown: "..." }` är svaret från `/quick-import` (receptimport) — inte kvittoimport. ## Övrigt -- **Kvittoimport (Fas 6b):** Grundflödet fungerar. Återstår: granskningssteg i UI och bulk-spara till pantry/inventarie. +- **Kvittoimport (Fas 6b):** ✅ Klar (2026-05-01) — granskningssteg, destination-väljare, merge och spara till inventarie/baslager. - **Bildimport:** Säkerställa att containrar är uppdaterade med senaste kod och att diagnostikloggar syns vid felsökning. - **Adminfunktioner:** Avancerad AI-integration och ytterligare adminfunktioner planeras men är ej migrerade.