feat(allergenes): allergenes calcules par produit avec etat de revue explicite #128

Merged
Corentin merged 1 commit from feat/allergenes-par-produit into dev 2026-07-31 14:38:37 +02:00
Owner
No description provided.
feat(allergenes): allergenes calcules par produit avec etat de revue explicite
All checks were successful
CI / static-tests (push) Successful in 1m2s
CI / js-tests (push) Successful in 36s
CI / secret-scan (pull_request) Successful in 13s
CI / secret-scan (push) Successful in 17s
CI / php-lint (push) Successful in 27s
CI / php-lint (pull_request) Successful in 25s
CI / static-tests (pull_request) Successful in 58s
CI / js-tests (pull_request) Successful in 36s
d8f98dbbd3
La borne affichait les 14 categories INCO, les memes pour tous les produits :
vrai mais inutilisable. Elle affiche desormais les allergenes reellement portes
par la recette, calcules par jointure product_ingredient -> ingredient_allergen
-> allergen (derivation que le dictionnaire 3.8 decrivait deja sans qu'elle soit
implementee, sur une table de liaison restee vide depuis la migration 0001).

Le coeur du lot est une distinction : une liaison vide est ambigue, elle ne
separe pas "verifie, aucun des 14" de "personne n'a regarde". La migration 0011
ajoute ingredient.allergens_reviewed_at + allergens_source (meme forme que le
couple nutrition de la migration 0005). Trois etats a l'ecran, jamais confondus :
on nomme les allergenes, on affirme l'absence, ou on renvoie vers l'equipe. Un
avertissement de traces accompagne les trois.

Donnees : 50 ingredients revus sur sources publiques (108 pages consultees),
puis deux relectures adversariales qui ont MODIFIE le resultat -- celeri ajoute
sur la sauce barbecue (un client allergique lisait "moutarde uniquement"), oeuf
retire du donut (le livret officiel le classe en traces, pas en ingredient),
soja retire d'une dosette, six niveaux de preuve abaisses. Cinq ingredients
restent non revus a dessein, la ou des recettes divergent : 8 produits affichent
"information non disponible" plutot qu'une union de recettes incompatibles.

L'equipe peut corriger : matrice des 14 cases sur la fiche ingredient, source
OBLIGATOIRE, geste trace (audit_log ingredient.allergens dans la meme
transaction). Permission ingredient.manage reutilisee, dont le libelle couvrait
deja "allergen mapping" -- catalogue de permissions inchange a 23.

Verifie : 565 tests unitaires, 71 d'integration sur base reelle (dont le stock
intouche par une revue), 185 JS, PHPStan niveau 6 propre. Les trois etats
constates en navigateur reel sur les donnees de production, 0 violation CSP. La
modale, du DOM genere reste hors validation jusqu'ici, passe le validateur W3C
sans nouveau message (artefact borne-modale-allergenes.json).

Modele : dictionary.md note 15, mld.md 4.6, mlt.md 8.8. ADR-0015.
Corentin scheduled this pull request to auto merge when all checks succeed 2026-07-31 14:33:58 +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!128
No description provided.