feat(bloc1): controle de saisie en temps reel, back-office mobile et referencement de la borne #146

Merged
Corentin merged 1 commit from feat/bloc1-finitions into dev 2026-09-23 17:53:17 +02:00
Owner

Lot F33 : finitions du Bloc 1

Un critere du referentiel par point :

  • Cr 2.b.1 : controle de saisie en temps reel sur tous les formulaires du back-office et de connexion (form-validation.js, fichier du projet sans librairie), regles alignees sur celles des controleurs.
  • Cr 1.b.1 : back-office utilisable sur telephone (menu en bande sous 640 px, tuiles du tableau de bord, tableaux defilants).
  • Cr 1.e.2, 1.e.3, 1.e.5, 1.e.7 : borne : exergue, schema.org sur les 5 pages, titres et descriptions mesures, title sur tous les liens, accents des textes statiques.
  • Cr 1.e.8 : banniere WebP, 1 256 918 -> 95 546 octets ; chargement complet de l'accueil 6 749 -> 945 ms a 1,6 Mbit/s.
  • Cr 1.d.2 : style.css numerote de 1 a 21 avec sommaire.

Defauts existants trouves et corriges

  • Modal PIN bloque sur 5 formulaires d'action sensible (champs masques mais required) ; message du serveur apres un PIN refuse rendu visible.
  • Page produits de la borne : debordement horizontal sous 900 px (902 px de trop a 360 px).
  • Back-office sur telephone : tuiles du tableau de bord, en-tete de la liste des produits, trois tableaux sans cadre defilant.

Verifications

  • Tests JS 275/275 (42 nouveaux), PHP 757 + PHPStan niveau 6, validateur W3C 0 message.
  • E2E Chromium 14/14 (tests/e2e/responsive.spec.js : borne a 360, 390 et 768 px ; 15 pages du back-office a 360 et 390 px ; controle de saisie ; modal PIN), audit axe-core 0 violation.
  • Mesure de chargement reproductible : PERF=1, tests/e2e/perf-accueil.spec.js.

Relecture independante (bmad-compliance)

Trois tours : 8 corrections demandees, puis 2, puis approbation sans reserve bloquante.

Preuves

docs/soutenance/preuves/08-referencement-performance.md, 09-controle-saisie-temps-reel.md, 02-matrice-responsive.md et README.md mis a jour.

## Lot F33 : finitions du Bloc 1 Un critere du referentiel par point : - **Cr 2.b.1** : controle de saisie en temps reel sur tous les formulaires du back-office et de connexion (`form-validation.js`, fichier du projet sans librairie), regles alignees sur celles des controleurs. - **Cr 1.b.1** : back-office utilisable sur telephone (menu en bande sous 640 px, tuiles du tableau de bord, tableaux defilants). - **Cr 1.e.2, 1.e.3, 1.e.5, 1.e.7** : borne : exergue, schema.org sur les 5 pages, titres et descriptions mesures, `title` sur tous les liens, accents des textes statiques. - **Cr 1.e.8** : banniere WebP, 1 256 918 -> 95 546 octets ; chargement complet de l'accueil 6 749 -> 945 ms a 1,6 Mbit/s. - **Cr 1.d.2** : `style.css` numerote de 1 a 21 avec sommaire. ## Defauts existants trouves et corriges - Modal PIN bloque sur 5 formulaires d'action sensible (champs masques mais `required`) ; message du serveur apres un PIN refuse rendu visible. - Page produits de la borne : debordement horizontal sous 900 px (902 px de trop a 360 px). - Back-office sur telephone : tuiles du tableau de bord, en-tete de la liste des produits, trois tableaux sans cadre defilant. ## Verifications - Tests JS 275/275 (42 nouveaux), PHP 757 + PHPStan niveau 6, validateur W3C 0 message. - E2E Chromium 14/14 (`tests/e2e/responsive.spec.js` : borne a 360, 390 et 768 px ; 15 pages du back-office a 360 et 390 px ; controle de saisie ; modal PIN), audit axe-core 0 violation. - Mesure de chargement reproductible : `PERF=1`, `tests/e2e/perf-accueil.spec.js`. ## Relecture independante (bmad-compliance) Trois tours : 8 corrections demandees, puis 2, puis approbation sans reserve bloquante. ## Preuves `docs/soutenance/preuves/08-referencement-performance.md`, `09-controle-saisie-temps-reel.md`, `02-matrice-responsive.md` et `README.md` mis a jour.
feat(bloc1): controle de saisie en temps reel, back-office mobile et referencement de la borne
All checks were successful
CI / secret-scan (push) Successful in 28s
CI / php-lint (push) Successful in 28s
CI / static-tests (push) Successful in 1m20s
CI / js-tests (push) Successful in 48s
CI / secret-scan (pull_request) Successful in 23s
CI / php-lint (pull_request) Successful in 38s
CI / static-tests (pull_request) Successful in 1m36s
CI / js-tests (pull_request) Successful in 55s
3ae094ce0f
Finitions du Bloc 1 (lot F33), un critere du referentiel par point, apres deux
tours de relecture independante (bmad-compliance : 8 puis 2 corrections demandees,
toutes traitees) :

- Cr 2.b.1 : form-validation.js controle chaque champ des formulaires du
  back-office et des pages de connexion pendant la saisie, message en francais
  relie au champ (aria-invalid, aria-describedby), envoi bloque avant les autres
  scripts s'il reste un ecart. Il suit le serveur plutot que le navigateur :
  valeurs texte nettoyees comme par trim, longueurs en caracteres, entiers sans
  notation scientifique, saisie numerique illisible signalee au lieu de partir
  vide, champs ajoutes apres le chargement couverts, message garde jusqu'au
  relachement du bouton. Les attributs HTML des vues reprennent les regles des
  controleurs (slug, code de role, plafonds des prix et stocks, ordre d'affichage
  obligatoire, mot de passe de 8 caracteres et confirmation, ajustement non nul,
  longueur du PIN lue dans la meme configuration que PinVerifier).
- Correctif : sur cinq formulaires d'action sensible (ajustement de stock,
  inventaire, annulation de commande, suppressions de produit et de menu), les
  champs PIN masques par le modal portaient required ; le navigateur refusait
  l'envoi avant l'evenement submit et le modal ne s'ouvrait pas. pin-modal.js
  retire required des champs qu'il masque et garde visible le message du serveur
  apres un PIN refuse, y compris avec form-validation.js charge avant lui.
  Reproduit dans Chromium avant correctif, verifie sur la page reelle apres.
- Cr 1.b.1 : sous 640px, l'ossature du back-office passe a une colonne, le menu
  lateral devient une bande recentree sur la page courante, les tuiles du tableau
  de bord passent sur 2 colonnes, trois tableaux recoivent leur cadre defilant.
  Correctif : la page produits de la borne debordait horizontalement sous 900px
  (902 px de trop a 360 px) ; le contenu est desormais etire a la largeur utile.
- Cr 1.e.5 : titres (50 a 56 caracteres) et descriptions (143 a 151) uniques sur
  les 5 pages de la borne ; titre de la page produits complete par la categorie.
- Cr 1.e.3 : donnees schema.org sur les 5 pages, reliees par @id ; la section de
  carte est construite depuis les produits charges (seo.js, fichier du projet sans
  librairie). paymentAccepted liste de vrais moyens de paiement.
- Cr 1.e.7 : title sur tous les liens, statiques et generes, reprenant l'intitule.
- Cr 1.e.2 : expressions cles en strong / em ; accents retablis dans les textes
  des 5 pages.
- Cr 1.e.8 : banniere d'accueil en WebP (1 256 918 -> 95 546 octets). Mesure a
  1,6 Mbit/s (tests/e2e/perf-accueil.spec.js) : chargement complet de l'accueil
  6 749 -> 945 ms, premier affichage inchange.
- Cr 1.d.2 : style.css renumerote de 1 a 21 avec sommaire en tete.

Tests : 42 tests JS (275 au total), 2 tests PHP (757), tests/e2e/responsive.spec.js
(Chromium : aucun defilement horizontal borne a 360, 390 et 768 px, 15 pages du
back-office a 360 et 390 px mesurees dans la zone de contenu ; controle de saisie ;
modal PIN avec et sans le controle de saisie, message du serveur apres un PIN
refuse). Validateur W3C : 0 message.
Preuves : docs/soutenance/preuves/08-referencement-performance.md,
09-controle-saisie-temps-reel.md, 02-matrice-responsive.md mise a jour.
Corentin scheduled this pull request to auto merge when all checks succeed 2026-09-23 17:49:35 +02:00
Sign in to join this conversation.
No reviewers
No labels
auto-merge
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
AcadeNice/corentin_wakdo!146
No description provided.