Files
roadwave/docs/domains/premium/features/mode-offline/telechargement.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

410 lines
18 KiB
Gherkin
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# language: fr
Fonctionnalité: Téléchargement de contenus offline
En tant qu'utilisateur
Je veux télécharger des contenus pour les écouter sans connexion
Afin de profiter de RoadWave même dans les zones sans réseau
Contexte:
Étant donné que je suis connecté à l'application RoadWave
# ===== SÉLECTION ZONE GÉOGRAPHIQUE =====
Scénario: Option "Autour de moi" - Rayon 50 km
Étant donné que je suis à Paris (position GPS détectée)
Quand je sélectionne "Télécharger > Autour de moi"
Alors l'app recherche tous les contenus géolocalisés dans un rayon de 50 km
Et je vois une liste de contenus de Paris et banlieue proche
Et l'estimation affiche "~150 contenus disponibles"
Scénario: Option "Ma ville" - Limite administrative détectée
Étant donné que je suis à Lyon (position GPS détectée)
Quand je sélectionne "Télécharger > Ma ville"
Alors l'app détecte automatiquement "Lyon" comme ville
Et recherche tous les contenus géolocalisés "Lyon"
Et je vois uniquement les contenus de la ville de Lyon (pas banlieue)
Scénario: Option "Mon département" - Sélection dans liste
Étant donné que je veux télécharger des contenus pour un département
Quand je sélectionne "Télécharger > Mon département"
Alors je vois une liste de tous les départements français:
| département |
| 01 - Ain |
| 02 - Aisne |
| 75 - Paris |
| 69 - Rhône |
| ... |
Et je peux choisir un département
Scénario: Sélection département et téléchargement contenus
Étant donné que je sélectionne "75 - Paris" dans la liste des départements
Quand la sélection est confirmée
Alors l'app recherche tous les contenus géolocalisés "Paris"
Et je vois "~234 contenus disponibles pour Paris"
Scénario: Option "Ma région" - Sélection dans liste
Étant donné que je veux télécharger des contenus pour une région
Quand je sélectionne "Télécharger > Ma région"
Alors je vois une liste de toutes les régions françaises:
| région |
| Auvergne-Rhône-Alpes |
| Bretagne |
| Île-de-France |
| Nouvelle-Aquitaine |
| Occitanie |
| ... |
Et je peux choisir une région
Scénario: Sélection région et téléchargement contenus
Étant donné que je sélectionne "Bretagne" dans la liste des régions
Quand la sélection est confirmée
Alors l'app recherche tous les contenus géolocalisés des départements bretons:
| département |
| Côtes-d'Armor (22) |
| Finistère (29) |
| Ille-et-Vilaine (35) |
| Morbihan (56) |
Et je vois "~487 contenus disponibles pour Bretagne"
Scénario: Recherche manuelle ville
Étant donné que je veux télécharger des contenus pour une ville spécifique
Quand je tape "Marseille" dans la barre de recherche
Alors l'app propose des suggestions:
| suggestion |
| Marseille (13) |
| Marseille-en-Beauvaisis |
Et je peux sélectionner "Marseille (13)"
Scénario: Recherche manuelle avec autocomplétion
Étant donné que je tape "Ly" dans la barre de recherche
Quand l'autocomplétion s'active
Alors je vois des suggestions:
| suggestion |
| Lyon (69) |
| Lys-lez-Lannoy |
Et je peux affiner ma recherche
# ===== LIMITES TÉLÉCHARGEMENT =====
Scénario: Utilisateur gratuit - Limite 50 contenus max
Étant donné que je suis un utilisateur gratuit
Et que j'ai déjà téléchargé 45 contenus
Quand j'accède à la page Téléchargements
Alors je vois "45 / 50 contenus téléchargés"
Et je peux télécharger 5 contenus supplémentaires maximum
Scénario: Utilisateur gratuit - Tentative dépasser limite 50
Étant donné que je suis gratuit et j'ai déjà 50 contenus téléchargés
Quand j'essaie de télécharger un 51ème contenu
Alors le téléchargement est refusé
Et je vois le message:
"""
📥 Limite atteinte (50 contenus)
Vous avez atteint la limite de téléchargements gratuits.
Options:
Supprimez des contenus existants pour en télécharger de nouveaux
Passez Premium pour des téléchargements illimités
[Gérer mes téléchargements] [Découvrir Premium]
"""
Scénario: Utilisateur Premium - Téléchargements illimités
Étant donné que je suis un utilisateur Premium
Et que j'ai déjà téléchargé 245 contenus
Quand j'accède à la page Téléchargements
Alors je vois "245 contenus (3.2 GB)"
Et aucune limite n'est affichée
Et je peux télécharger autant de contenus que je veux
Scénario: Limite Premium = Espace disque disponible
Étant donné que je suis Premium
Et que mon device a 500 MB d'espace disque disponible
Quand j'essaie de télécharger 100 contenus (2 GB)
Alors le téléchargement échoue après ~50 contenus (500 MB)
Et je vois "Espace disque insuffisant. Libérez de l'espace pour continuer."
Scénario: Calcul temps écoute disponible gratuit
Étant donné que je suis gratuit avec 50 contenus téléchargés
Et que la durée moyenne d'un contenu est 5 minutes
Quand je calcule le temps d'écoute disponible
Alors 50 contenus × 5 min = 250 minutes = 4h10 d'écoute
Et cela suffit pour un trajet quotidien ou road trip court
Scénario: Calcul temps écoute disponible Premium illimité
Étant donné que je suis Premium avec 300 contenus téléchargés
Et que la durée moyenne est 5 minutes
Quand je calcule le temps d'écoute disponible
Alors 300 contenus × 5 min = 1500 minutes = 25h d'écoute
Et cela suffit pour un road trip de plusieurs jours
# ===== CONNEXION WIFI / MOBILE =====
Scénario: Téléchargement par défaut en WiFi uniquement
Étant donné que je suis connecté en WiFi
Quand je clique sur "Télécharger 20 contenus"
Alors le téléchargement démarre immédiatement
Et aucune popup de confirmation n'apparaît
Scénario: Tentative téléchargement en données mobiles - Popup confirmation
Étant donné que je suis connecté en 4G (pas de WiFi)
Quand je clique sur "Télécharger 20 contenus"
Alors une popup apparaît:
"""
📡 Vous n'êtes pas connecté en WiFi
Télécharger via données mobiles consommera environ 72 MB.
[Attendre WiFi] [Continuer quand même]
"""
Scénario: Calcul estimation consommation data mobile
Étant donné que je veux télécharger 20 contenus
Et que la durée moyenne est 5 minutes
Et que la qualité Standard est 48 kbps Opus
Quand l'estimation est calculée
Alors consommation = 20 contenus × 5 min × 48 kbps / 8 = 72 MB
Et ce montant est affiché dans la popup
Scénario: Confirmation téléchargement en données mobiles
Étant donné que je vois la popup de confirmation données mobiles
Quand je clique sur "Continuer quand même"
Alors le téléchargement démarre immédiatement via 4G
Et la consommation data est comptabilisée sur mon forfait mobile
Scénario: Refus téléchargement données mobiles - Attendre WiFi
Étant donné que je vois la popup de confirmation données mobiles
Quand je clique sur "Attendre WiFi"
Alors les téléchargements sont mis en file d'attente
Et ils démarreront automatiquement quand le WiFi sera détecté
Scénario: Détection automatique WiFi et reprise téléchargements
Étant donné que j'ai mis 20 contenus en file d'attente (attente WiFi)
Quand l'app détecte une connexion WiFi
Alors les téléchargements démarrent automatiquement
Et je reçois une notification "Téléchargements en cours via WiFi"
# ===== QUALITÉ AUDIO =====
Scénario: Qualité Standard (48 kbps) par défaut
Étant donné que je configure mes téléchargements
Quand j'accède aux paramètres de qualité
Alors la qualité "Standard (48 kbps - ~20 MB/h)" est sélectionnée par défaut
Et elle est disponible pour tous (gratuit + Premium)
Scénario: Qualité Basse (24 kbps) disponible pour tous
Étant donné que j'ai peu d'espace disque disponible
Quand je sélectionne qualité "Basse (24 kbps - ~10 MB/h)"
Alors mes prochains téléchargements seront en 24 kbps
Et l'espace utilisé sera divisé par 2 par rapport à Standard
Et cette option est disponible pour gratuit + Premium
Scénario: Qualité Haute (64 kbps) réservée Premium
Étant donné que je suis un utilisateur gratuit
Quand je consulte les options de qualité
Alors l'option "Haute (64 kbps - ~30 MB/h)" est grisée
Et je vois "👑 Premium uniquement"
Et je ne peux pas la sélectionner
Scénario: Utilisateur Premium peut choisir qualité Haute
Étant donné que je suis un utilisateur Premium
Quand je consulte les options de qualité
Alors l'option "Haute (64 kbps - ~30 MB/h)" est disponible
Et je peux la sélectionner pour mes téléchargements
Et la qualité audio sera excellente (meilleure restitution voix et ambiances)
Scénario: Comparaison taille fichiers selon qualité
Étant donné que je veux télécharger 50 contenus de 5 min chacun
Quand je compare les qualités
Alors les tailles totales sont:
| qualité | bitrate | taille totale |
| Basse | 24 kbps | ~250 MB |
| Standard | 48 kbps | ~500 MB |
| Haute | 64 kbps | ~650 MB |
Scénario: Justification Standard = Bon compromis
Étant donné que le contenu RoadWave est principalement de la voix
Quand la qualité Standard (48 kbps Opus) est utilisée
Alors la qualité est très correcte pour la voix
Et équivalente à la radio FM
Et le compromis qualité/taille est optimal
Scénario: Justification Haute réservée Premium = Incitation upgrade
Étant donné qu'un utilisateur gratuit veut la meilleure qualité
Quand il voit que Haute est réservée Premium
Alors cela l'incite à passer Premium pour 4.99/mois
Et c'est un avantage tangible supplémentaire de Premium
Scénario: Changement qualité après téléchargements existants
Étant donné que j'ai déjà téléchargé 30 contenus en qualité Standard
Quand je change la qualité vers Haute (si Premium)
Alors les 30 contenus existants restent en Standard
Et seuls les nouveaux téléchargements seront en Haute
Et je peux manuellement re-télécharger les 30 contenus pour les avoir en Haute
# ===== PROCESSUS DE TÉLÉCHARGEMENT =====
Scénario: Téléchargement individuel d'un contenu
Étant donné que je consulte la page d'un contenu
Quand je clique sur l'icône de téléchargement 📥
Alors le téléchargement démarre
Et une barre de progression apparaît
Et l'icône devient quand terminé
Scénario: Téléchargement batch de contenus sélectionnés
Étant donné que je consulte une liste de contenus pour "Paris"
Quand je sélectionne 15 contenus manuellement
Et que je clique sur "Télécharger la sélection"
Alors les 15 contenus sont téléchargés en parallèle (max 3 simultanés)
Et une notification affiche "15 contenus téléchargés"
Scénario: Téléchargement automatique recommandations zone
Étant donné que je sélectionne "Autour de moi" (Paris)
Quand je clique sur "Télécharger les 50 meilleurs contenus"
Alors l'algorithme sélectionne automatiquement les 50 contenus les mieux notés/récents
Et les télécharge tous
Et je n'ai pas besoin de choisir manuellement
Scénario: Barre de progression téléchargement global
Étant donné que je télécharge 20 contenus
Quand les téléchargements sont en cours
Alors je vois une barre de progression globale:
"""
📥 Téléchargement en cours...
7 / 20 contenus (35%)
~45 MB restants
Temps estimé: 2 min
"""
Scénario: Téléchargements en tâche de fond
Étant donné que je lance le téléchargement de 30 contenus
Quand je ferme l'app ou passe à une autre activité
Alors les téléchargements continuent en arrière-plan
Et je reçois une notification quand tous sont terminés
Scénario: Pause et reprise téléchargements
Étant donné que je télécharge 20 contenus
Quand je clique sur "Pause"
Alors les téléchargements en cours se terminent
Et les téléchargements en attente sont mis en pause
Et je peux cliquer sur "Reprendre" plus tard
Scénario: Annulation téléchargements
Étant donné que je télécharge 20 contenus
Quand je clique sur "Annuler"
Alors tous les téléchargements sont arrêtés
Et les fichiers partiels sont supprimés
Et l'espace disque est libéré
Scénario: Gestion erreurs téléchargement
Étant donné que je télécharge un contenu
Mais que la connexion Internet coupe au milieu
Quand la connexion revient
Alors le téléchargement reprend automatiquement où il s'était arrêté
Et aucune perte de progression n'a lieu
Scénario: Retry automatique après échec
Étant donné qu'un téléchargement échoue 3 fois consécutives
Quand l'échec est détecté
Alors le contenu est marqué "Échec"
Et je vois une notification "3 contenus n'ont pas pu être téléchargés"
Et je peux retry manuellement en cliquant sur "Réessayer"
# ===== GESTION CONTENUS TÉLÉCHARGÉS =====
Scénario: Liste contenus téléchargés
Étant donné que j'ai téléchargé 45 contenus
Quand j'accède à "Téléchargements"
Alors je vois la liste complète de mes 45 contenus
Et pour chaque contenu: titre, créateur, durée, taille, date téléchargement
Scénario: Tri contenus téléchargés
Étant donné que je consulte ma liste de téléchargements
Quand je clique sur "Trier par"
Alors je peux trier par:
| critère | ordre |
| Date téléchargement | Plus récent / Plus ancien|
| Titre | A-Z / Z-A |
| Créateur | A-Z / Z-A |
| Durée | Plus long / Plus court |
| Taille | Plus gros / Plus petit |
Scénario: Recherche dans contenus téléchargés
Étant donné que j'ai 200 contenus téléchargés
Quand je tape "Tesla" dans la barre de recherche
Alors seuls les contenus contenant "Tesla" s'affichent
Et je peux rapidement trouver un contenu spécifique
Scénario: Suppression individuelle contenu téléchargé
Étant donné que je veux supprimer un contenu téléchargé
Quand je swipe left (iOS) ou long press (Android) sur le contenu
Et que je clique sur "Supprimer"
Alors le fichier est supprimé du device
Et l'espace disque est libéré
Et le compteur est décrémenté (ex: 45/50 44/50)
Scénario: Suppression batch contenus téléchargés
Étant donné que je veux supprimer plusieurs contenus
Quand je sélectionne 10 contenus
Et que je clique sur "Supprimer la sélection"
Alors les 10 fichiers sont supprimés
Et ~100 MB d'espace disque sont libérés
Et une notification confirme "10 contenus supprimés"
Scénario: Suppression tous les contenus téléchargés
Étant donné que j'ai 45 contenus téléchargés
Quand je clique sur "Supprimer tout"
Et que je confirme l'action
Alors tous les 45 contenus sont supprimés
Et l'espace disque total est libéré (~450 MB)
Et le compteur repasse à 0/50
Scénario: Espace disque utilisé visible
Étant donné que j'ai téléchargé 45 contenus
Quand j'accède à la page Téléchargements
Alors je vois l'espace disque utilisé:
"""
📥 Téléchargements
45 / 50 contenus
Espace utilisé: 478 MB
"""
Scénario: Statistiques téléchargements
Étant donné que j'accède à mes statistiques
Quand je consulte la section Téléchargements
Alors je vois:
| métrique | valeur |
| Contenus actuellement téléchargés | 45 |
| Espace disque utilisé | 478 MB |
| Contenus téléchargés depuis début | 287 |
| Total data téléchargée | 3.2 GB |
| Téléchargements via WiFi | 92% |
| Téléchargements via mobile | 8% |
# ===== LECTURE OFFLINE =====
Scénario: Lecture contenu téléchargé sans connexion
Étant donné que je n'ai aucune connexion Internet (mode avion)
Et que j'ai des contenus téléchargés
Quand je lance un contenu téléchargé
Alors la lecture démarre normalement depuis le fichier local
Et aucune erreur de connexion n'apparaît
Scénario: Badge "Téléchargé" sur contenus offline
Étant donné que j'ai téléchargé certains contenus
Quand je consulte une liste de contenus
Alors les contenus téléchargés ont un badge "Offline"
Et je sais immédiatement lesquels sont disponibles sans connexion
Scénario: Filtre "Téléchargés uniquement"
Étant donné que je veux voir uniquement mes contenus offline
Quand j'active le filtre "Téléchargés uniquement"
Alors seuls les contenus téléchargés s'affichent
Et je peux facilement naviguer dans mon catalogue offline
Scénario: Playlist offline automatique
Étant donné que j'ai téléchargé 45 contenus
Quand j'accède à "Téléchargements"
Alors je peux lancer une playlist aléatoire de mes 45 contenus
Et profiter d'une écoute continue offline