From 996f0d774b5afa71f5a7aaa72a060d21f7840ec4 Mon Sep 17 00:00:00 2001 From: Nils-Johan Gynther Date: Tue, 19 May 2026 22:01:44 +0200 Subject: [PATCH] Updatede documentation --- NEXT_STEPS.md | 10 +++- README.md | 8 +++ TEKNISK_BESKRIVNING.md | 11 ++++- _archive/docs/flutter/README.md | 24 ++++----- _archive/docs/flutter/next_steps_flutter.md | 55 +++++++++------------ _archive/frontend/README.md | 6 ++- 6 files changed, 66 insertions(+), 48 deletions(-) diff --git a/NEXT_STEPS.md b/NEXT_STEPS.md index 48e70d57..1c89d2d2 100644 --- a/NEXT_STEPS.md +++ b/NEXT_STEPS.md @@ -43,6 +43,14 @@ MVP ar uppnadd nar en vanlig anvandare kan importera, granska och spara kvitto/r ## Nyligen klart +## Utförda steg (2026-05-19) + +- [x] **Flyerimport-sessioner i backend:** Implementerat session-endpoints för senaste och specifik session. +- [x] **Flyerimport-persistens i Flutter:** Lättviktig lagring i `SharedPreferences` med `sessionId` + vald state. +- [x] **Hydreringsflöde i klient:** Restore lokalt -> hämta via sessionId -> fallback till latest-session. +- [x] **HTTP-semantik + optimering:** 404 för saknad session och single-query för latest-session. +- [x] **Regressionstester:** Backendtester för flyer-sessioner tillagda och gröna (3/3). + ## Utförda steg (2026-05-18) - [x] **ESLint i backend + CI:** ESLint-konfiguration tillagd i backend och CI-workflow uppdaterad med lint-step för PR/push. @@ -141,7 +149,7 @@ MVP ar uppnadd nar en vanlig anvandare kan importera, granska och spara kvitto/r - Deploy-script förbättrad med selektiv build och seed-kontroll - Se `SESSION_2026-05-09_RECEIPT_IMPORT.md` för detaljer - **Todo:** Deploy till prod, testa i live miljö, ev. add UI för user private rename/merge -4. Stabilisera bildimport och diagnostik i alla miljöer. +4. Verifiera flyerimportens sessionhydrering end-to-end i test/staging (tab-byte + app-omstart). 5. Lokalisera kvarvarande stora Flutter-vyer i import/inventarie. 6. Förbereda avancerad AI-integration med tydlig loggning/audit. 7. Påbörja EAN-stöd via Open Food Facts. diff --git a/README.md b/README.md index 4e0b905b..a7efc3a3 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,12 @@ +# Nyheter och förbättringar (2026-05-19) + +- **Flyerimport-sessioner i backend:** Nya endpoints `GET /api/flyer-import/sessions/latest` och `GET /api/flyer-import/sessions/:sessionId` för att återhämta senaste eller specifik importsession per användare. +- **Persistens i Flutter för flyerimport:** `flyer_import_session.dart` sparar nu endast `sessionId`, `fileName` och valda rader i `SharedPreferences` för lättviktig cache. +- **Hydrering vid återöppning:** Flutter-tabben återläser lokalt tillstånd och hämtar därefter full session från backend, med fallback till senaste session. +- **Robustare felsemantik:** Backend returnerar `NotFoundException` (404) för saknade sessioner i stället för `BadRequestException`. +- **Verifiering:** Backend typecheck och tjänstetester (`flyer-import.service.spec.ts`, 3/3) passerar. + # Nyheter och förbättringar (2026-05-18) - **CI: ESLint för backend:** ESLint är infört i backend (`backend/eslint.config.mjs`) och körs i GitHub Actions (`.github/workflows/test.yml`) via steget `Lint backend`. diff --git a/TEKNISK_BESKRIVNING.md b/TEKNISK_BESKRIVNING.md index 064573e2..8db090c7 100644 --- a/TEKNISK_BESKRIVNING.md +++ b/TEKNISK_BESKRIVNING.md @@ -1,4 +1,13 @@ -# Migrering: Import-funktion → microservice-importer (GENOMFÖRD 2026-04-30) +# Nyheter och förbättringar (2026-05-19) + +- **Flyer-session API i recipe-api:** `flyer-import.controller.ts` exponerar `GET /api/flyer-import/sessions/latest` och `GET /api/flyer-import/sessions/:sessionId`. +- **Sessionmappning i service-lager:** `toFlyerImportResponseFromSession(...)` samlar mappning av session + items till standardiserat API-svar. +- **HTTP-semantik:** Saknad session returnerar `NotFoundException` (404), vilket förenklar klientlogik och observability. +- **Query-optimering:** `getLatestSession(...)` använder en enda Prisma-fråga med `include: items` i stället för dubbelhämtning. +- **Flutter-cache-strategi:** Klienten persisterar endast metadata (`sessionId`, filnamn, valda rader) och hämtar full data från backend vid hydrering. +- **Teststatus:** `flyer-import.service.spec.ts` verifierar not-found, ägd session och tom latest-session (3/3 gröna). + +# Migrering: Import-funktion → microservice-importer (GENOMFÖRD 2026-04-30) Recipe-apps importflöde (quick-import, parse-markdown, receipt-import) är nu migrerat till en separat microservice-importer: - All URL-skrapning, OCR, PDF-parsning och AI-kvittoparsning sker i microservice-importer (NestJS, Docker, port 3001 internt). diff --git a/_archive/docs/flutter/README.md b/_archive/docs/flutter/README.md index d3213ee3..07573ea3 100644 --- a/_archive/docs/flutter/README.md +++ b/_archive/docs/flutter/README.md @@ -3,7 +3,7 @@ Detta dokument ar for anvandare och operativa testare. Har beskriver vi vad som fungerar i Flutter-klienten och hur den anvands i praktiken. -## Dokumentstatus (2026-05-03) +## Dokumentstatus (2026-05-19) - Fokus: anvandarflode, inte implementation. - Teknisk detaljniva finns i `teknisk_beskrivning_flutter.md`. @@ -14,12 +14,14 @@ Har beskriver vi vad som fungerar i Flutter-klienten och hur den anvands i prakt Flutter-webben ar en klient for Recipe App som kors i Docker och exponeras via Caddy. Den anvands parallellt med Next-frontenden under migrering och verifiering. -## Senaste forbattringar - -- Kvittoimportens granskningsflode ar klart och stabiliserat. -- Pagande kvittoimport sparas i klientens session och kan atertas efter refresh/navigation. -- Tolkning av antal/forpackning i kvittorader ar forbattrad, inklusive format som `2st`. -- AI-kategoriforslag och produktforslag visas separerat for tydligare val. +## Senaste forbattringar + +- Kvittoimportens granskningsflode ar klart och stabiliserat. +- Pagande kvittoimport sparas i klientens session och kan atertas efter refresh/navigation. +- Tolkning av antal/forpackning i kvittorader ar forbattrad, inklusive format som `2st`. +- AI-kategoriforslag och produktforslag visas separerat for tydligare val. +- Flyerimport har nu sessionpersistens med lattviktig cache (`sessionId`, filnamn, valda rader). +- Flyer-tabben hydrerar tillstand via backend-sessioner vid aterbesok och app-omstart. ## Aktuella anvandarfloden @@ -46,8 +48,6 @@ Den anvands parallellt med Next-frontenden under migrering och verifiering. - `teknisk_beskrivning_flutter.md` - teknisk referens for drift/utveckling. - `../README.md` - overgripande produktinformation. -## 2026-05-10: Admin-inventarie (CRUD, merge, filter, sortering, preview, säkerhet), user-scope, IDOR-skydd, säkerhetshärdning, optimeringar och utökad testtäckning är nu genomförda och dokumenterade i README, TEKNISK_BESKRIVNING, SÄKERHETSHÄRDNINGSPLAN och SESSIONLOGGAR. - -## 2026-05-10: Admin-inventarie (CRUD, merge, filter, sortering, preview, säkerhet), user-scope, IDOR-skydd, säkerhetshärdning, optimeringar och utökad testtäckning är nu genomförda och dokumenterade i README, TEKNISK_BESKRIVNING, SÄKERHETSHÄRDNINGSPLAN och SESSIONLOGGAR. - -## 2026-05-10: Admin-inventarie (CRUD, merge, filter, sortering, preview, säkerhet), user-scope, IDOR-skydd, säkerhetshärdning, optimeringar och utökad testtäckning är nu genomförda och dokumenterade i README, TEKNISK_BESKRIVNING, SÄKERHETSHÄRDNINGSPLAN och SESSIONLOGGAR. +## Notering + +Aktiv och detaljerad status for Flutter-sparet finns i rotens dokumentation och i teknisk Flutter-dokumentation i samma katalog. diff --git a/_archive/docs/flutter/next_steps_flutter.md b/_archive/docs/flutter/next_steps_flutter.md index a5b144b9..847b16d8 100644 --- a/_archive/docs/flutter/next_steps_flutter.md +++ b/_archive/docs/flutter/next_steps_flutter.md @@ -3,22 +3,24 @@ Detta dokument ar Flutter-teamets roadmap och prioriteringslista. All historik och implementationdetaljer finns i `teknisk_beskrivning_flutter.md`. -## Dokumentstatus (2026-05-03) +## Dokumentstatus (2026-05-19) - Fokus: aktiv planering framat. - Endast en roadmap for Flutter for att undvika dubbletter. -## Klart senaste sessionerna +## Klart senaste sessionerna + +- Fas 6b: granskningsflode for kvittoimport (edit, destination, merge, spara). +- Fas 6c: separering av AI-kategorichip och produktforslagschip. +- Fas 6d: klientpersistens for pagande kvittoimport + forbattrad antal/forpackningsinferens. +- Flyerimport: sessionpersistens i klient och backend-hydrering via sessions-endpoints. -- Fas 6b: granskningsflode for kvittoimport (edit, destination, merge, spara). -- Fas 6c: separering av AI-kategorichip och produktforslagschip. -- Fas 6d: klientpersistens for pagande kvittoimport + forbattrad antal/forpackningsinferens. - -## Pagande arbete - -- Robust bildimport och diagnostik i drift. -- Aliasstrategi i kvittoimport (hybrid user-scope + global fallback via admin). -- Utokad adminfunktionalitet i Flutter-sparet. +## Pagande arbete + +- Robust bildimport och diagnostik i drift. +- Aliasstrategi i kvittoimport (hybrid user-scope + global fallback via admin). +- Utokad adminfunktionalitet i Flutter-sparet. +- E2E-verifiering av flyerimport: tab-byte, refresh och app-omstart i staging. ## Prioriterade nasta steg @@ -34,11 +36,11 @@ All historik och implementationdetaljer finns i `teknisk_beskrivning_flutter.md` - AI-guiding labels ("Denna rad matchade mejeri automatiskt") - Implementering: ~8h -2. Verifiera bildimport och felhantering end-to-end i testmiljo. -3. Implementera alias-inlarning vid manuell korrigering i importflodet. -4. Forbattra UI/UX i granskningsfloden for kvittoimport. -5. Fortsatt migrering av kvarvarande adminfloden. -6. Lokalisera kvarvarande delar i import- och inventarievyer. +2. Verifiera bildimport och felhantering end-to-end i testmiljo. +3. Implementera alias-inlarning vid manuell korrigering i importflodet. +4. Forbattra UI/UX i granskningsfloden for kvittoimport. +5. Fortsatt migrering av kvarvarande adminfloden. +6. Lokalisera kvarvarande delar i import- och inventarievyer. ## Viktiga beslut @@ -52,20 +54,7 @@ All historik och implementationdetaljer finns i `teknisk_beskrivning_flutter.md` - `teknisk_beskrivning_flutter.md` - teknisk referens. - `../NEXT_STEPS.md` - overgripande roadmap for hela produkten. -## 2026-05-10: Admin-inventarie (CRUD, merge, filter, sortering, preview, säkerhet), user-scope, IDOR-skydd, säkerhetshärdning, optimeringar och utökad testtäckning är nu genomförda och dokumenterade i README, TEKNISK_BESKRIVNING, SÄKERHETSHÄRDNINGSPLAN och SESSIONLOGGAR. - -## 2026-05-10: Admin-inventarie (CRUD, merge, filter, sortering, preview, säkerhet), user-scope, IDOR-skydd, säkerhetshärdning, optimeringar och utökad testtäckning är nu genomförda och dokumenterade i README, TEKNISK_BESKRIVNING, SÄKERHETSHÄRDNINGSPLAN och SESSIONLOGGAR. - -## 2026-05-10: Admin-inventarie (CRUD, merge, filter, sortering, preview, säkerhet), user-scope, IDOR-skydd, säkerhetshärdning, optimeringar och utökad testtäckning är nu genomförda och dokumenterade i README, TEKNISK_BESKRIVNING, SÄKERHETSHÄRDNINGSPLAN och SESSIONLOGGAR. - -## 2026-05-10: Admin-inventarie (CRUD, merge, filter, sortering, preview, säkerhet), user-scope, IDOR-skydd, säkerhetshärdning, optimeringar och utökad testtäckning är nu genomförda och dokumenterade i README, TEKNISK_BESKRIVNING, SÄKERHETSHÄRDNINGSPLAN och SESSIONLOGGAR. - -## 2026-05-10: Admin-inventarie (CRUD, merge, filter, sortering, preview, säkerhet), user-scope, IDOR-skydd, säkerhetshärdning, optimeringar och utökad testtäckning är nu genomförda och dokumenterade i README, TEKNISK_BESKRIVNING, SÄKERHETSHÄRDNINGSPLAN och SESSIONLOGGAR. - -## 2026-05-10: Admin-inventarie (CRUD, merge, filter, sortering, preview, säkerhet), user-scope, IDOR-skydd, säkerhetshärdning, optimeringar och utökad testtäckning är nu genomförda och dokumenterade i README, TEKNISK_BESKRIVNING, SÄKERHETSHÄRDNINGSPLAN och SESSIONLOGGAR. - -## 2026-05-10: Admin-inventarie (CRUD, merge, filter, sortering, preview, säkerhet), user-scope, IDOR-skydd, säkerhetshärdning, optimeringar och utökad testtäckning är nu genomförda och dokumenterade i README, TEKNISK_BESKRIVNING, SÄKERHETSHÄRDNINGSPLAN och SESSIONLOGGAR. - -## 2026-05-10: Admin-inventarie (CRUD, merge, filter, sortering, preview, säkerhet), user-scope, IDOR-skydd, säkerhetshärdning, optimeringar och utökad testtäckning är nu genomförda och dokumenterade i README, TEKNISK_BESKRIVNING, SÄKERHETSHÄRDNINGSPLAN och SESSIONLOGGAR. - -## 2026-05-10: Admin-inventarie (CRUD, merge, filter, sortering, preview, säkerhet), user-scope, IDOR-skydd, säkerhetshärdning, optimeringar och utökad testtäckning är nu genomförda och dokumenterade i README, TEKNISK_BESKRIVNING, SÄKERHETSHÄRDNINGSPLAN och SESSIONLOGGAR. + +## Notering + +Denna fil ar arkiv/planunderlag for Flutter-sparet. Primar status och prioritering finns i rotens `NEXT_STEPS.md`. diff --git a/_archive/frontend/README.md b/_archive/frontend/README.md index b29b992c..e7785a61 100644 --- a/_archive/frontend/README.md +++ b/_archive/frontend/README.md @@ -1 +1,5 @@ -## 2026-05-10: Admin-inventarie (CRUD, merge, filter, sortering, preview, säkerhet), user-scope, IDOR-skydd, säkerhetshärdning, optimeringar och utökad testtäckning är nu genomförda och dokumenterade i README, TEKNISK_BESKRIVNING, SÄKERHETSHÄRDNINGSPLAN och SESSIONLOGGAR. \ No newline at end of file +## Arkiverad frontend-dokumentation + +- Den aktiva dokumentationen finns i rotens `README.md`, `TEKNISK_BESKRIVNING.md` och `NEXT_STEPS.md`. +- Senaste uppdatering (2026-05-19): flyerimport har session-endpoints i backend och klientpersistens/hydrering i Flutter. +- Denna fil behålls endast som arkivreferens för äldre frontend-spår.