feat: classement des ingredients par famille et filtrage du constructeur de recette #174
No reviewers
Labels
No labels
auto-merge
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
AcadeNice/corentin_wakdo!174
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feat/ingredient-families"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Le constructeur de recette proposait les 50 ingredients du catalogue a plat, quelle que soit la categorie du produit. En composant un burger, l'equipier se voyait proposer
Brownie,Gobelet,Dose CocaetCheesecakeau milieu des pains et des steaks. Signale depuis l'usage reel.Classer, pas retirer
Le reflexe serait de sortir ces lignes du catalogue d'ingredients. Les donnees l'interdisent :
C'est cette ligne de recette qui decremente le stock au paiement (RG-T20) et alimente la disponibilite calculee (RG-T21). Les retirer casserait le suivi de stock des desserts et des boissons. Le defaut n'etait pas leur presence, mais l'absence de toute classification.
Ce que la PR apporte
ingredient.family(dix familles) etcategory_ingredient_family: la correspondance est une donnee, une relation reelle du modele, pas un tableau ecrit en dur dans une classe PHP.Le filtre est souple, deliberement
Aucune validation serveur ne refuse une composition hors famille, et une case desactive le filtre. Une classification finit par rencontrer un cas qu'elle n'avait pas prevu (une salade avec des croutons) ; un blocage dur en ferait une impasse sans recours. Le filtre est une aide a la saisie, pas une regle de gestion : c'est ecrit tel quel dans la fiche de decision.
Sur doute, on montre trop plutot que rien
Famille absente, categorie sans correspondance, donnees illisibles : le resultat est "aucun filtre, on montre les 50", jamais une liste vide. Ce choix repond a l'incident du matin meme, ou un defaut de cache avait laisse l'equipier devant un constructeur ou rien ne se passait, sans message. Un selecteur qui se viderait en silence serait le meme defaut, par conception cette fois.
Une limite ouverte depuis juillet, fermee au passage
docs/adr/0015-allergenes-calcules-par-produit.mdnotait en consequences queGobeletest un ingredient de recette alors que c'est un materiau au contact des denrees, et proposait un drapeauis_food. La famillecontenantcouvre le cas plus generalement : un drapeau binaire n'aurait rien fait pour le probleme signale, puisqu'un Brownie est un aliment. A dire tel quel :IngredientFamily::isFood()n'est appelee par aucun code de production a ce jour - une reponse disponible, pas une fonctionnalite branchee.Verifications
(object)avant encodage JSONTests ecrits avant le code, etat rouge constate.
Limites assumees, ecrites dans la fiche
Fiche de decision :
docs/adr/0018-familles-ingredients-filtre-recette.mdJournal :
docs/journal/2026-09-27--familles-ingredients-filtre-recette.mdModele : dictionnaire 3.6 / 3.23 / note 16, MCD 5.1 / I8 / 5.3, MLD 4.6 / 4.23 (23 entites)