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:
@@ -91,13 +91,13 @@ Backend must also support content moderation/validation on publish (disallow dan
|
||||
|
||||
**Frontend files:** implement `AdminProductsApiGateway` alongside the existing `AdminProductsLocalGateway` and rebind the injection token — `features/admin/products/pages/*` and the facade do not change.
|
||||
|
||||
## 7. Orders / revenue (does not exist at all)
|
||||
## 7. Orders / revenue
|
||||
|
||||
**Current behavior:** no backend or local data model for orders or revenue exists anywhere in the codebase. `features/backoffice/orders` is an empty placeholder. The Admin Dashboard's Orders and Revenue cards intentionally render a `pending-backend` state ("Awaiting backend integration") rather than fabricated numbers or a generic empty state.
|
||||
**Current behavior (Sprint 23):** `features/admin/orders/` now exists as an admin CRUD-ish surface (list/detail, status changes, refund request, cancel, notes, CSV export, print invoice) but runs entirely against `AdminOrdersLocalGateway`, which fabricates 24 synthetic in-memory orders — there is still no real order data anywhere in this system. The dashboard's Orders/Revenue cards (Sprint 19) still correctly render `pending-backend` rather than reading from this mock (they're intentionally not wired to it — the mock is order-management scaffolding, not a real metrics source).
|
||||
|
||||
**Needed:** an order domain (creation, lifecycle, line items, totals) and revenue aggregation, plus endpoints to back a dashboard summary (see item 8) and an admin orders list/detail UI.
|
||||
**Needed:** a real order domain — `AdminOrder` shape is in `src/app/features/admin/orders/models/admin-order.model.ts`. At minimum: order CRUD, status transitions with a timeline/audit trail, payment status, refund workflow, and a revenue aggregation endpoint for the dashboard cards.
|
||||
|
||||
**Frontend files:** `features/admin/dashboard/facade/admin-dashboard.facade.ts` (card status computation), a new `features/admin/orders/` module once the domain exists.
|
||||
**Frontend files:** implement `AdminOrdersApiGateway` against `AdminOrdersGateway` (`services/admin-orders-gateway.interface.ts`) and rebind via an injection token — facade and pages don't change.
|
||||
|
||||
## 8. Dashboard metrics
|
||||
|
||||
|
||||
Reference in New Issue
Block a user