batchCooking/apps/api
Nicolas ba030ec18c
All checks were successful
CI / lint (push) Successful in 3m5s
CI / build (push) Successful in 3m15s
CI / intent-service-test (push) Successful in 5m12s
CI / e2e (push) Successful in 11m1s
CI / test (push) Successful in 19m13s
CI / build-android (push) Has been skipped
feat(recipes): ingrédients d'assaisonnement « selon le goût » sans quantité (#128)
`RecipeIngredient.quantity`/`unitId` deviennent nullable (migration purement
additive) : une ligne de recette peut n'avoir ni quantité ni unité — sel,
poivre… ajoutés selon le goût. Le schéma partagé impose « quantité et unité,
ou aucune des deux » ; `toRecipeView` renvoie `null`/`null`.

`aggregateShoppingList` fait apparaître une telle ligne une seule fois, sans
quantité ni unité, jamais sommée ni mise à l'échelle. `ShoppingListPage`
affiche « selon le goût » à la place de la quantité.

Formulaire : `IngredientRow` gagne une case « Selon le goût » qui masque
quantité/unité ; `RecipeFormPage` et `RecipeImportForm` n'exigent plus
quantité/unité pour ces lignes et les envoient sans. Un import dont la source
laisse une ligne résolue sans quantité (« salt to taste ») arrive
directement en « selon le goût ».

Le chemin clause-de-technique (session de cuisine) tolérait déjà `quantity`
null — inchangé.

Tests : Mocha (création/édition d'une ligne sans quantité, rejet
quantité-sans-unité, liste de courses non sommée) ; Cypress (case à cocher +
parcours), régression recette/liste de courses OK.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-09 14:15:28 +02:00
..
prisma feat(recipes): ingrédients d'assaisonnement « selon le goût » sans quantité (#128) 2026-09-09 14:15:28 +02:00
src feat(recipes): ingrédients d'assaisonnement « selon le goût » sans quantité (#128) 2026-09-09 14:15:28 +02:00
test feat(recipes): ingrédients d'assaisonnement « selon le goût » sans quantité (#128) 2026-09-09 14:15:28 +02:00
test-support feat(contact): modèle + POST /contact + formulaire utilisateur (#80) 2026-09-08 08:26:47 +02:00
.env.example feat(admin): crée un ticket Forgejo depuis un message de contact (#81) 2026-09-08 20:10:54 +02:00
.env.test.example feat(admin): fondation auth de l'application d'administration 2026-08-28 23:36:29 +02:00
.mocharc.json feat(recipes): migre la detection des tech steps de node-nlp vers un microservice Python spaCy 2026-08-26 09:03:52 +02:00
Dockerfile fix(recipes): persiste les métadonnées de clause des tech-steps à l'édition 2026-09-04 09:08:15 +02:00
package.json feat(admin): pousse le monitoring en WebSocket au lieu du polling client 2026-09-05 14:44:39 +02:00
tsconfig.json Scaffold generic pnpm monorepo (api + web + shared) (#1) 2026-08-16 10:55:13 +02:00