Ouvre le domaine commande cote back-office (les commandes existent depuis P4 1a/1b
et, depuis la borne L4, sont reellement creees).
- App\Order\OrderQueryRepository (read-side, DatabaseInterface seul) : recent($limit)
pour la liste admin + salesKpis() (CA encaisse paid+delivered, nb payees, panier
moyen, CA/nb du jour, total, repartition par statut).
- OrderAdminController : GET /admin/orders, permission order.read, liste lecture seule
(numero, mode, chevalet, statut, total ttc, date). Les transitions deliver/cancel
restent aux ecrans operationnels (hors back-office MVP).
- StatsController : ferme la dette "KPIs de vente differes P4" -> section Ventes dans
/admin/stats (CA, commandes payees, panier moyen, total). Hook orderQuery() = seam.
- Nav "Commandes" (order.read) reactivee dans la sidebar (etait volontairement absente
tant que la route n'existait pas).
- Tests : OrderQueryRepositoryDbTest (integration, vraie DB : 3) + OrderAdminControllerTest
(double : guard 403/200 + rendu) + StatsControllerTest (section Ventes). 350 PHP verts,
PHPStan L6 propre. Routes verifiees live (302 -> login, gardees par SessionGuard).