feat(admin): order management
Sprint 23. New features/admin/orders/ module, same container/facade/service split as admin/products and admin/categories. - AdminOrder model + AdminOrdersLocalGateway seeding 24 deterministic synthetic orders (no real order data source exists anywhere in this repo - explicitly a placeholder, not a mock of production volume) - list: search, status filter, pagination, CSV export (client-side Blob download) - detail: customer/payment/shipping, itemized total, status timeline, change-status dropdown, refund request + cancel (window.confirm-gated), separate customer-facing vs internal notes, print invoice via window.print() with @media print hiding non-invoice chrome - wired into /:lang/backoffice/orders(/:id), replacing the coming-soon placeholder docs/ADMIN.md + docs/BACKEND.md updated; dashboard's Orders/Revenue cards (Sprint 19) remain intentionally un-wired to this mock and still render pending-backend. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -291,6 +291,29 @@ implementation) + `features/backoffice/media/` + the shared
|
||||
API and rebinding the provider; no consumer (`MediaLibraryFacade`,
|
||||
`MediaPickerComponent`, or any of the pickers above) changes.
|
||||
|
||||
## Sprint 23 - Orders (mock/local)
|
||||
|
||||
`features/admin/orders/` (model/gateway/facade/pages), same
|
||||
container/facade/service split as the rest of `admin/*`:
|
||||
|
||||
- **No real data source exists for orders anywhere in this repo** (already
|
||||
called out in Sprint 19's dashboard gap and `docs/BACKEND.md` item 7) -
|
||||
`AdminOrdersLocalGateway` seeds 24 deterministic synthetic orders in
|
||||
memory (cycling through all statuses/customers) rather than reading from
|
||||
`BackofficeDataService`, since there is nothing there to read. This is
|
||||
explicitly a placeholder to unblock the admin UI, not a real mock of
|
||||
production order volume.
|
||||
- List: search (order number/customer/email), status filter, pagination,
|
||||
CSV export (client-side `Blob` download, no server round-trip).
|
||||
- Detail: customer/payment/shipping info, itemized line items + total,
|
||||
status timeline, change-status dropdown, refund request and cancel
|
||||
(both `window.confirm`-gated), customer-visible notes vs internal-only
|
||||
notes (two separate free-text logs), print invoice via `window.print()`
|
||||
with a `@media print` rule hiding all non-invoice chrome (`.no-print`) -
|
||||
no PDF generation library, deliberately minimal.
|
||||
- Wired into `/:lang/backoffice/orders` and `/:lang/backoffice/orders/:id`,
|
||||
replacing the coming-soon placeholder.
|
||||
|
||||
## Known gaps / backend needs
|
||||
|
||||
- **Dashboard metrics endpoint.** Categories/Products counts are computed
|
||||
|
||||
Reference in New Issue
Block a user