HOCO B2B
Team tasksAnis

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.

FieldDetails
Task codeDSH-04
PhaseP1 — V1 build & integration
Product scopeV1
StatusPlanned
StartWed 11 Nov 2026
DueSun 15 Nov 2026
ResponsibleAnis — Full-stack developer
Co-responsible—
Effort1.5 person-day(s) planned · 7 from scratch · size S
Area · appBack-office · dashboard
Depends onDSH-01, SRV-12, DES-17
UnblocksDSH-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

#SubtaskOwner
1BO-27 products list: image, reference, name, brand, category/sub-category, variants, ProductStatus pill, availability, prix détail; filters brand, category, status, availability, missing images/attributesAnis
2BO-28 editor tab « Informations »: brand, reference, name, category and sub-category, description, warranty, specificationsAnis
3BO-28 tab « Variantes »: SKU, barcode, priceSuperGros/priceDemiGros/priceDetail, vatRate, recommendedPrice, purchasePrice (gated), min quantity/step/max per order, price history drawerAnis
4BO-28 tabs « Images » (upload via files, drag order, main image) and « Attributs » (typed inputs from the category's AttributeDefinitions per variant)Anis
5BO-28 tab « Visibilité » (rules per reseller or segment) and status actions (publish, hide, archive) with confirmationsAnis
6BO-29 brands (logo upload, order, active) and BO-30 category tree with drag-and-drop reorder and sub-categoriesAnis
7BO-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 unusualAnis
8BO-71 attribute definitions per category: name fr/ar, type (list, number with unit, yes/no), allowed values editor, filterable toggle, orderAnis
9BO-32 import wizard: template download, upload, column mapping, dry-run report with errors per row, apply and error-rows downloadAnis
10Design QA of the product editor and attribute screensAkram

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

RequirementTitleRelease
CAT-01Brands HOCO, ACEFAST and BOROFONE managed as dataV1
CAT-02Category tree (chargers, cables, earphones, power banks, car holders, audio, watches, accessories)V1
CAT-03Product data: brand, reference, name, category, description, characteristics, images, barcode, warranty, variantsV1
CAT-04Product lifecycle: draft, active, hidden, out of stock (automatic), archivedV1
CAT-05Visibility and activation per reseller or segmentV1
CAT-06Product import/export (Excel/CSV) with a validation reportV1
PRC-01Three selling prices per variant — super-gros, demi-gros, détail — plus purchase price and recommended retail price, with change historyV1
PRC-02Price resolution: the reseller's customer type selects one of the three prices; then promotions; guests see no priceV1
CAT-13Filterable product attributes defined per category (type, unit, allowed values) and filled on every variantV1

Screens

ScreenNameApp
BO-27Products listBO
BO-28Product editorBO
BO-29BrandsBO
BO-30CategoriesBO
BO-31Price grid — three customer-type prices (bulk edit)BO
BO-32Product import wizardBO
BO-71Product attributes (filters) per categoryBO

API surface

Endpoint groupOperations
Catalog & pricing19

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.

On this page