feat(cooking): « Commencer à cuisiner » — moteur d'optimisation + endpoint + page /cuisiner #11

Merged
kyuno merged 3 commits from feat/cooking-session-ui into main 2026-08-28 22:53:48 +02:00
Owner

Bloc « Commencer à cuisiner » regroupé en une seule PR (remplace la pile #9 / #10 / #11 / #12, désormais fermées).

Contenu (3 commits, branche feat/cooking-session-ui basée sur main) :

1 — Moteur d'optimisation (33b8a85)

apps/api/src/lib/recipe-matching/cooking-optimizer.tsoptimizeCookingPlan() pur : mutualise la mise en place (une technique de découpe sur le même ingrédient dans une étape purement prep de ≥ 2 recettes = une seule tâche) et pousse les cuissons passives (mijoter, braiser, cuire au four…) en tâche de fond des phases suivantes. Types partagés OptimizedCookingPlanView + schéma. 40 tests Mocha purs (cooking-optimizer.test.ts, incl. plannings type prod semaine complète + multi-personnes).

2 — Endpoint API (3bff583)

Module apps/api/src/modules/cooking-session/GET /cooking-session?date= (requireAuth, même requête « plage couvrante » + dégradation « jamais null » que /shopping-list), mappe chaque PlanningItem vers l'entrée pure du moteur. Tests d'intégration Mocha. specs/batch-cooking-architecture.md : module « Calcul batch-cooking » TODO → v1 implémentée.

3 — Front (a28fcb5)

Bouton « Commencer à cuisiner » dans l'en-tête du planning (actif si ≥ 1 recette), page apps/web /cuisiner : phases (mise en place / cuisson / dressage), tâches mutualisées avec badge, bande « Pendant ce temps ». Logique pure cooking-session.ts, i18n cookingSession.*. Cypress 12 tests verts.

Vérif

pnpm lint + pnpm -r build verts, 40/40 moteur, 29/29 Cypress. ⚠️ cooking-session.test.ts (intégration) non exécuté dans la session (pas de Postgres:5433).

🤖 Generated with Claude Code

Bloc **« Commencer à cuisiner »** regroupé en une seule PR (remplace la pile #9 / #10 / #11 / #12, désormais fermées). Contenu (3 commits, branche `feat/cooking-session-ui` basée sur `main`) : ## 1 — Moteur d'optimisation (`33b8a85`) `apps/api/src/lib/recipe-matching/cooking-optimizer.ts` — `optimizeCookingPlan()` **pur** : mutualise la mise en place (une technique de découpe sur le même ingrédient dans une étape purement prep de ≥ 2 recettes = une seule tâche) et pousse les cuissons passives (mijoter, braiser, cuire au four…) en tâche de fond des phases suivantes. Types partagés `OptimizedCookingPlanView` + schéma. **40 tests Mocha purs** (`cooking-optimizer.test.ts`, incl. plannings type prod semaine complète + multi-personnes). ## 2 — Endpoint API (`3bff583`) Module `apps/api/src/modules/cooking-session/` — `GET /cooking-session?date=` (`requireAuth`, même requête « plage couvrante » + dégradation « jamais null » que `/shopping-list`), mappe chaque `PlanningItem` vers l'entrée pure du moteur. Tests d'intégration Mocha. `specs/batch-cooking-architecture.md` : module « Calcul batch-cooking » TODO → v1 implémentée. ## 3 — Front (`a28fcb5`) Bouton **« Commencer à cuisiner »** dans l'en-tête du planning (actif si ≥ 1 recette), page `apps/web` `/cuisiner` : phases (mise en place / cuisson / dressage), tâches mutualisées avec badge, bande « Pendant ce temps ». Logique pure `cooking-session.ts`, i18n `cookingSession.*`. **Cypress 12 tests verts**. ## Vérif `pnpm lint` + `pnpm -r build` verts, 40/40 moteur, 29/29 Cypress. ⚠️ `cooking-session.test.ts` (intégration) non exécuté dans la session (pas de Postgres:5433). 🤖 Generated with [Claude Code](https://claude.com/claude-code)
kyuno added 1 commit 2026-08-28 12:45:56 +02:00
feat(cooking): page /cuisiner + bouton "Commencer a cuisiner"
Some checks failed
CI / lint (push) Successful in 2m54s
CI / build (push) Successful in 2m52s
CI / e2e (push) Successful in 7m29s
CI / intent-service-test (push) Successful in 11m41s
CI / test (push) Failing after 22m19s
a28fcb55b3
- Bouton "Commencer a cuisiner" dans l'en-tete du planning, actif seulement
  quand la semaine affichee contient >= 1 recette ; navigue vers
  /cuisiner?date=<semaine>.
- Page CookingSessionPage (/cuisiner) : consomme GET /cooking-session, rend
  les phases (mise en place / cuisson / dressage), les taches mutualisees
  avec badge "Mutualise" + ingredients/ustensiles resolus, et la bande
  "Pendant ce temps" pour les cuissons de fond. Semaine lue depuis ?date=,
  WeekNavigator en fallback ; recalcul a chaque visite (comme la liste de
  courses).
- Logique pure extraite dans cooking-session.ts (composition des libelles,
  formatage des quantites).
- i18n : bloc cookingSession.* + planning.startCooking.
- apiClient.getCookingPlanForWeek.
- Tests Cypress : cooking-session-page.cy.ts (layout, 3 cas), cooking-session
  .feature (parcours planning -> /cuisiner), assertions bouton dans
  planning-page.cy.ts ; step generique "button should be disabled" mutualise.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
kyuno changed title from feat(cooking): page /cuisiner + bouton « Commencer à cuisiner » to feat(cooking): « Commencer à cuisiner » — moteur d'optimisation + endpoint + page /cuisiner 2026-08-28 15:26:46 +02:00
kyuno changed target branch from feat/cooking-session-api to main 2026-08-28 15:26:47 +02:00
kyuno force-pushed feat/cooking-session-ui from a28fcb55b3 to e8ac2d1629 2026-08-28 19:07:51 +02:00 Compare
kyuno merged commit 46635cb76f into main 2026-08-28 22:53:47 +02:00
Sign in to join this conversation.
No reviewers
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: kyuno/batchCooking#11
No description provided.