refactor(products): remove brand field from Product model and update related DTO and service
Co-authored-by: Copilot <copilot@github.com>
This commit is contained in:
+2
-1
@@ -57,6 +57,7 @@
|
|||||||
## Status — senast genomgånget: 2026-05-02
|
## Status — senast genomgånget: 2026-05-02
|
||||||
|
|
||||||
### Nyheter och förbättringar
|
### Nyheter och förbättringar
|
||||||
|
- **Prisma-schema justerat för Product (2026-05-03)** — `Product.brand` är borttaget från Prisma-modellen och från produktuppdatering i backend eftersom kolumnen saknas i aktuell databas. Detta förhindrar Prisma-felet `The column recipe_app.Product.brand does not exist in the current database` vid t.ex. `findUnique`.
|
||||||
- **Produkter user-scoped — ny databasarkitektur (2026-05-02)** — `Product.ownerId` är nu obligatorisk (non-nullable). Alla globala seed-produkter är borttagna. Varje produkt ägs av en enskild användare och raderas vid kontoradering (CASCADE). `seed_all.sql` innehåller nu enbart kategorier. Kvittoimportens matchning filtrerar på `ownerId = userId` från JWT. Se TEKNISK_BESKRIVNING.md för fullständig beskrivning.
|
- **Produkter user-scoped — ny databasarkitektur (2026-05-02)** — `Product.ownerId` är nu obligatorisk (non-nullable). Alla globala seed-produkter är borttagna. Varje produkt ägs av en enskild användare och raderas vid kontoradering (CASCADE). `seed_all.sql` innehåller nu enbart kategorier. Kvittoimportens matchning filtrerar på `ownerId = userId` från JWT. Se TEKNISK_BESKRIVNING.md för fullständig beskrivning.
|
||||||
- **Kategorier utökade (2026-05-02)** — Nya L2/L3-noder: `Bröd & Kakor > Kondis & fika > Kaffebröd` (wienerbröd, donuts, munkar m.m.) och `Dryck > Te & choklad > Te` (chai, vanilla chai, ceylon te m.m.). Nya L3-noder under `Mejeri, ost & ägg > Allergi mejeri`: Laktosfri mjölk, Filmjölk & Yoghurt, Kvarg & Cottage cheese, Matfett, Allergi matlagning.
|
- **Kategorier utökade (2026-05-02)** — Nya L2/L3-noder: `Bröd & Kakor > Kondis & fika > Kaffebröd` (wienerbröd, donuts, munkar m.m.) och `Dryck > Te & choklad > Te` (chai, vanilla chai, ceylon te m.m.). Nya L3-noder under `Mejeri, ost & ägg > Allergi mejeri`: Laktosfri mjölk, Filmjölk & Yoghurt, Kvarg & Cottage cheese, Matfett, Allergi matlagning.
|
||||||
- **Regelbaserad kategoridetektion utökad (2026-05-02)** — `ruleBasedCategorySuggestion()` täcker nu Te (te, tea, chai, tepas) och Kaffebröd (wienerbröd, donut, munk, croissant, kanelbulle, bakelse, semla m.fl.) utöver befintliga mejeri-regler.
|
- **Regelbaserad kategoridetektion utökad (2026-05-02)** — `ruleBasedCategorySuggestion()` täcker nu Te (te, tea, chai, tepas) och Kaffebröd (wienerbröd, donut, munk, croissant, kanelbulle, bakelse, semla m.fl.) utöver befintliga mejeri-regler.
|
||||||
@@ -173,7 +174,7 @@ Se även TEKNISK_BESKRIVNING.md för detaljer om seed-processen.
|
|||||||
|
|
||||||
## Prioriterade förbättringar
|
## Prioriterade förbättringar
|
||||||
|
|
||||||
### 1. ICA-skraparen missar receptbild
|
### 1. ICA-skraparen missar receptbild ✅
|
||||||
**Problem:** Vid import av ICA-recept via URL hämtas inte receptbilden korrekt.
|
**Problem:** Vid import av ICA-recept via URL hämtas inte receptbilden korrekt.
|
||||||
|
|
||||||
- Felsök parsern i `recipe-document-converter/src/parser.ts` — kontrollera att ICA:s bild-selektor fortfarande matchar sidans HTML-struktur
|
- Felsök parsern i `recipe-document-converter/src/parser.ts` — kontrollera att ICA:s bild-selektor fortfarande matchar sidans HTML-struktur
|
||||||
|
|||||||
@@ -33,7 +33,6 @@ model Product {
|
|||||||
name String
|
name String
|
||||||
normalizedName String @unique
|
normalizedName String @unique
|
||||||
category String?
|
category String?
|
||||||
brand String?
|
|
||||||
canonicalName String?
|
canonicalName String?
|
||||||
isActive Boolean @default(true)
|
isActive Boolean @default(true)
|
||||||
status String @default("active")
|
status String @default("active")
|
||||||
|
|||||||
@@ -22,11 +22,6 @@ export class UpdateProductDto {
|
|||||||
@MaxLength(191)
|
@MaxLength(191)
|
||||||
subcategory?: string;
|
subcategory?: string;
|
||||||
|
|
||||||
@IsOptional()
|
|
||||||
@IsString()
|
|
||||||
@MaxLength(191)
|
|
||||||
brand?: string;
|
|
||||||
|
|
||||||
@IsOptional()
|
@IsOptional()
|
||||||
@IsNumber()
|
@IsNumber()
|
||||||
categoryId?: number | null;
|
categoryId?: number | null;
|
||||||
|
|||||||
@@ -164,7 +164,6 @@ export class ProductsService {
|
|||||||
normalizedName?: string;
|
normalizedName?: string;
|
||||||
canonicalName?: string;
|
canonicalName?: string;
|
||||||
category?: string | null;
|
category?: string | null;
|
||||||
brand?: string | null;
|
|
||||||
categoryId?: number | null;
|
categoryId?: number | null;
|
||||||
} = {};
|
} = {};
|
||||||
|
|
||||||
@@ -193,10 +192,6 @@ export class ProductsService {
|
|||||||
updateData.category = data.category.trim() || null;
|
updateData.category = data.category.trim() || null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (typeof data.brand === 'string') {
|
|
||||||
updateData.brand = data.brand.trim() || null;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ('categoryId' in data) {
|
if ('categoryId' in data) {
|
||||||
updateData.categoryId = data.categoryId ?? null;
|
updateData.categoryId = data.categoryId ?? null;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user