feat(cooking-session): regroupe les tâches du stepper en mini-sections par recette #27

Merged
kyuno merged 1 commit from feat/cooking-stepper-recipe-groups into main 2026-09-04 19:34:42 +02:00
Owner

Contexte

Dans l'onglet Plan de /cuisiner, la liste de tâches d'une phase était un flux plat — la ou les recettes concernées n'apparaissaient qu'en petite ligne muette sous chaque carte ("pour Recette A"). Pas facile à scanner quand plusieurs recettes tournent en parallèle en batch-cooking.

Changement

  • groupTasksByRecipes (cooking-session.ts) : nouvelle fonction pure qui regroupe les tâches d'une phase par combinaison exacte de recettes (sourceRecipes), pas juste "partage une recette avec" — une tâche merged-prep/merged-setup mutualisée sur 2+ recettes forme sa propre section partagée, distincte de la section solo de chacune de ces recettes.
  • PhaseSection affiche désormais une mini-section (<h3> + liste) par groupe, titrée par le(s) nom(s) de recette(s) (recipeNames, ex-taskRecipeNames).
  • La ligne "pour {{recipes}}" par carte devient redondante avec le titre de section → retirée de TaskCard (clé i18n cookingSession.task.forRecipes supprimée, elle n'a plus d'appelant).
  • Un groupe garde la position de sa première tâche dans la phase, donc l'ordre déjà réfléchi de l'optimiseur (prep avant setup, cuisson passive en premier) continue de piloter quelle section vient en premier.

Tests

  • Cypress mode layout (cooking-session-page.cy.ts) : nouveau test dédié sur la fixture à 3 préchauffages (mutualisé + 2 solo) vérifiant les 3 sections et leur contenu ; assertion ajoutée sur le titre de section de la tâche mutualisée existante.
  • Gherkin (cooking-session.feature) : une assertion de section ajoutée au scénario "pooled prep" (section partagée) et au scénario "conflit de four" (2 sections solo).
  • pnpm lint + pnpm --filter web build clean. Suite cooking-session-page.cy.ts + cooking-session.feature : 14/14 passing (Chrome headless).

🤖 Generated with Claude Code

## Contexte Dans l'onglet **Plan** de `/cuisiner`, la liste de tâches d'une phase était un flux plat — la ou les recettes concernées n'apparaissaient qu'en petite ligne muette sous chaque carte (`"pour Recette A"`). Pas facile à scanner quand plusieurs recettes tournent en parallèle en batch-cooking. ## Changement - `groupTasksByRecipes` (`cooking-session.ts`) : nouvelle fonction pure qui regroupe les tâches d'une phase par **combinaison exacte** de recettes (`sourceRecipes`), pas juste "partage une recette avec" — une tâche `merged-prep`/`merged-setup` mutualisée sur 2+ recettes forme sa propre section partagée, distincte de la section solo de chacune de ces recettes. - `PhaseSection` affiche désormais une mini-section (`<h3>` + liste) par groupe, titrée par le(s) nom(s) de recette(s) (`recipeNames`, ex-`taskRecipeNames`). - La ligne `"pour {{recipes}}"` par carte devient redondante avec le titre de section → retirée de `TaskCard` (clé i18n `cookingSession.task.forRecipes` supprimée, elle n'a plus d'appelant). - Un groupe garde la position de sa première tâche dans la phase, donc l'ordre déjà réfléchi de l'optimiseur (prep avant setup, cuisson passive en premier) continue de piloter quelle section vient en premier. ## Tests - Cypress mode layout (`cooking-session-page.cy.ts`) : nouveau test dédié sur la fixture à 3 préchauffages (mutualisé + 2 solo) vérifiant les 3 sections et leur contenu ; assertion ajoutée sur le titre de section de la tâche mutualisée existante. - Gherkin (`cooking-session.feature`) : une assertion de section ajoutée au scénario "pooled prep" (section partagée) et au scénario "conflit de four" (2 sections solo). - `pnpm lint` + `pnpm --filter web build` clean. Suite `cooking-session-page.cy.ts` + `cooking-session.feature` : **14/14** passing (Chrome headless). 🤖 Generated with [Claude Code](https://claude.com/claude-code)
kyuno added 1 commit 2026-09-04 18:47:48 +02:00
feat(cooking-session): regroupe les tâches du stepper en mini-sections par recette
All checks were successful
CI / lint (push) Successful in 2m20s
CI / build (push) Successful in 2m25s
CI / intent-service-test (push) Successful in 4m31s
CI / e2e (push) Successful in 6m6s
CI / test (push) Successful in 14m3s
a24ef6a78b
Dans l'onglet Plan de /cuisiner, la liste de tâches d'une phase était un
flux plat — la recette concernée n'apparaissait qu'en petite ligne sous
chaque carte. Regroupe désormais les tâches par combinaison exacte de
recettes (groupTasksByRecipes, cooking-session.ts) : chaque groupe devient
une mini-section titrée par le(s) nom(s) de recette(s), un pool
merged-prep/merged-setup formant sa propre section partagée plutôt que
d'être rattaché à une seule recette. La ligne "pour X" par carte devient
redondante avec le titre de section et est retirée (clé i18n forRecipes
supprimée).

Couverture ajoutée : cooking-session-page.cy.ts (mode layout, 3 sections
distinctes sur la fixture à préchauffages multiples) + cooking-session.feature
(parcours Gherkin, section partagée + sections solo).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
kyuno merged commit 9cde984543 into main 2026-09-04 19:34:42 +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#27
No description provided.