feat: complete receipt import phase 6b with review flow, editing, and destination selection
This commit is contained in:
@@ -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.
|
||||
|
||||
@@ -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.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user