DSH-04 — Back-office catalog & pricing pages
Products list, product editor (variants, images, specs, the three customer-type prices, attributes, visibility), brands, category tree, attribute definitions, import wizard.
| Field | Details |
|---|---|
| Task code | DSH-04 |
| Phase | P1 — V1 build & integration |
| Product scope | V1 |
| Status | Planned |
| Start | Wed 11 Nov 2026 |
| Due | Sun 15 Nov 2026 |
| Responsible | Anis — Full-stack developer |
| Co-responsible | — |
| Effort | 1.5 person-day(s) planned · 7 from scratch · size S |
| Area · app | Back-office · dashboard |
| Depends on | DSH-01, SRV-12, DES-17 |
| Unblocks | DSH-05, DSH-14 |
| Milestones | — |
Summary
Products list, product editor (variants, images, specs, the three customer-type prices, attributes, visibility), brands, category tree, attribute definitions, import wizard.
Description
The catalog team maintains products, the three customer-type prices and the per-category attributes that drive the reseller filters (cahier §4.3, §8; CAT-01…CAT-06, CAT-13, PRC-01, PRC-02), on top of SRV-11/SRV-12 and Akram's designs (DES-17). It delivers the products list (BO-27), the product editor with variants, images, specifications, the three prices Super-gros, Demi-gros, Détail plus VAT, recommended and purchase price, attribute values, visibility and status (BO-28), brands (BO-29), the category tree with sub-categories (BO-30), the three-price grid for bulk price edits (BO-31, which replaces the old price-lists screen in V1), the product import wizard (BO-32) and attribute definitions per category (BO-71). Purchase price and margins are shown only with pricing.administer (ACL-04). Out of scope: stock pages (DSH-05) and promotions (DSH-09).
Subtasks
| # | Subtask | Owner |
|---|---|---|
| 1 | BO-27 products list: image, reference, name, brand, category/sub-category, variants, ProductStatus pill, availability, prix détail; filters brand, category, status, availability, missing images/attributes | Anis |
| 2 | BO-28 editor tab « Informations »: brand, reference, name, category and sub-category, description, warranty, specifications | Anis |
| 3 | BO-28 tab « Variantes »: SKU, barcode, priceSuperGros/priceDemiGros/priceDetail, vatRate, recommendedPrice, purchasePrice (gated), min quantity/step/max per order, price history drawer | Anis |
| 4 | BO-28 tabs « Images » (upload via files, drag order, main image) and « Attributs » (typed inputs from the category's AttributeDefinitions per variant) | Anis |
| 5 | BO-28 tab « Visibilité » (rules per reseller or segment) and status actions (publish, hide, archive) with confirmations | Anis |
| 6 | BO-29 brands (logo upload, order, active) and BO-30 category tree with drag-and-drop reorder and sub-categories | Anis |
| 7 | BO-31 three-price grid: variants × Super-gros / Demi-gros / Détail inline editing, bulk % change on a filter, mandatory reason, warning when the price order is unusual | Anis |
| 8 | BO-71 attribute definitions per category: name fr/ar, type (list, number with unit, yes/no), allowed values editor, filterable toggle, order | Anis |
| 9 | BO-32 import wizard: template download, upload, column mapping, dry-run report with errors per row, apply and error-rows download | Anis |
| 10 | Design QA of the product editor and attribute screens | Akram |
Deliverables
- apps/dashboard/src/app/[locale]/(app)/catalog/products/{page.tsx,new/page.tsx,[productId]/page.tsx}
- apps/dashboard/src/app/[locale]/(app)/catalog/{brands,categories,attributes,prices,import}/page.tsx
- apps/dashboard/src/features/catalog/ (variant price editor, attribute inputs, image manager)
Acceptance criteria
- A product can be created with variants carrying the three prices, VAT and attribute values, and appears in the reseller catalog with the right price per customer type (PRC-01, PRC-02)
- purchasePrice and margins are not displayed and not sent for users without pricing.administer (ACL-04)
- Every saved price change appears in the variant's price history with user and date (PRC-01)
- Attribute inputs follow the category definition; an invalid value shows the ATTRIBUTE_VALUE_INVALID message (CAT-13)
- Reordering categories persists and is reflected in the reseller catalog order (CAT-02)
- The import dry run shows row-level errors without changing data; apply imports only valid rows (CAT-06)
Requirements covered
| Requirement | Title | Release |
|---|---|---|
| CAT-01 | Brands HOCO, ACEFAST and BOROFONE managed as data | V1 |
| CAT-02 | Category tree (chargers, cables, earphones, power banks, car holders, audio, watches, accessories) | V1 |
| CAT-03 | Product data: brand, reference, name, category, description, characteristics, images, barcode, warranty, variants | V1 |
| CAT-04 | Product lifecycle: draft, active, hidden, out of stock (automatic), archived | V1 |
| CAT-05 | Visibility and activation per reseller or segment | V1 |
| CAT-06 | Product import/export (Excel/CSV) with a validation report | V1 |
| PRC-01 | Three selling prices per variant — super-gros, demi-gros, détail — plus purchase price and recommended retail price, with change history | V1 |
| PRC-02 | Price resolution: the reseller's customer type selects one of the three prices; then promotions; guests see no price | V1 |
| CAT-13 | Filterable product attributes defined per category (type, unit, allowed values) and filled on every variant | V1 |
Screens
| Screen | Name | App |
|---|---|---|
| BO-27 | Products list | BO |
| BO-28 | Product editor | BO |
| BO-29 | Brands | BO |
| BO-30 | Categories | BO |
| BO-31 | Price grid — three customer-type prices (bulk edit) | BO |
| BO-32 | Product import wizard | BO |
| BO-71 | Product attributes (filters) per category | BO |
API surface
| Endpoint group | Operations |
|---|---|
| Catalog & pricing | 19 |
Test measures
- Playwright e2e: create product with two variants, set prices, publish, check in the web catalog as two customer types
- Component tests for the attribute input renderer per type
- Manual bulk price change on 50 variants with reason, then history check
Risks
- BO-32 depends on the import jobs of SRV-27 scheduled later — build the wizard against the contract and verify end to end when SRV-27 lands
KPI
- Delivered by Sun 15 Nov 2026 within 1.5 person-day(s).
- Every acceptance criterion above demonstrated before hand-off; linked requirements' acceptance criteria pass.
- Zero open critical defects, permission gaps or data-integrity regressions at sign-off.
Generated from content/plan/tasks.json by scripts/generate-team-tasks.mjs. Dates are computed by the scheduler (Sunday–Thursday weeks, holidays excluded) — change the plan, not this page.