Files
roadwave/docs/domains/content/features/audio-guides/reprise-progression-complet.feature
jpgiannetti 5e5fcf4714 refactor(docs): réorganiser la documentation selon principes DDD
Réorganise la documentation du projet selon les principes du Domain-Driven Design (DDD) pour améliorer la cohésion, la maintenabilité et l'alignement avec l'architecture modulaire du backend.

**Structure cible:**
```
docs/domains/
├── README.md (Context Map)
├── _shared/ (Core Domain)
├── recommendation/ (Supporting Subdomain)
├── content/ (Supporting Subdomain)
├── moderation/ (Supporting Subdomain)
├── advertising/ (Generic Subdomain)
├── premium/ (Generic Subdomain)
└── monetization/ (Generic Subdomain)
```

**Changements effectués:**

Phase 1: Création de l'arborescence des 7 bounded contexts
Phase 2: Déplacement des règles métier (01-19) vers domains/*/rules/
Phase 3: Déplacement des diagrammes d'entités vers domains/*/entities/
Phase 4: Déplacement des diagrammes flux/états/séquences vers domains/*/
Phase 5: Création des README.md pour chaque domaine
Phase 6: Déplacement des features Gherkin vers domains/*/features/
Phase 7: Création du Context Map (domains/README.md)
Phase 8: Mise à jour de mkdocs.yml pour la nouvelle navigation
Phase 9: Correction automatique des liens internes (script fix-markdown-links.sh)
Phase 10: Nettoyage de l'ancienne structure (regles-metier/, diagrammes/, features/)

**Configuration des tests:**
- Makefile: godog run docs/domains/*/features/
- scripts/generate-bdd-docs.py: features_dir → docs/domains

**Avantages:**
 Cohésion forte: toute la doc d'un domaine au même endroit
 Couplage faible: domaines indépendants, dépendances explicites
 Navigabilité améliorée: README par domaine = entrée claire
 Alignement code/docs: miroir de backend/internal/
 Onboarding facilité: exploration domaine par domaine
 Tests BDD intégrés: features au plus près des règles métier

Voir docs/REFACTOR-DDD.md pour le plan complet.
2026-02-07 17:15:02 +01:00

104 lines
5.0 KiB
Gherkin

# language: fr
@api @audio-guides @progression @mvp
Fonctionnalité: Reprise de progression complète
En tant qu'utilisateur
Je veux reprendre un audio-guide là où je l'ai laissé
Afin de continuer mon expérience sans perdre ma progression
Contexte:
Étant donné que la sauvegarde de progression inclut:
| Donnée | Persistance |
| Séquences écoutées | Permanente |
| Position dans l'audio | 7 jours |
| Points manqués | Permanente |
| Progression globale | Permanente |
Scénario: Sauvegarde automatique de la progression
Étant donné un utilisateur "alice@roadwave.fr" qui écoute une séquence
Quand elle ferme l'application à 3min 20s
Alors la progression est sauvegardée automatiquement
Et la position exacte dans l'audio est conservée
Et un événement "PROGRESS_AUTO_SAVED" est enregistré
Scénario: Reprise après fermeture de l'application
Étant donné un utilisateur "bob@roadwave.fr" qui rouvre l'application
Et il avait un audio-guide en cours (5/10 séquences)
Quand il accède à l'écran d'accueil
Alors une carte "Reprendre votre visite" s'affiche:
| Élément | Contenu |
| Titre audio-guide | Visite du Quartier Latin |
| Progression | 5/10 séquences (50%) |
| Dernière position | Panthéon - 3min 20s |
| Bouton | [Reprendre] |
Et un événement "RESUME_CARD_DISPLAYED" est enregistré
Scénario: Reprise exacte de la position audio
Étant donné un utilisateur "charlie@roadwave.fr" qui reprend un audio-guide
Et il était à 3min 20s dans la séquence "Panthéon"
Quand il clique sur "Reprendre"
Alors l'audio reprend exactement à 3min 20s
Et aucune seconde n'est perdue
Et un événement "AUDIO_POSITION_RESTORED" est enregistré
Scénario: Synchronisation multi-appareils de la progression
Étant donné un utilisateur "david@roadwave.fr" qui écoute sur iPhone
Et il a complété 3 séquences
Quand il passe sur son iPad
Alors la progression est synchronisée automatiquement
Et il peut reprendre là où il s'était arrêté
Et un événement "PROGRESS_SYNCED_CROSS_DEVICE" est enregistré
Scénario: Historique des audio-guides en cours
Étant donné un utilisateur "eve@roadwave.fr" avec 3 audio-guides en cours
Quand elle accède à "Mes audio-guides en cours"
Alors elle voit la liste:
| Audio-guide | Progression | Dernière activité |
| Quartier Latin | 5/10 (50%) | Il y a 2 heures |
| Châteaux de la Loire | 3/8 (37%) | Il y a 3 jours |
| Montmartre | 1/6 (16%) | Il y a 1 semaine |
Et elle peut reprendre n'importe lequel
Et un événement "IN_PROGRESS_LIST_VIEWED" est enregistré
Scénario: Expiration de la position audio après 7 jours
Étant donné un utilisateur "frank@roadwave.fr" avec audio-guide en pause
Et 8 jours se sont écoulés depuis la dernière écoute
Quand il reprend l'audio-guide
Alors la progression globale est conservée (séquences écoutées)
Mais la position exacte dans l'audio est réinitialisée
Et un message s'affiche: "La séquence redémarre depuis le début"
Et un événement "AUDIO_POSITION_EXPIRED" est enregistré
Scénario: Badge "Explorateur assidu" pour reprises régulières
Étant donné un utilisateur "grace@roadwave.fr" qui reprend 10 audio-guides
Quand il complète chacun d'eux après les avoir repris
Alors un badge "Explorateur assidu" est débloqué
Et un événement "BADGE_PERSISTENT_EXPLORER_UNLOCKED" est enregistré
Scénario: Notification push de rappel après 3 jours d'inactivité
Étant donné un utilisateur "henry@roadwave.fr" avec audio-guide en pause
Et 3 jours se sont écoulés sans activité
Quand le système envoie des rappels
Alors une notification push est envoyée:
"Vous avez laissé 'Visite du Quartier Latin' en suspens (5/10). Reprendre ?"
Et un événement "RESUME_REMINDER_SENT" est enregistré
Scénario: Mode hors ligne avec sauvegarde locale
Étant donné un utilisateur "iris@roadwave.fr" en mode hors ligne
Quand elle écoute un audio-guide sans connexion
Alors la progression est sauvegardée localement
Et synchronisée automatiquement lors de la reconnexion
Et un événement "PROGRESS_SYNCED_AFTER_OFFLINE" est enregistré
Scénario: Métriques de reprise de progression
Étant donné que 10 000 audio-guides ont été mis en pause
Alors les indicateurs suivants sont disponibles:
| Métrique | Valeur |
| Taux de reprise dans les 24h | 42% |
| Taux de reprise dans les 7j | 68% |
| Taux d'abandon définitif | 32% |
| Temps moyen avant reprise | 2.5 jours|
| Taux de complétion après reprise| 78% |
Et les métriques sont exportées vers le monitoring