feat(admin): complete product management
Sprint 21. - archived (soft archive/restore, distinct from visible) with an include-archived list filter - barcode field alongside sku - variants: lightweight name|price|quantity list, same textarea-parse convention as specifications/attributes - relatedProductIds: checkbox picker in the editor - gallery images now added/removed via the shared MediaPickerComponent instead of a raw URL textarea - read-only discounted-price preview in the editor - infinite-scroll toggle on the list (loadMore() appends a page instead of replacing it; pagination UI swaps for a Load more button) - category dropdown now sourced from AdminCategoriesGateway (Sprint 20) instead of AdminProductsLocalGateway's own BackofficeDataService seed docs/ADMIN.md + docs/BACKEND.md updated with the new field list and the known trade-off that related-products search is scoped to the currently loaded page, not the full catalog. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -85,9 +85,9 @@ Backend must also support content moderation/validation on publish (disallow dan
|
||||
|
||||
## 6. Products
|
||||
|
||||
**Current behavior:** `features/admin/products/` is fully built (list + editor pages) against `AdminProductsLocalGateway` (swappable via an injection token, same pattern as everywhere else) — i.e. it's ready for a real API gateway, but one has never been implemented.
|
||||
**Current behavior (Sprint 21):** `features/admin/products/` is fully built (list + editor pages) against `AdminProductsLocalGateway` (swappable via an injection token, same pattern as everywhere else) — i.e. it's ready for a real API gateway, but one has never been implemented. Sprint 21 added `barcode`, `archived` (soft archive/restore), `variants` (`{name, price, quantity}[]`), `relatedProductIds`, and wired the category dropdown to `AdminCategoriesGateway` (see item 5) instead of its own seed.
|
||||
|
||||
**Needed:** product CRUD endpoints matching the existing storefront product contract (`itemID`, `name`, `price`, `currency`, `categoryID`, `visible`, `discount`, `images`, `badges`, `media`, `specificationGroups`, `variantOptions`, `relatedCollections` — see the Product Engagement / Product Experience 2.0 fields folded from prior sprint reports).
|
||||
**Needed:** product CRUD endpoints matching the current `AdminProduct` shape (`src/app/features/admin/products/models/admin-product.model.ts`) — `itemID`, `name`, `price`, `currency`, `categoryID`, `visible`, `archived`, `discount`, `images`, `badges`, `media`, `specifications`/`attributes`, `variants`, `relatedProductIds`, plus a bulk endpoint matching `PATCH /items/bulk`-style semantics for `applyBulkVisibility`/`applyBulkDelete`.
|
||||
|
||||
**Frontend files:** implement `AdminProductsApiGateway` alongside the existing `AdminProductsLocalGateway` and rebind the injection token — `features/admin/products/pages/*` and the facade do not change.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user