UI-2 – Parcours d'onboarding
Livré le 04/10/2026, à la demande de la direction du projet. Écart ouvert : EC-133. Aucune règle de gestion nouvelle : le parcours s’appuie sur l’activation des modules et de l’arbre d’activités déjà livrée (activités et fonctions, arbre d’activités).
Principe
Section intitulée « Principe »À la première connexion d’une personne qui détient modules.manage, une popup pose six écrans : bienvenue, culture, comment les produits arrivent, ce qui en est fait, besoins complémentaires, récapitulatif. Le récapitulatif est modifiable ; rien n’est écrit avant la confirmation. On y parle de filière, d’activités et de fonctions, jamais de « pack » ni de « module ».
| Écran | Effet |
|---|---|
| Culture | Choisit la famille, donc le pack à charger. Une famille sans pack est affichée « Bientôt » : la demande est gardée (« Me prévenir »), rien n’est chargé. |
| Comment les produits arrivent / ce qu’on en fait | Activités de premier niveau du catalogue (app.activite). |
| Besoins complémentaires | Fonctions qui ne se déduisent pas d’une activité : contrôle interne, planification, intrants et avances, paiements, EUDR. |
| Récapitulatif | Nœuds de l’arbre du pack et fonctions, avec cases. Les nœuds obligatoires sont verrouillés sous un parent retenu, les dépendances se cochent seules. |
Où est la logique
Section intitulée « Où est la logique »- Domaine (
packages/domain/src/onboarding) :deduireProposition,modulesDeduits,completerModules,verifierProposition; familles de culture et questions déclaratives. Tests ONB-01 à ONB-05. - API (
apps/api/src/back-office/onboarding.service.ts) : charge la dernière version publiée du pack (chargerPack, rejouable), puis applique nœuds, activités sans nœud et fonctions parActivationService.appliquerOuverture(mêmes garde-fous que les routes d’écriture, fonctions dans l’ordre des dépendances). Rien n’est jamais désactivé : le parcours se rejoue sans risque. Tests ONB-10 à ONB-14. - Interface (
apps/backoffice/src/onboarding) :etat.ts(étapes, bascules du récapitulatif, tests ONB-20 à ONB-23) etOnboarding.tsx(<dialog>modale native, Échap = « Plus tard »).
Routes (contrat 1.34.0)
Section intitulée « Routes (contrat 1.34.0) »| Route | Rôle |
|---|---|
GET /v1/onboarding |
Familles, packs disponibles avec leur arbre, activités, fonctions, situation actuelle. |
POST /v1/onboarding/reporter |
« Plus tard », avec un brouillon des réponses. |
POST /v1/onboarding/terminer |
Applique le récapitulatif. |
POST /v1/onboarding/rouvrir |
Rouvre le parcours (rejeu). |
GET /v1/moi porte onboarding: { requis, etat }. Le parcours est requis quand la dernière ligne n’est pas termine, ou quand il n’y a aucune ligne et aucun arbre d’activités chargé : les organisations déjà ouvertes ne le voient jamais.
Table app.organisation_onboarding (ajout seul) : une ligne par étape (reporte, termine, rouvert), avec les réponses, la version de pack chargée, l’auteur et la date. Le dictionnaire de données la décrit.
Rejouer le parcours (tests)
Section intitulée « Rejouer le parcours (tests) »Un bouton « Rejouer l’onboarding » apparaît dans l’écran Activités quand le back-office est lancé avec VITE_ONBOARDING_REJOUABLE=1 (activé dans .claude/launch.json, absent en production). Il appelle rouvrir ; le récapitulatif se préremplit de l’état réel et ce qui est déjà actif reste verrouillé.