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.
121 lines
5.5 KiB
Gherkin
121 lines
5.5 KiB
Gherkin
# language: fr
|
||
Fonctionnalité: Classification des contenus par âge
|
||
En tant que plateforme responsable
|
||
Je veux classifier les contenus par tranche d'âge
|
||
Afin de protéger les mineurs et respecter les obligations légales
|
||
|
||
Contexte:
|
||
Étant donné que l'API RoadWave est disponible
|
||
|
||
Scénario: Créateur doit classifier son contenu à la publication
|
||
Étant donné que je suis un créateur connecté
|
||
Quand je crée un nouveau contenu audio
|
||
Alors je dois obligatoirement choisir une classification d'âge parmi:
|
||
| classification | description |
|
||
| Tout public | Contenu adapté à tous les âges |
|
||
| 13+ | Contenu mature léger |
|
||
| 16+ | Contenu mature |
|
||
| 18+ | Contenu adulte |
|
||
|
||
Scénario: Publication impossible sans classification
|
||
Étant donné que je crée un contenu audio
|
||
Quand j'essaie de publier sans sélectionner de classification
|
||
Alors la publication échoue
|
||
Et je vois le message "Vous devez sélectionner une classification d'âge"
|
||
|
||
Scénario: Utilisateur 13-15 ans voit "Tout public" et "13+"
|
||
Étant donné que je suis un utilisateur de 14 ans
|
||
Et qu'il existe des contenus avec les classifications suivantes:
|
||
| classification | nombre |
|
||
| Tout public | 20 |
|
||
| 13+ | 15 |
|
||
| 16+ | 10 |
|
||
| 18+ | 5 |
|
||
Quand je demande des recommandations
|
||
Alors je vois 35 contenus (Tout public + 13+)
|
||
Et les contenus 16+ et 18+ ne sont jamais proposés
|
||
|
||
Scénario: Utilisateur 16-17 ans voit "Tout public", "13+" et "16+"
|
||
Étant donné que je suis un utilisateur de 17 ans
|
||
Et qu'il existe des contenus avec les classifications suivantes:
|
||
| classification | nombre |
|
||
| Tout public | 20 |
|
||
| 13+ | 15 |
|
||
| 16+ | 10 |
|
||
| 18+ | 5 |
|
||
Quand je demande des recommandations
|
||
Alors je vois 45 contenus (Tout public + 13+ + 16+)
|
||
Et les contenus 18+ ne sont pas proposés
|
||
|
||
Scénario: Utilisateur 18+ voit tous les contenus
|
||
Étant donné que je suis un utilisateur de 25 ans
|
||
Et qu'il existe des contenus avec toutes les classifications
|
||
Quand je demande des recommandations
|
||
Alors je vois tous les contenus sans restriction
|
||
Et aucun filtre d'âge n'est appliqué
|
||
|
||
Scénario: Inscription réussie à 13 ans pile - accès limité à "Tout public" et "13+"
|
||
Étant donné que je m'inscris avec une date de naissance "2013-01-21"
|
||
Alors mon compte est créé avec succès
|
||
Et je peux voir les contenus "Tout public" et "13+"
|
||
Et les contenus 16+ et 18+ ne sont pas accessibles
|
||
|
||
Scénario: Modérateur reclassifie un contenu mal catégorisé
|
||
Étant donné qu'un contenu est publié avec la classification "Tout public"
|
||
Et que ce contenu contient du langage inapproprié détecté en modération
|
||
Quand le modérateur reclassifie ce contenu en "16+"
|
||
Alors la nouvelle classification est appliquée immédiatement
|
||
Et le contenu n'est plus visible pour les utilisateurs de moins de 16 ans
|
||
Et le créateur reçoit une notification de reclassification
|
||
|
||
Scénario: Strike si classification volontairement incorrecte
|
||
Étant donné qu'un créateur a publié un contenu "18+" classifié comme "Tout public"
|
||
Et que ce contenu a été signalé
|
||
Quand le modérateur confirme la mauvaise classification volontaire
|
||
Alors le créateur reçoit 1 strike
|
||
Et le contenu est reclassifié en "18+"
|
||
Et le créateur reçoit une notification explicative
|
||
|
||
Scénario: Créateur peut voir la distribution d'âge de son audience
|
||
Étant donné que je suis un créateur
|
||
Et que j'ai publié des contenus avec différentes classifications
|
||
Quand je consulte mes statistiques
|
||
Alors je vois la répartition des âges de mes auditeurs:
|
||
| tranche_age | pourcentage |
|
||
| 13-15 ans | 15% |
|
||
| 16-17 ans | 20% |
|
||
| 18+ ans | 65% |
|
||
|
||
Scénario: Recherche filtrée par classification d'âge
|
||
Étant donné que je suis un utilisateur de 16 ans
|
||
Quand je recherche des contenus
|
||
Alors les résultats incluent uniquement:
|
||
| classification |
|
||
| Tout public |
|
||
| 13+ |
|
||
| 16+ |
|
||
Et je ne vois pas les contenus 18+ dans les résultats
|
||
|
||
Scénario: Notification si tentative d'accès à contenu non autorisé
|
||
Étant donné que je suis un utilisateur de 15 ans
|
||
Et qu'un contenu "16+" est partagé avec moi via un lien direct
|
||
Quand j'essaie d'accéder au contenu
|
||
Alors l'accès est refusé
|
||
Et je vois le message "Ce contenu est réservé aux utilisateurs de 16 ans et plus"
|
||
|
||
Scénario: Validation obligatoire des 3 premiers contenus inclut la classification
|
||
Étant donné que je suis un nouveau créateur
|
||
Et que je publie mon premier contenu classifié "18+"
|
||
Quand le modérateur valide mon contenu
|
||
Alors il vérifie que la classification "18+" est appropriée
|
||
Et peut la modifier si nécessaire avant validation
|
||
|
||
Scénario: Statistiques de classification dans l'interface créateur
|
||
Étant donné que je suis un créateur
|
||
Quand je consulte mes contenus publiés
|
||
Alors je vois pour chaque contenu:
|
||
| information | exemple |
|
||
| Classification actuelle | 13+ |
|
||
| Nombre de signalements | 2 |
|
||
| Reclassifications | Aucune / 1× par modérateur |
|