Commit graph

5 commits

Author SHA1 Message Date
Imugiii
25f47a5074 feat(borne): composeur menu pilote par les slots /api/menus (P5 L2)
All checks were successful
CI / secret-scan (pull_request) Successful in 12s
CI / php-lint (pull_request) Successful in 26s
CI / static-tests (pull_request) Successful in 50s
CI / js-tests (pull_request) Successful in 33s
CI / js-tests (push) Successful in 30s
CI / secret-scan (push) Successful in 11s
CI / php-lint (push) Successful in 26s
CI / static-tests (push) Successful in 51s
Le composeur de menu consomme desormais GET /api/menus/{id} au lieu de composer
librement a partir des categories (dette P4 #3). Burger impose (burger_product_id),
un pas par slot reel (drink/side/sauce, options resolues), format Normal/Maxi au
prix du menu.

- data.js : loadMenu(id) (detail + slots) ; loadProductsById (index produit par id,
  type 'produit' uniquement -> pas de collision avec les ids de menu).
- page-product-menu.js : reecrit slot-driven. Fonctions pures buildComposerSteps /
  buildMenuCartItem / selectionsComplete / composerIsViable. composition produite
  compatible avec page-cart.js et le panneau persistant L1 (slot_type -> champ).
- page-cart.js : rendu de composition tolerant aux champs absents ; libelle Maxi
  ("Format Maxi : +X") au lieu de "N grande(s)" devenu trompeur sous le forfait menu.
- tests : composer-slots.test.js + loadProductsById (data.test.js). 49/49 verts.

Revue adversariale (workflow, 14 findings / 12 confirmes) : must-fix integres --
SLOT_FIELD fait foi (slot_type hors drink/side/sauce ignore, l'enum DB autorise
dessert/extra -> plus de choix perdu) ; composerIsViable refuse d'ouvrir si burger
absent ou slot requis sans option (plus d'etape impassable) ; aria-hidden du fond
sous la modale ; role=dialog sur le conteneur ; overflow body sauvegarde/restaure.
Differes notes : multi-slots de meme type (menu famille), display_order vs maquette.
2026-06-19 16:28:22 +00:00
c73afdf471 feat(borne): panneau commande persistant + bandeau categories (P5 L1) (#64)
All checks were successful
CI / secret-scan (push) Successful in 10s
CI / php-lint (push) Successful in 21s
CI / static-tests (push) Successful in 53s
CI / js-tests (push) Successful in 26s
2026-06-19 16:54:47 +02:00
7a0702ff6e feat(borne): cablage de la borne sur l'API (CORS + data.js) (#61)
All checks were successful
CI / secret-scan (push) Successful in 8s
CI / php-lint (push) Successful in 23s
CI / static-tests (push) Successful in 52s
CI / js-tests (push) Successful in 26s
2026-06-18 16:46:17 +02:00
60535bbe00 feat(admin): modal de re-autorisation PIN (#52)
All checks were successful
CI / secret-scan (push) Successful in 15s
CI / php-lint (push) Successful in 19s
CI / static-tests (push) Successful in 1m5s
CI / js-tests (push) Successful in 32s
CI / auto-merge (push) Has been skipped
2026-06-18 13:17:59 +02:00
1ecd78324c feat(borne): modale allergenes generale (14 INCO) sur carte et fiche + harnais tests JS (P3) (#36)
All checks were successful
CI / secret-scan (push) Successful in 7s
CI / php-lint (push) Successful in 18s
CI / static-tests (push) Successful in 42s
CI / js-tests (push) Successful in 18s
CI / auto-merge (push) Has been skipped
2026-06-17 12:10:46 +02:00