2411906682
Co-authored-by: Copilot <copilot@github.com>
4.3 KiB
4.3 KiB
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-importlyckas hämta och spara bild:- Loggar visar:
Bild optimerad och sparad: /images/<uuid>.jpg
- Loggar visar:
- Bild saknas ändå i slutresultatet i UI efter import/spara.
Viktiga fynd
- Ursprungligt problem i Next-importflödet:
- Endast
prefilled_markdownsparades i sessionStorage. prefilled_image_urlsaknades.- Fixat i båda importvägar:
frontend/app/recipes/import/ImportFilePage.tsxfrontend/app/import/ImportTabsClient.tsx
- Flutter-flödet tappade
imageUrli router-extra:
- Extra skickades först som bara markdown.
- Fixat så både markdown + imageUrl skickas och läses robust.
- 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). imageWarningtillagt i quick-import-svar.- Fallback till extern URL om lokal nedladdning misslyckas.
- Recept-delete raderar nu lokal bildfil för
/images/....
- 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.dartflutter/lib/features/inventory/presentation/inventory_screen.dartflutter/lib/core/ui/product_picker_field.dartflutter/lib/features/import/domain/quick_import_result.dartflutter/lib/features/import/data/import_repository.dartflutter/lib/features/import/data/import_providers.dartflutter/lib/features/import/presentation/recipe_import_tab.dartflutter/lib/features/import/presentation/import_screen.dartflutter/lib/features/recipes/presentation/create_recipe_screen.dartflutter/lib/core/router/app_router.dartflutter/lib/core/ui/app_shell.dartflutter/pubspec.yaml
Backend
backend/src/quick-import/quick-import.service.tsbackend/src/quick-import/parsers/ica.parser.tsbackend/src/quick-import/parsers/generic.parser.tsbackend/src/common/utils/download-image.tsbackend/src/recipes/recipes.service.ts
Next frontend
frontend/app/recipes/import/ImportFilePage.tsxfrontend/app/import/ImportTabsClient.tsxfrontend/app/api/quick-import-proxy/route.tsfrontend/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
- Rebuild + recreate containrar:
docker compose build recipe-api recipe-frontend recipe-flutter
docker compose up -d --force-recreate recipe-api recipe-frontend recipe-flutter
-
Kör en import av samma ICA-länk.
-
Hämta loggar med filter:
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"
- 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*ochWriteRecipePage.
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.