Files
recipe-app/.kilo/plans/1779644560462-playful-eagle.md
T
Nils-Johan Gynther 27d622bfe6
Test Suite / backend-pr-quick (push) Has been skipped
Test Suite / quick-import-pr-quick (push) Has been skipped
Test Suite / backend-full (push) Failing after 3m32s
Test Suite / flutter-quality (push) Failing after 1m0s
feat(inventory): add multi-country origin tracking
- Added `originCountries` field to `InventoryItem` model for multi-country origin support
- Updated `CreateInventoryDto` and `UpdateInventoryDto` with `originCountries` array field
- Modified `InventoryService` to handle `originCountries` in create and update operations
- Added `origin` field to `FlyerImportItem` response type for consistency
- Added `categoryId` field to `ParsedReceiptItem` DTO for improved receipt parsing
- Created database migration `20260524_add_origin_countries` for schema changes
2026-05-24 21:31:53 +02:00

3.3 KiB

Plan: Harmonisering av importfält baserat på inventory-tabellen

Mål

Skapa konsistens mellan kvitto-import, flyer-import och inventory-tabellen genom att anpassa fältnamn, datatyper och struktur. Detta kommer att förenkla integrationen och minska risken för fel.

Bakgrund

  • inventory-tabellen är central och har en väletablerad struktur.
  • Kvitto-import och flyer-import använder olika fältnamn och datatyper, vilket skapar inkonsistenser.
  • Flyer-import använder signals.originCountries (array), medan inventory använder origin (string).

Scope

  • Uppdatera ParsedReceiptItem och FlyerImportItem för att matcha inventory-tabellen.
  • Uppdatera mappningslogiken i importfunktionerna.
  • Uppdatera databasen för att stödja originCountries som en array (lång sikt).

Implementationsplan

1. Uppdatera ParsedReceiptItem (kvitto-import)

  • Mål: Anpassa fältnamn och datatyper för att matcha inventory-tabellen.
  • Åtgärder:
    • Lägg till categoryId för att möjliggöra kategorisättning.
    • Använd rawName istället för receiptName för konsistens.
    • Mappa origin till inventory.origin.

2. Uppdatera FlyerImportItem (flyer-import)

  • Mål: Anpassa fältnamn och datatyper för att matcha inventory-tabellen.
  • Åtgärder:
    • Använd rawName istället för receiptName för konsistens.
    • Mappa signals.originCountries[0] till inventory.origin.
    • Mappa categoryId till product.categoryId om en produkt skapas/uppdateras.

3. Uppdatera mappningslogiken

  • Mål: Förenkla mappningen från importfunktionerna till inventory-tabellen.
  • Åtgärder:
    • Uppdatera receipt-import.service.ts för att använda inventory-fältnamn.
    • Uppdatera flyer-import.service.ts för att använda inventory-fältnamn.

4. Uppdatera databasen (lång sikt)

  • Mål: Stödja originCountries som en array i inventory-tabellen.
  • Åtgärder:
    • Lägg till originCountries Json? i inventory-tabellen.
    • Uppdatera CreateInventoryDto för att inkludera originCountries.

5. Uppdatera DTO:er

  • Mål: Säkerställa att DTO:er matchar inventory-tabellen.
  • Åtgärder:
    • Uppdatera CreateInventoryDto för att inkludera originCountries.

Leverabler

  • Uppdaterade ParsedReceiptItem och FlyerImportItem som matchar inventory-tabellen.
  • Uppdaterad mappningslogik i receipt-import.service.ts och flyer-import.service.ts.
  • Uppdaterad databas för att stödja originCountries som en array.
  • Uppdaterade DTO:er för att inkludera originCountries.

Acceptanskriterier

  • ParsedReceiptItem och FlyerImportItem använder samma fältnamn och datatyper som inventory-tabellen.
  • Mappningslogiken i importfunktionerna är förenklad och använder inventory-fältnamn.
  • inventory-tabellen stödjer originCountries som en array.
  • CreateInventoryDto inkluderar originCountries.

Rekommenderad genomförandeordning

  1. Uppdatera ParsedReceiptItem och FlyerImportItem.
  2. Uppdatera mappningslogiken i importfunktionerna.
  3. Uppdatera databasen för att stödja originCountries som en array.
  4. Uppdatera DTO:er för att inkludera originCountries.

Handover from Planning Session

  • Planen är klar och redo för implementering.
  • Inga frågor eller otydligheter kvarstår.