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.
211 lines
10 KiB
Gherkin
211 lines
10 KiB
Gherkin
# language: fr
|
|
|
|
@error-handling @gps-disabled
|
|
Fonctionnalité: Mode dégradé sans géolocalisation
|
|
|
|
Contexte:
|
|
Étant donné que je suis un utilisateur connecté
|
|
Et que j'ai refusé ou désactivé l'accès à la géolocalisation
|
|
|
|
# 12.4 - Mode dégradé automatique
|
|
|
|
Scénario: Types de contenu disponibles sans géolocalisation
|
|
Étant donné que la géolocalisation est désactivée
|
|
Quand j'ouvre l'application
|
|
Alors les types de contenu suivants sont disponibles:
|
|
| type_contenu | disponible |
|
|
| Contenu national | oui |
|
|
| Contenu téléchargé (offline) | oui |
|
|
| Contenus "Neutre" géographiquement | oui |
|
|
| Contenu géolocalisé Ancré | non |
|
|
| Contenu géolocalisé Contextuel | non |
|
|
| Audio-guides | non |
|
|
| Notifications push géo-déclenchées | non |
|
|
|
|
# Popup au premier lancement
|
|
|
|
Scénario: Popup d'information au premier lancement sans GPS
|
|
Étant donné que c'est mon premier lancement de l'application
|
|
Et que j'ai refusé l'accès à la géolocalisation
|
|
Quand l'application détecte que le GPS est désactivé
|
|
Alors une popup s'affiche avec le message:
|
|
"""
|
|
RoadWave fonctionne mieux avec la géolocalisation activée. Sans elle, seul le contenu national sera disponible.
|
|
"""
|
|
Et la popup contient les boutons suivants:
|
|
| bouton | action |
|
|
| Activer | Redirection vers paramètres OS |
|
|
| Continuer sans | Ferme popup et lance en mode dégradé |
|
|
Et une checkbox "Ne plus me demander" est disponible
|
|
|
|
Scénario: Popup non affichée si case "Ne plus me demander" cochée
|
|
Étant donné que j'ai déjà vu la popup de géolocalisation
|
|
Et que j'ai coché "Ne plus me demander"
|
|
Quand je lance l'application avec le GPS désactivé
|
|
Alors la popup de géolocalisation ne s'affiche pas
|
|
Et l'application démarre directement en mode dégradé
|
|
Et le banner permanent de rappel s'affiche
|
|
|
|
Scénario: Redirection vers paramètres OS lors du clic sur "Activer"
|
|
Étant donné que la popup de géolocalisation est affichée
|
|
Quand je clique sur "Activer"
|
|
Alors je suis redirigé vers les paramètres de géolocalisation de mon OS
|
|
Et sur iOS, j'arrive dans "Réglages > RoadWave > Localisation"
|
|
Et sur Android, j'arrive dans "Paramètres > Applications > RoadWave > Autorisations > Position"
|
|
|
|
# Banner permanent en mode dégradé
|
|
|
|
Scénario: Banner de rappel permanent sans GPS
|
|
Étant donné que j'ai cliqué sur "Continuer sans" géolocalisation
|
|
Quand l'application s'affiche
|
|
Alors un bandeau s'affiche en haut de l'écran
|
|
Et le bandeau contient le texte: "Mode limité : géolocalisation désactivée. [Activer]"
|
|
Et le bandeau a un fond de couleur avertissement (jaune/orange)
|
|
Et le bandeau n'est pas intrusif mais reste visible
|
|
Et le bandeau reste affiché sur toutes les pages de l'application
|
|
|
|
Scénario: Clic sur le bouton "Activer" du banner
|
|
Étant donné que le banner "Mode limité" est affiché
|
|
Quand je clique sur le lien "[Activer]" dans le banner
|
|
Alors je suis redirigé vers les paramètres de géolocalisation de mon OS
|
|
|
|
Scénario: Disparition du banner après activation GPS
|
|
Étant donné que le banner "Mode limité" est affiché
|
|
Et que je reviens dans l'application après avoir activé le GPS dans les paramètres
|
|
Quand l'application détecte que la géolocalisation est maintenant active
|
|
Alors le banner disparaît automatiquement
|
|
Et l'application bascule en mode normal avec contenu géolocalisé
|
|
Et un toast de confirmation s'affiche: "Géolocalisation activée"
|
|
|
|
# Contenu disponible en mode dégradé
|
|
|
|
Scénario: Lecture de contenu national sans GPS
|
|
Étant donné que la géolocalisation est désactivée
|
|
Et que du contenu national existe (actualités Le Monde, podcasts génériques)
|
|
Quand je lance la lecture
|
|
Alors je peux écouter le contenu national sans restriction
|
|
Et l'algorithme de recommandation se base uniquement sur:
|
|
| critère |
|
|
| Mes centres d'intérêt |
|
|
| Mon historique d'écoute |
|
|
| Popularité générale |
|
|
Et la proximité géographique n'est pas prise en compte
|
|
|
|
Scénario: Lecture de contenu téléchargé sans GPS
|
|
Étant donné que la géolocalisation est désactivée
|
|
Et que j'ai téléchargé 30 contenus quand j'avais le GPS activé
|
|
Quand j'accède à mes contenus téléchargés
|
|
Alors je peux lire tous mes contenus téléchargés normalement
|
|
Et les contenus géolocalisés téléchargés restent accessibles
|
|
Et le filtre géographique n'est pas appliqué pour les contenus offline
|
|
|
|
Scénario: Contenu "Neutre" géographiquement disponible
|
|
Étant donné que la géolocalisation est désactivée
|
|
Et qu'un créateur a publié du contenu avec la classification géographique "Neutre"
|
|
Quand je recherche du contenu
|
|
Alors les contenus "Neutre" sont inclus dans les résultats
|
|
Et ils sont mélangés avec le contenu national
|
|
Et l'algorithme les priorise selon mes centres d'intérêt
|
|
|
|
# Restrictions de contenu sans GPS
|
|
|
|
Scénario: Audio-guides inaccessibles sans GPS
|
|
Étant donné que la géolocalisation est désactivée
|
|
Quand je recherche un audio-guide spécifique
|
|
Alors les audio-guides apparaissent dans les résultats de recherche
|
|
Mais un badge "GPS requis" est affiché sur chaque audio-guide
|
|
Et quand je clique sur un audio-guide, un message s'affiche:
|
|
"""
|
|
Les audio-guides nécessitent la géolocalisation pour fonctionner. Voulez-vous activer le GPS ?
|
|
"""
|
|
Et je peux choisir "Activer" ou "Annuler"
|
|
|
|
Scénario: Notifications push géo-déclenchées désactivées
|
|
Étant donné que la géolocalisation est désactivée
|
|
Et que je suis abonné à un créateur qui diffuse du contenu géolocalisé
|
|
Quand le créateur publie un nouveau contenu géolocalisé
|
|
Alors je ne reçois pas de notification push géo-déclenchée
|
|
Mais je reçois une notification push standard (non géo-déclenchée) si le créateur publie du contenu national
|
|
Et la notification précise: "Nouveau contenu national de [Créateur]"
|
|
|
|
Scénario: Contenu géolocalisé non proposé dans le feed
|
|
Étant donné que la géolocalisation est désactivée
|
|
Quand le système génère mon feed de contenu
|
|
Alors aucun contenu "Ancré" ou "Contextuel" n'est inclus
|
|
Et seuls les contenus "Neutre" et "National" sont proposés
|
|
Et mon feed contient au minimum 20 contenus disponibles
|
|
|
|
# RGPD: Respect du consentement libre
|
|
|
|
Scénario: Application fonctionnelle sans GPS (pas de blocage)
|
|
Étant donné que la géolocalisation est désactivée
|
|
Quand j'utilise l'application
|
|
Alors je ne suis jamais bloqué par un écran "GPS requis"
|
|
Et toutes les fonctionnalités non-géolocalisées restent accessibles:
|
|
| fonctionnalité |
|
|
| Écoute contenu national |
|
|
| Gestion profil |
|
|
| Abonnements créateurs |
|
|
| Recherche textuelle |
|
|
| Historique d'écoute |
|
|
| Paramètres |
|
|
| Mode offline |
|
|
Et je peux créer et publier du contenu national
|
|
|
|
Scénario: Respect du choix utilisateur de ne pas activer GPS
|
|
Étant donné que j'ai coché "Ne plus me demander" pour la géolocalisation
|
|
Quand j'utilise l'application pendant plusieurs semaines
|
|
Alors la popup de demande GPS ne s'affiche plus jamais automatiquement
|
|
Et seul le banner permanent reste affiché
|
|
Et l'application ne force jamais l'activation du GPS
|
|
|
|
# Réactivation GPS et bascule en mode normal
|
|
|
|
Scénario: Bascule automatique en mode normal après activation GPS
|
|
Étant donné que j'utilise l'application en mode dégradé depuis 1 semaine
|
|
Et que je décide d'activer la géolocalisation
|
|
Quand l'application détecte que le GPS est maintenant actif
|
|
Alors le mode dégradé est désactivé automatiquement
|
|
Et le banner "Mode limité" disparaît
|
|
Et le contenu géolocalisé devient disponible immédiatement
|
|
Et mon feed se rafraîchit avec du contenu local pertinent
|
|
Et un toast de confirmation s'affiche: "Géolocalisation activée - Contenu local disponible"
|
|
|
|
Scénario: Demande de permission GPS lors de l'utilisation d'une fonctionnalité géo
|
|
Étant donné que la géolocalisation est désactivée
|
|
Quand j'essaie d'accéder à une fonctionnalité nécessitant le GPS (ex: audio-guide)
|
|
Alors une popup contextuelle s'affiche:
|
|
"""
|
|
Cette fonctionnalité nécessite la géolocalisation. Voulez-vous l'activer ?
|
|
"""
|
|
Et je peux accepter ou refuser
|
|
Et si j'accepte, je suis redirigé vers les paramètres OS
|
|
Et si je refuse, je reste en mode dégradé sans message d'erreur répétitif
|
|
|
|
# Incitation à activer GPS sans être intrusif
|
|
|
|
Scénario: Statistiques de contenu local disponible non affiché
|
|
Étant donné que la géolocalisation est désactivée
|
|
Quand je navigue dans l'application
|
|
Alors le banner peut afficher occasionnellement:
|
|
"""
|
|
Mode limité : géolocalisation désactivée. Plus de 500 contenus locaux disponibles près de vous. [Activer]
|
|
"""
|
|
Et ce message incitatif change tous les 3 jours
|
|
Et il reste non intrusif (pas de popup, juste le banner)
|
|
|
|
Scénario: Onboarding différent pour utilisateurs sans GPS
|
|
Étant donné que c'est ma première utilisation de RoadWave
|
|
Et que j'ai refusé la géolocalisation
|
|
Quand l'onboarding se termine
|
|
Alors un écran explicatif s'affiche:
|
|
"""
|
|
Vous utilisez RoadWave sans géolocalisation. Voici ce qui est disponible :
|
|
- Contenu national (actualités, podcasts)
|
|
- Contenus téléchargés
|
|
- Tous les créateurs et abonnements
|
|
|
|
Pour profiter pleinement de RoadWave (contenu local, audio-guides), activez la géolocalisation à tout moment.
|
|
"""
|
|
Et je peux continuer avec un bouton "Compris"
|