L'optimiseur ne mutualisait que le pré-découpage. Il regroupe maintenant aussi les actions SETUP (préchauffage, ébullition) entre recettes, mais seulement quand elles sont compatibles : deux préchauffages ne fusionnent que s'ils visent la même température détectée. Deux préchauffages à des températures différentes restent séparés, ordonnés du plus froid au plus chaud, et la mise en place porte une note « Four requis à N températures — enchaîner … ». Défaut optimiste : deux préchauffages sans température détectée fusionnent quand même (supposés compatibles). - cooking-optimizer.ts : temperatureKey (comparaison exacte, aucune conversion inter-représentations), isPureSetupStep / setupSignature / extractMergedSetup en miroir du chemin merged-prep ; comparableTemp pour l'ordre seul ; detectApplianceTemperatureConflicts → CookingPhaseView.notes - cooking-session.service.ts : `temperatures` dans l'include + mapping - packages/shared : CookingTemperatureView, kind « merged-setup », CookingTaskView.temperatures, CookingPhaseNoteView, CookingPhaseView.notes - web : temperature-label.ts extrait de StepDescription et réutilisé ; taskHeadline gère merged-setup ; phaseNoteText ; bandeau .cooking-phase__note - i18n : cookingSession.task.mergedSetupLabel, cookingSession.note.* - tests : 7 cas Mocha « setup pooling » + test DB cooking-session, cas Cypress mode layout + scénario Gherkin Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
63 lines
3.2 KiB
Gherkin
63 lines
3.2 KiB
Gherkin
Feature: Start cooking an optimized plan
|
|
As a member of a household with a planned week
|
|
I want to open an optimized cooking plan from my planning
|
|
So that shared preparation is pooled and I cook the week efficiently
|
|
|
|
Background:
|
|
Given I am signed in as "Alice" "Martin"
|
|
And my household id is 1
|
|
And today is frozen at "2026-08-17T09:00:00.000Z"
|
|
|
|
Scenario: The "Commencer à cuisiner" button is disabled while the week is empty
|
|
Given the planning request returns nothing
|
|
When I visit "/"
|
|
Then the "Commencer à cuisiner" button should be disabled
|
|
|
|
Scenario: Opening the plan from the planning shows the pooled prep in mise en place
|
|
Given the planning for this week has recipes "Soupe à l'oignon" and "Tarte à l'oignon"
|
|
And the cooking plan for "2026-08-17" pools "Hacher" of "Oignon" across both recipes
|
|
When I visit "/"
|
|
And I click the button "Commencer à cuisiner"
|
|
Then the URL should include "/cuisiner"
|
|
And I should see "Mise en place"
|
|
And the pooled prep task should mention "Hacher" and "Oignon"
|
|
And the pooled prep task should be flagged as shared
|
|
|
|
Scenario: The stepper walks the phases one at a time
|
|
Given the planning for this week has recipes "Soupe à l'oignon" and "Tarte à l'oignon"
|
|
And the cooking plan for "2026-08-17" has a mise en place then a cooking step
|
|
When I visit "/cuisiner?date=2026-08-17"
|
|
Then the current cooking step should be "Étape 1 / 2"
|
|
And I should not see "Faire mijoter le bouillon"
|
|
When I go to the next cooking step
|
|
Then the current cooking step should be "Étape 2 / 2"
|
|
And I should see "Faire mijoter le bouillon"
|
|
When I go to the previous cooking step
|
|
Then the current cooking step should be "Étape 1 / 2"
|
|
|
|
Scenario: A ticked task stays ticked while moving through the stepper
|
|
Given the planning for this week has recipes "Soupe à l'oignon" and "Tarte à l'oignon"
|
|
And the cooking plan for "2026-08-17" has a mise en place then a cooking step
|
|
When I visit "/cuisiner?date=2026-08-17"
|
|
And I tick the cooking task "Hacher"
|
|
Then the cooking task "Hacher" should be done
|
|
When I go to the next cooking step
|
|
And I go to the previous cooking step
|
|
Then the cooking task "Hacher" should be done
|
|
|
|
Scenario: The Recettes tab lists the week's planned recipes
|
|
Given the planning for this week has recipes "Soupe à l'oignon" and "Tarte à l'oignon"
|
|
And the cooking plan for "2026-08-17" has a mise en place then a cooking step
|
|
When I visit "/cuisiner?date=2026-08-17"
|
|
And I open the "Recettes" cooking tab
|
|
Then I should see "Soupe à l'oignon"
|
|
And the recipe "Soupe à l'oignon" should link to "/recettes/1"
|
|
And the recipe "Tarte à l'oignon" should link to "/recettes/2"
|
|
|
|
Scenario: Two recipes preheat the oven to different temperatures
|
|
Given the planning for this week has recipes "Gratin" and "Rôti"
|
|
And the cooking plan for "2026-08-17" needs the oven at 180 °C and 210 °C
|
|
When I visit "/cuisiner?date=2026-08-17"
|
|
Then I should see the oven conflict note "enchaîner 180 °C puis 210 °C"
|
|
And I should see "Préchauffer le four à 180°C"
|
|
And I should see "Préchauffer le four à 210°C"
|