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:
jpgiannetti
2026-02-07 17:15:02 +01:00
parent 78422bb2c0
commit 5e5fcf4714
227 changed files with 1413 additions and 1967 deletions

View File

@@ -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"