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
This commit is contained in:
@@ -0,0 +1,69 @@
|
||||
# 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.
|
||||
Reference in New Issue
Block a user