corentin_wakdo/docs/domaines/borne.md
Imugiii f7caf2d50c
All checks were successful
CI / secret-scan (pull_request) Successful in 9s
CI / php-lint (pull_request) Successful in 21s
CI / static-tests (pull_request) Successful in 44s
CI / js-tests (pull_request) Successful in 17s
CI / auto-merge (pull_request) Successful in 5s
docs(domaines): documentation par domaine fonctionnel (7 fiches)
docs/domaines/ : une fiche par domaine livre (perimetre / ce qui est livre / regles
metier RG-T* / decisions -> ADR / tables), + index.

auth, catalogue, stock-recettes, users, rbac, stats, borne. Commande = P4 (schema pret,
non documentee ici). Troisieme et derniere PR du jeu de documentation socle.
2026-06-17 13:53:56 +00:00

1.4 KiB

Domaine — Borne (kiosk)

Perimetre

Front client tactile (Bloc 1) : parcours welcome -> categories -> produit -> panier -> confirmation. HTML/CSS/JS vanilla, servi en statique par Apache.

Ce qui est livre

  • Pages : index, categories, products, product, cart, payment, confirmation (src/public/borne/).
  • JS modules ES6 (assets/js/) : data.js (chargement, point de swap P4), state.js (panier), page-*.js, nav.js, et allergens.js (modale generale 14 INCO sur carte et fiche).
  • Donnees : JSON statiques (data/) en P5 ; basculent sur /api/* DB-backed au swap P4.

Regles metier / conventions

  • Allergenes : info generale (les 14 INCO, reglement UE 1169/2011), pas un calcul par produit (mapping ingredient_allergen differe).
  • CSP-safe pour le code projet : pas de script inline ajoute (donnees via data-*, addEventListener). Source allergenes = liste fixe data/allergens.json, se branchera sur /api/allergens au swap P4.

Tests

Harnais front node:test + jsdom (tests/js/allergens.test.js) : 14 INCO, bouton "i", ouverture/fermeture (bouton/overlay/Echap), idempotence. Job CI js-tests (Node 20).

Decisions

Swap point P5 -> API au P4 (cf. data.js + journaux). Modele = app self-hostable (ADR-0009).

Tables (au swap P4)

category, product, menu + allergen (lecture). Aujourd'hui : JSON statiques.