đ SPĂCIFICATION CANONIQUE CONTRACTUELLE¶
đ Navigation User Story
| Document | | | ---------- | -- | | đ **SpĂ©cification** | *(ce document)* | | đ ïž Plan d'implĂ©mentation | *(Ă venir)* | | â CritĂšres d'acceptation | *(Ă venir)* | | đ Retour d'expĂ©rience | *(Ă venir)* | [â Retour Ă mobile-ios](../PD-195-epic.md) · [â Index User Story](index.md)PD-176 â Onboarding interactif en 5 Ă©tapes (Application mobile iOS)
đ EPIC
âĄïž PD-195 â MOBILE-IOS
đ Artefact produit
âĄïž PD-176-spec.md
1. Objectif¶
DĂ©finir de maniĂšre formelle, exhaustive et testable les exigences relatives Ă la mise en place dâun onboarding utilisateur interactif composĂ© de cinq Ă©tapes, destinĂ© Ă lâapplication mobile iOS.
Lâonboarding a pour objectif de guider un utilisateur lors de sa premiĂšre utilisation de lâapplication, en structurant un parcours initial contrĂŽlĂ©, dĂ©terministe et traçable.
Cette spĂ©cification constitue une rĂ©fĂ©rence contractuelle. Toute implĂ©mentation doit sây conformer strictement.
2. PĂ©rimĂštre / Hors pĂ©rimĂštre¶
2.1 PĂ©rimĂštre¶
La présente spécification couvre exclusivement :
- lâexistence dâun parcours dâonboarding composĂ© de cinq Ă©tapes distinctes et ordonnĂ©es ;
- le caractĂšre interactif de chaque Ă©tape, nĂ©cessitant une action explicite de lâutilisateur ;
- les rÚgles de navigation et de progression entre les étapes ;
- la persistance de lâĂ©tat dâavancement de lâonboarding ;
- les conditions de complĂ©tion ou de non-complĂ©tion de lâonboarding ;
- la traçabilité des transitions entre étapes.
2.2 Hors pĂ©rimĂštre¶
Les éléments suivants sont explicitement hors périmÚtre :
- le contenu précis des étapes (textes, visuels, animations) ;
- le design graphique, lâergonomie dĂ©taillĂ©e et les animations ;
- les choix techniques dâimplĂ©mentation iOS ;
- la personnalisation du parcours selon le profil utilisateur ;
- la traduction, la localisation et la gestion multilingue ;
- toute logique marketing, analytique avancée ou A/B testing.
Toute rÚgle non testable relevant de ces éléments est considérée hors périmÚtre.
3. DĂ©finitions¶
| Terme | Définition |
|---|---|
| Onboarding | Parcours initial destinĂ© Ă accompagner lâutilisateur lors de la premiĂšre utilisation de lâapplication. |
| Ătape | UnitĂ© fonctionnelle de lâonboarding, identifiĂ©e par un ordre de 1 Ă 5. |
| Interactif | NĂ©cessitant une action explicite de lâutilisateur pour progresser. |
| Utilisateur | Personne utilisant lâapplication mobile iOS. |
| ComplĂ©tion | Ătat indiquant que les cinq Ă©tapes ont Ă©tĂ© validĂ©es dans lâordre dĂ©fini. |
4. Invariants (non nĂ©gociables)¶
Les rÚgles suivantes sont non négociables :
- Lâonboarding comporte exactement cinq Ă©tapes.
- Les étapes sont parcourues dans un ordre strictement séquentiel.
- Le passage Ă une Ă©tape suivante nĂ©cessite une action explicite et volontaire de lâutilisateur.
- Un utilisateur ne peut ĂȘtre considĂ©rĂ© comme ayant terminĂ© lâonboarding que si les cinq Ă©tapes ont Ă©tĂ© validĂ©es.
- LâĂ©tat dâavancement de lâonboarding est persistĂ© en base PostgreSQL.
- Un utilisateur ayant complĂ©tĂ© lâonboarding nâest plus soumis Ă ce parcours par dĂ©faut, y compris aprĂšs rĂ©installation ou changement dâappareil.
- Toute validation ou transition dâĂ©tape est traçable.
Chaque invariant doit ĂȘtre vĂ©rifiable par test ou audit.
5. Flux nominaux¶
5.1 DĂ©marrage de lâonboarding¶
- Lâutilisateur accĂšde Ă lâapplication.
- Le systĂšme dĂ©tecte que lâonboarding nâest pas complĂ©tĂ©.
- La premiĂšre Ă©tape de lâonboarding est affichĂ©e.
5.2 Progression entre les Ă©tapes¶
- Lâutilisateur interagit avec lâĂ©tape courante.
- Lâutilisateur dĂ©clenche explicitement la validation de lâĂ©tape.
- Le systĂšme enregistre la validation de lâĂ©tape.
- LâĂ©tape suivante est affichĂ©e.
5.3 Finalisation de lâonboarding¶
- Lâutilisateur valide la cinquiĂšme Ă©tape.
- Le systĂšme enregistre la complĂ©tion de lâonboarding.
- Lâutilisateur accĂšde au fonctionnement normal de lâapplication.
5bis. Diagrammes Mermaid¶
5bis.1 Diagramme dâĂ©tats â Progression de lâonboarding¶
Réf. invariants : INV-1 (exactement 5 étapes), INV-2 (ordre séquentiel), INV-4 (complétion = 5 étapes validées), INV-5 (persistance PostgreSQL), INV-6 (complétion définitive)
stateDiagram-v2
[*] --> NOT_STARTED : PremiĂšre ouverture app
NOT_STARTED --> STEP_1 : Onboarding non complété détecté
STEP_1 --> STEP_2 : Action explicite utilisateur (INV-3)
STEP_2 --> STEP_3 : Action explicite utilisateur (INV-3)
STEP_3 --> STEP_4 : Action explicite utilisateur (INV-3)
STEP_4 --> STEP_5 : Action explicite utilisateur (INV-3)
STEP_5 --> COMPLETED : Validation étape 5 (INV-4)
COMPLETED --> [*] : AccĂšs app normal (INV-6)
STEP_1 --> STEP_1 : Interruption + reprise (INV-5)
STEP_2 --> STEP_2 : Interruption + reprise (INV-5)
STEP_3 --> STEP_3 : Interruption + reprise (INV-5)
STEP_4 --> STEP_4 : Interruption + reprise (INV-5)
STEP_5 --> STEP_5 : Interruption + reprise (INV-5)
note right of COMPLETED
Ătat persistĂ© en PostgreSQL.
Irréversible : aucune transition
retour vers STEP_N (INV-6).
end note 5bis.2 Diagramme de sĂ©quence â Validation dâune Ă©tape et persistance¶
Réf. invariants : INV-3 (action explicite), INV-5 (persistance PostgreSQL), INV-7 (traçabilité)
sequenceDiagram
actor U as Utilisateur
participant App as App iOS
participant API as Backend API
participant DB as PostgreSQL
U->>App: Interaction étape N
U->>App: Valide Ă©tape N (action explicite â INV-3)
App->>API: POST /onboarding/steps/{N}/validate
API->>DB: UPDATE onboarding SET current_step = N+1, updated_at = now()
Note over DB: Persistance état (INV-5)
API->>DB: INSERT audit_log (user_id, step_N, validated_at)
Note over DB: Traçabilité (INV-7)
DB-->>API: OK
API-->>App: 200 {current_step: N+1, completed: false}
App->>U: Affiche étape N+1
Note over U,DB: Si N = 5 (derniÚre étape)
U->>App: Valide Ă©tape 5 (action explicite â INV-3)
App->>API: POST /onboarding/steps/5/validate
API->>DB: UPDATE onboarding SET current_step = 5, completed = true
Note over DB: Complétion irréversible (INV-4, INV-6)
API->>DB: INSERT audit_log (user_id, step_5, completed_at)
DB-->>API: OK
API-->>App: 200 {current_step: 5, completed: true}
App->>U: AccĂšs fonctionnement normal 5bis.3 Diagramme de sĂ©quence â Reprise aprĂšs interruption¶
Réf. invariants : INV-2 (ordre séquentiel), INV-5 (persistance PostgreSQL)
sequenceDiagram
actor U as Utilisateur
participant App as App iOS
participant API as Backend API
participant DB as PostgreSQL
U->>App: Ouvre lâapplication
App->>API: GET /onboarding/status
API->>DB: SELECT current_step, completed FROM onboarding WHERE user_id = ?
DB-->>API: {current_step: 3, completed: false}
API-->>App: 200 {current_step: 3, completed: false}
alt Onboarding complété
App->>U: AccĂšs direct app (INV-6)
else Onboarding en cours
App->>U: Affiche Ă©tape 3 (INV-2 â reprise sĂ©quentielle)
end 6. Cas dâerreur¶
Les situations suivantes doivent ĂȘtre explicitement gĂ©rĂ©es :
- interruption du parcours avant validation de la cinquiÚme étape ;
- tentative dâaccĂšs Ă une Ă©tape hors sĂ©quence ;
- Ă©tat dâavancement manquant, corrompu ou incohĂ©rent ;
- Ă©chec de persistance de lâĂ©tat dâonboarding.
Chaque cas dâerreur doit produire un comportement dĂ©terministe, contrĂŽlĂ© et traçable.
7. CritĂšres dâacceptation (testables)¶
- Lâonboarding comporte exactement cinq Ă©tapes.
- Il est impossible de terminer lâonboarding sans valider les cinq Ă©tapes.
- Lâordre des Ă©tapes est strictement respectĂ©.
- LâĂ©tat dâavancement est conservĂ© entre deux sessions utilisateur.
- Un utilisateur ayant terminĂ© lâonboarding nây est plus confrontĂ©.
- Chaque validation dâĂ©tape est traçable.
8. ScĂ©narios de test (Given / When / Then)¶
ScĂ©nario 1 â Parcours complet nominal¶
Given un utilisateur nâayant jamais complĂ©tĂ© lâonboarding
When il valide successivement les cinq étapes
Then lâonboarding est marquĂ© comme complĂ©tĂ©
ScĂ©nario 2 â Interruption du parcours¶
Given un utilisateur ayant validé deux étapes
When lâapplication est quittĂ©e puis relancĂ©e
Then lâonboarding reprend Ă la troisiĂšme Ă©tape
ScĂ©nario 3 â Tentative de saut dâĂ©tape¶
Given un utilisateur Ă lâĂ©tape 2
When il tente dâaccĂ©der directement Ă lâĂ©tape 4
Then lâaccĂšs est refusĂ© et lâĂ©tape courante est maintenue
9. HypothĂšses explicites¶
- Lâapplication est capable de persister un Ă©tat utilisateur.
- Lâutilisateur dispose dâune interface permettant lâinteraction requise.
- Le systÚme est capable de journaliser les événements de progression.
10. Points Ă clarifier¶
Les Ă©lĂ©ments suivants doivent ĂȘtre explicitement dĂ©finis avant implĂ©mentation :
- Nature exacte des interactions attendues à chaque étape.
- PossibilitĂ© ou non dâabandon volontaire dĂ©finitif de lâonboarding.
- Comportement en cas de rĂ©installation de lâapplication.
- Niveau exact de traçabilité attendu (local, serveur, audit).
- Contraintes rĂ©glementaires Ă©ventuelles liĂ©es Ă lâonboarding.
Fin de la spécification canonique.