feat(admin): recettes produit - composition product_ingredient + dispo calculee RG-T21 (P3, ferme #27) #35

Merged
Corentin merged 1 commit from feat/p3-recettes into dev 2026-06-17 11:29:08 +02:00
Owner
No description provided.
Corentin added 1 commit 2026-06-17 11:27:50 +02:00
feat(admin): recettes produit - composition product_ingredient + dispo calculee RG-T21 (P3, ferme #27)
All checks were successful
CI / secret-scan (pull_request) Successful in 9s
CI / php-lint (pull_request) Successful in 20s
CI / static-tests (pull_request) Successful in 41s
CI / secret-scan (push) Successful in 8s
CI / static-tests (push) Successful in 45s
CI / auto-merge (pull_request) Successful in 4s
CI / php-lint (push) Successful in 19s
CI / auto-merge (push) Has been skipped
06450b2db5
PR-B du lot P3 stock. Editeur de recette (composition product_ingredient) et
disponibilite produit calculee, sur la couche stock de PR-A.

- Composition (ProductRepository) : composition() (JOIN ingredient), setComposition()
  en delete-and-reinsert dans UNE transaction (RG-2/RG-T08), ingredientExists()
  + dedup par PK composite, compositionCount(). FK product_id CASCADE,
  ingredient_id RESTRICT.
- Editeur (ProductController) : recipeForm/saveRecipe gardes par ingredient.manage
  (composition, DISTINCTE du CRUD produit), sans PIN (hors RG-T13). Revalidation
  serveur RG-T18 + allowlist RG-T16 (ingredient inconnu filtre, bornes des CHECK).
  Vue recipe.php + product-recipe.js (builder vanilla CSP-safe, data-*).
- Disponibilite calculee RG-T21 : isOrderable() = is_available ET chaque ingredient
  NON RETIRABLE au-dessus de la bande critique (reutilise IngredientRepository::
  stockBand). Un ingredient retirable en critique ne bloque pas ; un retrait manuel
  prime. Badge "Rupture auto" dans la liste (autoUnavailableIds, distinct du retrait
  manuel).
- Dette #27 close : la suppression dure d'un produit cascade product_ingredient ;
  le nombre de lignes emportees est compte et trace dans le resume d'audit.

Tests : 259 / 777 assertions verts (WAKDO_DB_TESTS=1), PHPStan L6 propre.
Corentin scheduled this pull request to auto merge when all checks succeed 2026-06-17 11:27:51 +02:00
Corentin merged commit ed392d4c14 into dev 2026-06-17 11:29:08 +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#35
No description provided.