ADR 0042 – react-jsonschema-form pour les formulaires de pack
Statut : Décidée. Date : 01/10/2026. Lot 1, séquence B3 (écran des produits et attributs).
Contexte
Section intitulée « Contexte »Les attributs d’un produit sont décrits par un JSON Schema dans le pack de la filière (ADR 0024, module packs). Le back-office doit afficher et saisir ces attributs sans code propre à une filière : aucun écran n’est écrit pour l’ananas. Le thème « Registre » (libellé au-dessus, unité à droite, erreur en clair) était prévu en B1 et repoussé à B3 (EC-067). Le projet n’a qu’un système de schémas : TypeBox / JSON Schema validé par Ajv (ADR 0009).
Décision
Section intitulée « Décision »@rjsf/core et @rjsf/validator-ajv8, avec un thème « Registre » dans apps/backoffice/src/formulaire/ (il migrera vers packages/ui quand l’application terrain en aura besoin, Lot 3). L’écran des produits est chargé à la demande (import()) : rjsf pèse plus de 300 Ko. Le validateur est Ajv, déjà utilisé côté serveur : le formulaire et l’API valident le même schéma avec le même moteur. La validation du serveur reste la seule qui fait foi.
Alternatives écartées
Section intitulée « Alternatives écartées »- Formulaire écrit à la main par type d’attribut : aucune dépendance, mais chaque nouveau type de champ d’un pack demande du code, ce qui contredit « aucun code spécifique à une filière dans le noyau ».
- react-hook-form avec zod : introduit un second système de schémas, interdit par
CLAUDE.md.
Conséquences
Section intitulée « Conséquences »Deux dépendances d’exécution. Le thème se limite aux champs que les packs emploient (texte, nombre avec unité, liste de choix, booléen, date) ; un type de champ absent du thème retombe sur le rendu par défaut, signalé par un test. Les schémas du pack ne portent aucune information d’affichage propre à rjsf.
Stratégie de sortie
Section intitulée « Stratégie de sortie »Le contrat est le JSON Schema du pack, qui ne dépend pas de rjsf. Remplacer la bibliothèque revient à réécrire le thème et un composant de formulaire.