42 lines
2.4 KiB
Markdown
42 lines
2.4 KiB
Markdown
# Changes summary (2026-02-11)
|
|
|
|
Implemented strict `lot_category` flow using `pricelist_items.lot_category` only (no parsing from `lot_name`), plus local caching and backfill:
|
|
|
|
1. Local DB schema + migrations
|
|
- Added `lot_category` column to `local_pricelist_items` via `LocalPricelistItem` model.
|
|
- Added local migration `2026_02_11_local_pricelist_item_category` to add the column if missing and create indexes:
|
|
- `idx_local_pricelist_items_pricelist_lot (pricelist_id, lot_name)`
|
|
- `idx_local_pricelist_items_lot_category (lot_category)`
|
|
|
|
2. Server model/repository
|
|
- Added `LotCategory` field to `models.PricelistItem`.
|
|
- `PricelistRepository.GetItems` now sets `Category` from `LotCategory` (no parsing from `lot_name`).
|
|
|
|
3. Sync + local DB helpers
|
|
- `SyncPricelistItems` now saves `lot_category` into local cache via `PricelistItemToLocal`.
|
|
- Added `LocalDB.CountLocalPricelistItemsWithEmptyCategory` and `LocalDB.ReplaceLocalPricelistItems`.
|
|
- Added `LocalDB.GetLocalLotCategoriesByServerPricelistID` for strict category lookup.
|
|
- Added `SyncPricelists` backfill step: for used active pricelists with empty categories, force refresh items from server.
|
|
|
|
4. API handler
|
|
- `GET /api/pricelists/:id/items` returns `category` from `local_pricelist_items.lot_category` (no parsing from `lot_name`).
|
|
|
|
5. Article category foundation
|
|
- New package `internal/article`:
|
|
- `ResolveLotCategoriesStrict` pulls categories from local pricelist items and errors on missing category.
|
|
- `GroupForLotCategory` maps only allowed codes (CPU/MEM/GPU/M2/SSD/HDD/EDSFF/HHHL/NIC/HCA/DPU/PSU/PS) to article groups; excludes `SFP`.
|
|
- Error type `MissingCategoryForLotError` with base `ErrMissingCategoryForLot`.
|
|
|
|
6. Tests
|
|
- Added unit tests for converters and article category resolver.
|
|
- Added handler test to ensure `/api/pricelists/:id/items` returns `lot_category`.
|
|
- Added sync test for category backfill on used pricelist items.
|
|
- `go test ./...` passed.
|
|
|
|
Additional fixes (2026-02-11):
|
|
- Fixed article parsing bug: CPU/GPU parsers were swapped in `internal/article/generator.go`. CPU now uses last token from CPU lot; GPU uses model+memory from `GPU_vendor_model_mem_iface`.
|
|
- Adjusted configurator base tab layout to align labels on the same row (separate label row + input row grid).
|
|
|
|
UI rule (2026-02-19):
|
|
- In all breadcrumbs, truncate long specification/configuration names to 16 characters using ellipsis.
|