Refactor next_steps_flutter and teknisk_beskrivning_flutter for user-scope implementation
- Updated next_steps_flutter.md to reflect completed tasks for user-scoped PantryItem and MealPlanEntry, including API contract publication and migration application. - Enhanced the prioritization plan with clear completion dates and added localization tasks. - Expanded teknisk_beskrivning_flutter.md with details on inventory filtering, sorting, and user-scoped backend changes, including migration notes and localization setup. - Improved error handling documentation and localization usage guidelines.
This commit is contained in:
@@ -23,6 +23,23 @@ Relaterade dokument:
|
||||
- Exponering via extern Caddy med site `test.gynther.se` -> `recipe-flutter:5000`.
|
||||
- API anrop gar same-origin via `/api` och proxas internt till `recipe-api:8080`.
|
||||
|
||||
### Inventarie (2026-04-22)
|
||||
- Filtrering per plats (alla/kyl/frys/skafferi) via `inventoryLocationFilterProvider`.
|
||||
- Sortering (namn A-O, bast fore stigande/fallande) via `inventorySortFilterProvider`.
|
||||
- Riverpod-query (`InventoryQuery`) skickar `location` och `sort` som queryparametrar till backenden.
|
||||
- Alla felmeddelanden gar via `mapErrorToUserMessage(error, context)`.
|
||||
|
||||
### Baslager/Pantry (2026-04-22)
|
||||
- Pantry-produkter grupperas nu pa kategori utifrån backend-relationen `categoryRef` (rekursiv `parent`-kedja -> `categoryPath`), med fallback till legacy `product.category` och sist `Ovrigt`.
|
||||
- `PantryProduct` har `categoryId` och `categoryPath` som parsas fran API-svaret.
|
||||
|
||||
### Backend: user-scope for pantry och matplan (2026-04-22)
|
||||
- `PantryItem` och `MealPlanEntry` ar nu user-scopade i Prisma-schemat.
|
||||
- `pantry`-controller/service filtrerar alltid per `userId` fran JWT.
|
||||
- `meal-plan`-controller/service filtrerar alltid per `userId`; `inventoryCompare` anvander inloggad anvandares pantry.
|
||||
- Migration: `20260422130000_user_scope_pantry_meal_plan` applicerad pa server.
|
||||
- Next.js-frontenden kravde inga funktionella andringar (forfrågningar gar redan via auth-proxy).
|
||||
|
||||
## Arkitektur
|
||||
### Lager
|
||||
- Presentation: skarmar och widgets i `flutter/lib/features/*/presentation`.
|
||||
@@ -55,7 +72,25 @@ Relaterade dokument:
|
||||
- `ApiClient` i `flutter/lib/core/api/api_client.dart` exponerar: `getJson`, `postJson`, `patchJson`, `putJson`, `deleteJson`.
|
||||
- Centralicerad HTTP-felklassning: 401 -> `ApiErrorType.unauthorized`, 403 -> `forbidden`, 5xx -> `server`, natverksfel -> `network`.
|
||||
- `ApiException` i `flutter/lib/core/api/api_exception.dart` ar den enda feltypen som propageras fran repositories.
|
||||
- `mapErrorToUserMessage()` i `flutter/lib/core/api/api_error_mapper.dart` oversatter fel till svenska anvandarmedddelanden.
|
||||
- `mapErrorToUserMessage(error, context)` i `flutter/lib/core/api/api_error_mapper.dart` oversatter fel till lokaliserade anvandarmedddelanden. Tar numera `BuildContext` som andra argument for att hämta korrekt sprak fran `AppLocalizations`.
|
||||
|
||||
### Lokalisering (2026-04-22)
|
||||
- Flutter `flutter_localizations` + `intl` tillagda i `pubspec.yaml` med `generate: true`.
|
||||
- Konfigurationsfil: [flutter/l10n.yaml](flutter/l10n.yaml) med `synthetic-package: false`.
|
||||
- Kallstrangar i [flutter/lib/l10n/app_sv.arb](flutter/lib/l10n/app_sv.arb) och [flutter/lib/l10n/app_en.arb](flutter/lib/l10n/app_en.arb).
|
||||
- Generade filer hamnar i `flutter/lib/l10n/generated/` och checkas inte in.
|
||||
- Hjalpare `context.l10n` i [flutter/lib/core/l10n/l10n.dart](flutter/lib/core/l10n/l10n.dart).
|
||||
- `MaterialApp.router` konfigurerad med `localizationsDelegates`, `supportedLocales` och `locale: const Locale('sv')`.
|
||||
- Dockerfilen kor `flutter gen-l10n` innan `flutter build web` for att generera Dart-koden i containerbygget.
|
||||
- Regressionstest i [flutter/test/core/swedish_strings_regression_test.dart](flutter/test/core/swedish_strings_regression_test.dart) failar om vanliga ASCII-varianter (Valj, Lagg, Forsok, etc.) dyker upp igen i `lib/`.
|
||||
|
||||
#### Anvandning av lokalisering
|
||||
For att lagga till en ny lokaliserad strang:
|
||||
1. Lagg till nyckeln i `app_sv.arb` (och `app_en.arb`).
|
||||
2. Kör `flutter gen-l10n` lokalt (eller lat Docker-bygget gora det).
|
||||
3. Anvand `context.l10n.dinNyckel` i widgetkoden.
|
||||
|
||||
For felstrangar fran API: anvand alltid `mapErrorToUserMessage(error, context)` — lagg inte in hardkodade strängar.
|
||||
|
||||
### Recipes
|
||||
- `GET /api/recipes` — receptlista.
|
||||
@@ -145,7 +180,7 @@ Om `test.gynther.se` slutar svara efter städning med `--remove-orphans`, starta
|
||||
|
||||
## Nasta tekniska steg
|
||||
Fortsatt migrering enligt prioritering i [next_steps_flutter.md](next_steps_flutter.md):
|
||||
1. Auth parity (session behavior refinements).
|
||||
2. Recipes parity (list -> detail -> create/edit).
|
||||
3. Inventory and meal plan pages.
|
||||
4. Profile/admin parity.
|
||||
1. Fortatt lokalisering av inventarie/pantry/recept-strangar till ARB.
|
||||
2. Matplan parity mot nu user-scopat API.
|
||||
3. Import parity.
|
||||
4. Profil/admin parity.
|
||||
|
||||
Reference in New Issue
Block a user