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,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
|
||||
Reference in New Issue
Block a user