corentin_wakdo/docs/domaines/borne.md
Corentin JOGUET 32f9baacce
All checks were successful
CI / secret-scan (push) Successful in 8s
CI / php-lint (push) Successful in 20s
CI / static-tests (push) Successful in 41s
CI / js-tests (push) Successful in 19s
CI / auto-merge (push) Has been skipped
docs(domaines): documentation par domaine fonctionnel (7 fiches) (#44)
2026-06-17 15:55:30 +02: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.