feat(docs): update NEXT_STEPS, README, and technical descriptions with recent improvements and known limitations
Co-authored-by: Copilot <copilot@github.com>
This commit is contained in:
@@ -0,0 +1,104 @@
|
||||
# Import Image Debug Log (2026-04-22)
|
||||
|
||||
## Kontext
|
||||
Målet var att få med receptbild vid URL-import (exempel: ICA-länk) i både Next-frontend och Flutter.
|
||||
|
||||
## Verifierat läge just nu
|
||||
- Backend `quick-import` lyckas hämta och spara bild:
|
||||
- Loggar visar: `Bild optimerad och sparad: /images/<uuid>.jpg`
|
||||
- Bild saknas ändå i slutresultatet i UI efter import/spara.
|
||||
|
||||
## Viktiga fynd
|
||||
1. Ursprungligt problem i Next-importflödet:
|
||||
- Endast `prefilled_markdown` sparades i sessionStorage.
|
||||
- `prefilled_image_url` saknades.
|
||||
- Fixat i båda importvägar:
|
||||
- `frontend/app/recipes/import/ImportFilePage.tsx`
|
||||
- `frontend/app/import/ImportTabsClient.tsx`
|
||||
|
||||
2. Flutter-flödet tappade `imageUrl` i router-extra:
|
||||
- Extra skickades först som bara markdown.
|
||||
- Fixat så både markdown + imageUrl skickas och läses robust.
|
||||
|
||||
3. Backend förbättringar gjorda:
|
||||
- Robustare JSON-LD-iterering i parsers (alla script-block, inte bara första).
|
||||
- Normalisering av bild-URL (stöd för `//...` och relativa URL:er).
|
||||
- `imageWarning` tillagt i quick-import-svar.
|
||||
- Fallback till extern URL om lokal nedladdning misslyckas.
|
||||
- Recept-delete raderar nu lokal bildfil för `/images/...`.
|
||||
|
||||
4. Indikation att server kan köra äldre build:
|
||||
- Nya diagnostikloggar syntes inte i de delade loggutdragen.
|
||||
- Trolig orsak: containrar ej uppdaterade med senaste kod.
|
||||
|
||||
## Filer som ändrats under passet
|
||||
### Flutter
|
||||
- `flutter/lib/features/inventory/presentation/swipeable_inventory_tile.dart`
|
||||
- `flutter/lib/features/inventory/presentation/inventory_screen.dart`
|
||||
- `flutter/lib/core/ui/product_picker_field.dart`
|
||||
- `flutter/lib/features/import/domain/quick_import_result.dart`
|
||||
- `flutter/lib/features/import/data/import_repository.dart`
|
||||
- `flutter/lib/features/import/data/import_providers.dart`
|
||||
- `flutter/lib/features/import/presentation/recipe_import_tab.dart`
|
||||
- `flutter/lib/features/import/presentation/import_screen.dart`
|
||||
- `flutter/lib/features/recipes/presentation/create_recipe_screen.dart`
|
||||
- `flutter/lib/core/router/app_router.dart`
|
||||
- `flutter/lib/core/ui/app_shell.dart`
|
||||
- `flutter/pubspec.yaml`
|
||||
|
||||
### Backend
|
||||
- `backend/src/quick-import/quick-import.service.ts`
|
||||
- `backend/src/quick-import/parsers/ica.parser.ts`
|
||||
- `backend/src/quick-import/parsers/generic.parser.ts`
|
||||
- `backend/src/common/utils/download-image.ts`
|
||||
- `backend/src/recipes/recipes.service.ts`
|
||||
|
||||
### Next frontend
|
||||
- `frontend/app/recipes/import/ImportFilePage.tsx`
|
||||
- `frontend/app/import/ImportTabsClient.tsx`
|
||||
- `frontend/app/api/quick-import-proxy/route.ts`
|
||||
- `frontend/app/recipes/write/WriteRecipePage.tsx`
|
||||
|
||||
## Diagnostikloggar tillagda (att leta efter)
|
||||
### Backend (`recipe-api`)
|
||||
- `Bildkandidat från parser: ...`
|
||||
- `Normaliserad bild-URL: ...`
|
||||
- `Incoming imageUrl from client: ...`
|
||||
- `Final imageUrl persisted to DB: ...`
|
||||
|
||||
### Frontend server (`recipe-frontend`)
|
||||
- `[QuickImportProxy] backend response ...`
|
||||
|
||||
### Browser console
|
||||
- `[ImportFilePage:*] quick-import response ...`
|
||||
- `[ImportTabsClient:*] quick-import response ...`
|
||||
- `[WriteRecipePage] prefilled values ...`
|
||||
- `[WriteRecipePage] create payload imageUrl ...`
|
||||
|
||||
## Rekommenderad start imorgon
|
||||
1. Rebuild + recreate containrar:
|
||||
```bash
|
||||
docker compose build recipe-api recipe-frontend recipe-flutter
|
||||
docker compose up -d --force-recreate recipe-api recipe-frontend recipe-flutter
|
||||
```
|
||||
|
||||
2. Kör en import av samma ICA-länk.
|
||||
|
||||
3. Hämta loggar med filter:
|
||||
```bash
|
||||
docker logs --since 15m recipe-api | grep -E "QuickImportService|RecipesService|Bildkandidat|Normaliserad bild-URL|Incoming imageUrl|Final imageUrl|imageWarning"
|
||||
docker logs --since 15m recipe-frontend | grep -E "QuickImportProxy|ImportFilePage|ImportTabsClient|WriteRecipePage|quick-import response|sessionStorage snapshot|create payload imageUrl"
|
||||
```
|
||||
|
||||
4. I browser DevTools:
|
||||
- Network: svar för `/api/quick-import-proxy` (imageUrl, imageWarning)
|
||||
- Network: payload för `POST /api/recipes` (imageUrl)
|
||||
- Console: rader från `Import*` och `WriteRecipePage`.
|
||||
|
||||
## Säkerhetsnotering
|
||||
En JWT råkade postas i klartext under felsökningen. Behandla den som komprometterad:
|
||||
- logga ut/in för ny token
|
||||
- rotera hemligheter vid behov om detta är produktion.
|
||||
|
||||
## Kort hypotes (nuvarande)
|
||||
`quick-import` får fram och sparar bild, men värdet tappas troligen i klientflödet före `POST /api/recipes` eller så kör servern inte senaste build med loggar/fixar.
|
||||
Reference in New Issue
Block a user