Aller au contenu

📄 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 :

  1. L’onboarding comporte exactement cinq Ă©tapes.
  2. Les étapes sont parcourues dans un ordre strictement séquentiel.
  3. Le passage Ă  une Ă©tape suivante nĂ©cessite une action explicite et volontaire de l’utilisateur.
  4. Un utilisateur ne peut ĂȘtre considĂ©rĂ© comme ayant terminĂ© l’onboarding que si les cinq Ă©tapes ont Ă©tĂ© validĂ©es.
  5. L’état d’avancement de l’onboarding est persistĂ© en base PostgreSQL.
  6. 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.
  7. 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

  1. L’utilisateur accùde à l’application.
  2. Le systĂšme dĂ©tecte que l’onboarding n’est pas complĂ©tĂ©.
  3. La premiĂšre Ă©tape de l’onboarding est affichĂ©e.

5.2 Progression entre les étapes

  1. L’utilisateur interagit avec l’étape courante.
  2. L’utilisateur dĂ©clenche explicitement la validation de l’étape.
  3. Le systĂšme enregistre la validation de l’étape.
  4. L’étape suivante est affichĂ©e.

5.3 Finalisation de l’onboarding

  1. L’utilisateur valide la cinquiĂšme Ă©tape.
  2. Le systĂšme enregistre la complĂ©tion de l’onboarding.
  3. 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 :

  1. Nature exacte des interactions attendues à chaque étape.
  2. PossibilitĂ© ou non d’abandon volontaire dĂ©finitif de l’onboarding.
  3. Comportement en cas de rĂ©installation de l’application.
  4. Niveau exact de traçabilité attendu (local, serveur, audit).
  5. Contraintes rĂ©glementaires Ă©ventuelles liĂ©es Ă  l’onboarding.

Fin de la spécification canonique.