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.
This commit is contained in:
@@ -0,0 +1,210 @@
|
||||
# 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"
|
||||
Reference in New Issue
Block a user