Files
roadwave/docs/domains/content/features/audio-guides/sauvegarde-sync-progression.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

76 lines
3.4 KiB
Gherkin

# language: fr
@api @audio-guides @sync @mvp
Fonctionnalité: Sauvegarde et synchronisation de progression
En tant qu'utilisateur
Je veux que ma progression soit sauvegardée et synchronisée
Afin d'accéder à mon historique sur tous mes appareils
Scénario: Sauvegarde en temps réel dans le cloud
Étant donné un utilisateur "alice@roadwave.fr" connecté
Quand elle complète une séquence
Alors la progression est sauvegardée dans le cloud immédiatement
Et un indicateur "Synchronisé" s'affiche
Et un événement "PROGRESS_CLOUD_SAVED" est enregistré
Scénario: Synchronisation automatique au changement d'appareil
Étant donné un utilisateur "bob@roadwave.fr" sur iPhone
Quand il se connecte sur iPad
Alors la progression est téléchargée automatiquement
Et synchronisée en arrière-plan (< 2s)
Et un événement "PROGRESS_SYNCED_DEVICE_SWITCH" est enregistré
Scénario: Résolution de conflits de synchronisation
Étant donné un utilisateur "charlie@roadwave.fr" avec 2 appareils
Et il écoute hors ligne sur les deux simultanément
Quand les deux se reconnectent avec progressions différentes
Alors le système fusionne intelligemment les données
Et conserve la progression la plus avancée
Et un événement "SYNC_CONFLICT_RESOLVED" est enregistré
Scénario: Indicateur de statut de synchronisation
Étant donné un utilisateur "david@roadwave.fr"
Alors il voit l'icône de statut sync:
| État | Icône | Couleur |
| Synchronisé | ✓ | Vert |
| En cours de sync | ↻ | Orange |
| Non synchronisé | ⚠ | Rouge |
Et un événement "SYNC_STATUS_DISPLAYED" est enregistré
Scénario: Sauvegarde locale en mode hors ligne
Étant donné un utilisateur "eve@roadwave.fr" sans connexion
Quand elle écoute un audio-guide hors ligne
Alors toutes les données sont sauvegardées localement
Et marquées "En attente de synchronisation"
Et synchronisées automatiquement lors de la reconnexion
Et un événement "OFFLINE_PROGRESS_QUEUED" est enregistré
Scénario: Export de l'historique de progression
Étant donné un utilisateur "frank@roadwave.fr"
Quand il demande un export de ses données (RGPD)
Alors il reçoit un fichier JSON avec:
| Donnée | Format |
| Audio-guides écoutés | Liste |
| Séquences par guide | Détail |
| Timestamps | ISO 8601 |
| Positions GPS visitées | Lat/Lon |
Et un événement "PROGRESS_EXPORTED" est enregistré
Scénario: Suppression de progression sur demande
Étant donné un utilisateur "grace@roadwave.fr"
Quand elle supprime un audio-guide de son historique
Alors toutes les données associées sont supprimées
Et la synchronisation propage la suppression
Et un événement "PROGRESS_DELETED" est enregistré
Scénario: Métriques de fiabilité de la synchronisation
Étant donné que 100 000 synchronisations ont eu lieu
Alors les indicateurs suivants sont disponibles:
| Métrique | Valeur cible |
| Taux de succès de sync | > 99.5% |
| Temps moyen de synchronisation| < 2s |
| Taux de conflits | < 0.5% |
| Taux de résolution automatique| > 95% |
Et les métriques sont exportées vers le monitoring