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,116 @@
# language: fr
@error-handling @content-removal
Fonctionnalité: Gestion d'un contenu supprimé pendant l'écoute
Contexte:
Étant donné que je suis un utilisateur connecté
Et que je suis en mode écoute
Et qu'un contenu "C123" est en cours de lecture
# 12.2 - Pas d'interruption brutale
Scénario: Contenu supprimé pendant lecture - fin de lecture sans interruption
Étant donné que j'écoute le contenu "C123" depuis 30 secondes
Et que la durée totale du contenu est de 120 secondes
Quand le contenu est supprimé par la modération côté backend
Alors la lecture du contenu continue sans interruption
Et je peux écouter le contenu jusqu'à la fin
Et aucune interruption brutale ne se produit
Scénario: Passage automatique après fin du contenu supprimé
Étant donné que le contenu "C123" a été supprimé pendant ma lecture
Et que j'ai écouté le contenu jusqu'à la fin
Quand le contenu se termine
Alors le système attend 2 secondes
Et passe automatiquement au contenu suivant
Et je reçois une notification toast discrète "Contenu précédent retiré (violation règles)"
Scénario: Bouton Précédent désactivé après suppression
Étant donné que le contenu "C123" a été supprimé pendant ma lecture
Et que je suis passé au contenu suivant "C456"
Quand j'essaie d'appuyer sur le bouton "Précédent"
Alors le bouton "Précédent" ne me ramène pas au contenu supprimé
Et je reçois un message "Ce contenu n'est plus disponible"
Et la lecture du contenu actuel "C456" continue
Scénario: Tentative de retour manuel au contenu supprimé
Étant donné que je suis sur le contenu "C456"
Et que le contenu précédent "C123" a été supprimé
Quand j'appuie sur le bouton "Précédent" pour revenir au contenu supprimé
Alors je reçois un message "Ce contenu n'est plus disponible"
Et la lecture reste sur le contenu actuel "C456"
Et aucune action n'est effectuée
# Sécurité routière - pas d'alerte intrusive
Scénario: Notification discrète pendant la conduite
Étant donné que je conduis à une vitesse de 60 km/h
Et que le contenu "C123" est supprimé pendant ma lecture
Quand le contenu se termine
Alors la notification "Contenu précédent retiré (violation règles)" s'affiche en toast discret
Et la notification disparaît automatiquement après 5 secondes
Et aucune popup modale n'interrompt ma conduite
Et le contenu suivant démarre automatiquement après 2 secondes
Scénario: Message informatif mais non alarmiste
Étant donné que le contenu "C123" a été supprimé
Et que je passe au contenu suivant
Quand la notification s'affiche
Alors le message doit être informatif: "Contenu précédent retiré (violation règles)"
Et le ton ne doit pas être alarmiste
Et le message doit être bref et compréhensible
Et aucun détail technique n'est affiché pendant la conduite
# Empêche la réécoute du contenu modéré
Scénario: Contenu supprimé retiré de l'historique
Étant donné que le contenu "C123" a été supprimé
Quand je consulte mon historique d'écoute
Alors le contenu "C123" n'apparaît plus dans mon historique
Et je ne peux pas relancer la lecture de ce contenu
Et l'historique affiche "[Contenu retiré]" à la place du titre
Scénario: Contenu supprimé non accessible via lien direct
Étant donné que le contenu "C123" a été supprimé
Et que j'ai un lien de partage "roadwave.fr/share/c/C123"
Quand je clique sur le lien de partage
Alors je reçois un message "Ce contenu a été retiré pour violation des règles de la communauté"
Et je suis redirigé vers l'accueil de l'application
Et aucune lecture n'est possible
# Gestion de plusieurs contenus supprimés consécutivement
Scénario: Plusieurs contenus supprimés dans l'historique récent
Étant donné que j'ai écouté les contenus suivants:
| id | statut |
| C123 | supprimé |
| C456 | actif |
| C789 | supprimé |
Et que je suis actuellement sur le contenu "C456"
Quand j'appuie plusieurs fois sur "Précédent"
Alors je ne peux pas revenir aux contenus "C123" ou "C789"
Et le système saute automatiquement les contenus supprimés
Et je reviens au dernier contenu actif disponible avant "C456"
# Comportement à l'arrêt du véhicule
Scénario: Consultation détaillée du contenu supprimé à l'arrêt
Étant donné que je suis à l'arrêt
Et que le contenu "C123" a été supprimé pendant ma session
Quand j'ouvre les détails de la notification de suppression
Alors je peux voir les informations suivantes:
| information |
| Titre du contenu |
| Créateur |
| Raison de suppression |
| Date de suppression |
Et je peux signaler une erreur de modération si je pense qu'elle est injustifiée
Scénario: Pas d'impact sur les jauges d'intérêt lors de la suppression
Étant donné que j'ai écouté le contenu "C123" pendant 80 secondes (66%)
Et que mes jauges d'intérêt ont été mises à jour pendant l'écoute
Quand le contenu est supprimé après mon écoute
Alors les modifications de mes jauges d'intérêt sont conservées
Et l'écoute déjà effectuée reste comptabilisée
Et seules les futures écoutes de ce contenu sont bloquées