feat(onboarding): réordonne le wizard en compte → préférences → foyer → sources (#129) #139

Merged
kyuno merged 1 commit from feat/onboarding-wizard-order into main 2026-09-09 16:59:50 +02:00
Owner

Contexte

Closes #129 (puce 2 de #3). Ordre voulu : compte → préférences (régime + allergènes) → foyer → sources (uniquement si le foyer vient d'être créé).

Avant : compte → régime → foyer → [sources si créé ou rejoint] → allergènes. Les allergènes étaient le dernier écran et l'étape sources apparaissait aussi pour un foyer rejoint.

Changements

Navigation — SignupPage → /onboarding/regime (inchangé) ; regime → allergenes → foyer. L'étape foyer décide de la suite : goToNextStep(createdHousehold) route vers /onboarding/sources seulement si le foyer a été créé, sinon / (rejoindre, passer, ou la branche défensive « déjà un foyer » après un retour navigateur — impossible d'y distinguer créé de rejoint, et l'étape sources s'auto-saute de toute façon si rien à configurer). OnboardingSourcesPage devient la dernière étape : submit / court-circuit « aucune source » / catch vont tous vers /.

Compteurs — nouveau module pages/onboarding/onboarding-steps.ts : la séquence des étapes + onboardingStepIndicator(step, { hasSources? }). Ils étaient codés en dur page par page (un réordonnancement les cassait tous) et l'étape allergènes faisait un getCurrentHouse() au montage juste pour deviner « 3 sur 3 » ou « 4 sur 4 » — supprimé, elle précède maintenant le foyer. régime / allergènes / foyer sont en amont du choix « créer vs rejoindre/passer » → « sur 3 » ; seule l'étape sources, jamais atteinte hors du chemin à 4 étapes, affiche « 4 sur 4 ».

Libellés — OnboardingAllergensPage : bouton « Continuer » (plus « Terminer »). OnboardingSourcesPage : bouton « Terminer ». Zéro nouvelle clé i18n (onboarding.continue / onboarding.finish existent déjà), titres régime/allergènes conservés séparés (2 sous-écrans, pas de fusion).

Doc — App.tsx (blocs <Route> réordonnés + commentaire du groupe /onboarding/*), specs/frontend-architecture.md (ordre, diagramme mermaid, condition « created only »).

Tests

onboarding.feature réécrit — 4 parcours :

  1. Walk-through complet : régime (1/3) → allergènes (2/3) → foyer créé (3/3) → sources (4/4) → home.
  2. Préférences vides + foyer « Passer cette étape » → home.
  3. Foyer créé mais aucune source implémentée → l'étape sources se auto-saute → home.
  4. Foyer rejoint → pas d'étape sources → home.

Compteurs vérifiés sur chaque chemin. onboardingStepIndicator est couvert de bout en bout par ces assertions (tous les steps, chemins avec et sans sources).

Vérification locale

pnpm lint ✓ · pnpm build ✓ · Cypress : onboarding.feature 4/4, régression auth/preferences/household-settings 16/16.

🤖 Generated with Claude Code

## Contexte `Closes #129` (puce 2 de #3). Ordre voulu : **compte → préférences (régime + allergènes) → foyer → sources (uniquement si le foyer vient d'être _créé_)**. Avant : compte → régime → foyer → [sources si créé **ou** rejoint] → allergènes. Les allergènes étaient le dernier écran et l'étape sources apparaissait aussi pour un foyer rejoint. ## Changements **Navigation** — `SignupPage` → `/onboarding/regime` (inchangé) ; `regime` → `allergenes` → `foyer`. L'étape `foyer` décide de la suite : `goToNextStep(createdHousehold)` route vers `/onboarding/sources` **seulement** si le foyer a été créé, sinon `/` (rejoindre, passer, ou la branche défensive « déjà un foyer » après un retour navigateur — impossible d'y distinguer créé de rejoint, et l'étape sources s'auto-saute de toute façon si rien à configurer). `OnboardingSourcesPage` devient la dernière étape : submit / court-circuit « aucune source » / catch vont tous vers `/`. **Compteurs** — nouveau module `pages/onboarding/onboarding-steps.ts` : la séquence des étapes + `onboardingStepIndicator(step, { hasSources? })`. Ils étaient codés en dur page par page (un réordonnancement les cassait tous) et l'étape allergènes faisait un `getCurrentHouse()` au montage juste pour deviner « 3 sur 3 » ou « 4 sur 4 » — supprimé, elle précède maintenant le foyer. régime / allergènes / foyer sont en amont du choix « créer vs rejoindre/passer » → « sur 3 » ; seule l'étape `sources`, jamais atteinte hors du chemin à 4 étapes, affiche « 4 sur 4 ». **Libellés** — `OnboardingAllergensPage` : bouton « Continuer » (plus « Terminer »). `OnboardingSourcesPage` : bouton « Terminer ». Zéro nouvelle clé i18n (`onboarding.continue` / `onboarding.finish` existent déjà), titres régime/allergènes conservés séparés (2 sous-écrans, pas de fusion). **Doc** — `App.tsx` (blocs `<Route>` réordonnés + commentaire du groupe `/onboarding/*`), `specs/frontend-architecture.md` (ordre, diagramme mermaid, condition « created only »). ## Tests `onboarding.feature` réécrit — 4 parcours : 1. Walk-through complet : régime (1/3) → allergènes (2/3) → foyer créé (3/3) → sources (4/4) → home. 2. Préférences vides + foyer « Passer cette étape » → home. 3. Foyer créé mais aucune source implémentée → l'étape sources se auto-saute → home. 4. Foyer **rejoint** → pas d'étape sources → home. Compteurs vérifiés sur chaque chemin. `onboardingStepIndicator` est couvert de bout en bout par ces assertions (tous les steps, chemins avec et sans sources). ## Vérification locale `pnpm lint` ✓ · `pnpm build` ✓ · Cypress : `onboarding.feature` 4/4, régression `auth`/`preferences`/`household-settings` 16/16. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
kyuno added 1 commit 2026-09-09 16:35:24 +02:00
feat(onboarding): réordonne le wizard en compte → préférences → foyer → sources (#129)
All checks were successful
CI / lint (push) Successful in 3m54s
CI / build (push) Successful in 4m10s
CI / intent-service-test (push) Successful in 5m15s
CI / e2e (push) Successful in 8m32s
CI / test (push) Successful in 23m8s
CI / build-android (push) Has been skipped
2a3fb0434a
Nouvel ordre : régime → allergènes (les deux « préférences ») → foyer →
sources. L'étape sources devient la dernière et n'est atteinte que si
l'étape foyer vient de **créer** un foyer — rejoindre ou passer termine le
wizard vers `/` (un foyer rejoint a déjà ses sources ; un foyer passé n'a
rien à quoi les rattacher).

- `onboarding-steps.ts` (nouveau) : séquence des étapes + `onboardingStepIndicator()`
  en un seul endroit. Les compteurs « Étape N sur M » étaient codés en dur
  page par page, ce qu'un réordonnancement cassait. régime/allergènes/foyer
  sont en amont du choix « créer vs rejoindre/passer » donc affichent « sur 3 » ;
  seule l'étape sources, jamais atteinte hors du chemin à 4 étapes, affiche « 4 sur 4 ».
- `OnboardingDietPage` → enchaîne sur `/onboarding/allergenes`.
- `OnboardingAllergensPage` → enchaîne sur `/onboarding/foyer` ; bouton « Continuer »
  (plus « Terminer ») ; suppression du `getCurrentHouse()` + `totalSteps` dynamique,
  devenus inutiles maintenant que cette étape précède le foyer.
- `OnboardingHouseholdPage` → `goToNextStep(createdHousehold)` : `/onboarding/sources`
  seulement si créé, sinon `/`. `JoinHouseholdForm`/`SkipButton`/branche défensive
  « déjà un foyer » terminent vers `/`.
- `OnboardingSourcesPage` → dernière étape : submit, court-circuit « aucune source »
  et catch vont tous vers `/` ; bouton « Terminer ».
- `App.tsx` : blocs `<Route>` réordonnés + commentaire de doc du groupe.
- `specs/frontend-architecture.md` : ordre, diagramme mermaid, condition sources.

Tests : `onboarding.feature` réécrit — 4 parcours (walk-through complet avec
foyer créé + sources ; préférences + foyer passés ; foyer créé sans source
implémentée → étape sources auto-sautée ; foyer rejoint → pas de sources),
compteurs vérifiés sur chaque chemin. `pnpm lint` / `pnpm build` verts ;
Cypress local : onboarding 4/4, régression auth/preferences/household-settings 16/16.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
kyuno merged commit 36d26c2739 into main 2026-09-09 16:59:50 +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#139
No description provided.