Résolution des incohérences #10, #11, et #12 de l'analyse d'architecture. ## Phase 1 : Réorganisation Features BDD (Point #10 - RÉSOLU) - Créer structure features/{api,ui,e2e} - Déplacer 83 features en 3 catégories via git mv (historique préservé) - features/api/ : 53 features (tests API backend) - features/ui/ : 22 features (tests UI mobile) - features/e2e/ : 8 features (tests end-to-end) Domaines déplacés : - API : authentication, recommendation, rgpd-compliance, content-creation, moderation, monetisation, premium, radio-live, publicites - UI : audio-guides, navigation, interest-gauges, mode-offline, partage, profil, recherche - E2E : abonnements, error-handling ## Phase 2 : Mise à jour Documentation ### ADR-007 - Tests BDD - Ajouter section "Convention de Catégorisation des Features" - Documenter règles api/ui/e2e avec exemples concrets - Spécifier step definitions (backend Go, mobile Dart) ### ADR-024 - Stratégie CI/CD Monorepo (NOUVEAU) - Créer ADR dédié pour stratégie CI/CD avec path filters - Architecture workflows séparés (backend.yml, mobile.yml, shared.yml) - Configuration path filters détaillée avec exemples YAML - Matrice de déclenchement et optimisations (~70% gain temps CI) - Plan d'implémentation (~2h, reporté jusqu'au développement) ### ADR-016 - Organisation Monorepo - Simplifier en retirant section CI/CD détaillée - Ajouter référence vers ADR-024 pour stratégie CI/CD ### INCONSISTENCIES-ANALYSIS.md - Point #10 (Tests BDD synchronisés) : ✅ RÉSOLU - Catégorisation features implémentée - ADR-007 mis à jour avec convention complète - Point #11 (70/30 Split paiements) : ✅ ANNULÉ (faux problème) - ADR-009 et Règle 18 parfaitement cohérents - Documentation exhaustive existante (formule, SQL, comparaisons) - Point #12 (Monorepo path filters) : ⏸️ DOCUMENTÉ - Architecture CI/CD complète dans ADR-024 - Implémentation reportée (projet en phase documentation) - Métriques mises à jour : - MODERATE : 6/9 traités (4 résolus + 1 annulé + 1 documenté) - ADR à jour : 100% (19/19 avec ADR-024) ## Phase 3 : Validation - Structure features validée (api/ui/e2e, aucun répertoire restant) - Historique Git préservé (git mv, renommages détectés) - 83 features total (API: 53, UI: 22, E2E: 8) Closes: Point #10 (résolu), Point #11 (annulé), Point #12 (documenté) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
120 lines
5.5 KiB
Gherkin
120 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 uniquement du contenu "Tout public"
|
||
É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 uniquement les 20 contenus "Tout public"
|
||
Et les autres contenus ne sont jamais proposés
|
||
|
||
Scénario: Utilisateur 16-17 ans voit "Tout public" et "13+"
|
||
É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 35 contenus (Tout public + 13+)
|
||
Et les contenus 16+ et 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: Mode Kids activé automatiquement pour les moins de 13 ans
|
||
Étant donné que je m'inscris avec une date de naissance "2013-01-21"
|
||
Alors le mode Kids est activé automatiquement
|
||
Et je vois uniquement du contenu "Tout public"
|
||
Et des protections supplémentaires sont appliquées
|
||
|
||
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+ |
|
||
Et je ne vois pas les contenus 16+ et 18+ dans les résultats
|
||
|
||
Scénario: Notification si tentative d'accès à contenu non autorisé
|
||
Étant donné que je suis un utilisateur de 14 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 |
|