feat(bdd): réorganiser features en catégories api/ui/e2e et créer ADR-024

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>
This commit is contained in:
jpgiannetti
2026-02-01 11:31:41 +01:00
parent 841028d1b2
commit 37c62206ad
88 changed files with 625 additions and 67 deletions

View File

@@ -0,0 +1,263 @@
# language: fr
Fonctionnalité: Conditions d'activation de la monétisation
En tant que créateur
Je veux pouvoir activer la monétisation quand je remplis les critères
Afin de générer des revenus avec mes contenus
Contexte:
Étant donné que l'API RoadWave est disponible
Et que je suis connecté en tant que créateur
Scénario: Critère 1 - Ancienneté de 3 mois validée
Étant donné que mon compte a été créé il y a 91 jours
Quand je consulte les critères de monétisation
Alors le critère "Ancienneté 3 mois" est validé
Scénario: Critère 1 - Ancienneté insuffisante
Étant donné que mon compte a été créé il y a 60 jours
Quand je consulte les critères de monétisation
Alors le critère "Ancienneté 3 mois" n'est pas validé
Et je vois "Encore 30 jours avant d'être éligible"
Scénario: Critère 2 - 500 abonnés atteints
Étant donné que j'ai exactement 500 abonnés
Quand je consulte les critères de monétisation
Alors le critère " 500 abonnés" est validé
Scénario: Critère 2 - Pas assez d'abonnés
Étant donné que j'ai 347 abonnés
Quand je consulte les critères de monétisation
Alors le critère " 500 abonnés" n'est pas validé
Et je vois "Encore 153 abonnés nécessaires"
Scénario: Critère 3 - 10 000 écoutes complètes atteintes
Étant donné que mes contenus ont cumulé 10 487 écoutes complètes
Quand je consulte les critères de monétisation
Alors le critère " 10 000 écoutes complètes" est validé
Scénario: Critère 3 - Écoutes incomplètes non comptabilisées
Étant donné que mes contenus ont:
| type écoute | nombre |
| Écoutes complètes | 8 500 |
| Écoutes <80% | 3 000 |
Quand je consulte les critères de monétisation
Alors seules les 8 500 écoutes complètes comptent
Et je vois "Encore 1 500 écoutes complètes nécessaires"
Scénario: Critère 4 - Aucun strike actif
Étant donné que je n'ai aucun strike actif
Et que je n'ai eu aucun contenu modéré dans les 6 derniers mois
Quand je consulte les critères de monétisation
Alors le critère "Fiabilité" est validé
Scénario: Critère 4 - Strike actif bloque l'éligibilité
Étant donné que j'ai 1 strike actif pour contenu inapproprié
Quand je consulte les critères de monétisation
Alors le critère "Fiabilité" n'est pas validé
Et je vois "Vous devez résoudre votre strike avant d'être éligible"
Scénario: Critère 4 - Contenu modéré dans les 6 derniers mois
Étant donné que je n'ai pas de strike actif
Mais qu'un de mes contenus a été modéré il y a 4 mois
Quand je consulte les critères de monétisation
Alors le critère "Fiabilité" n'est pas validé
Et je vois "Attendre 2 mois après le dernier contenu modéré"
Scénario: Critère 5 - 5 contenus publiés dans les 90 derniers jours
Étant donné que j'ai publié:
| date de publication | titre |
| Il y a 15 jours | Contenu 1 |
| Il y a 30 jours | Contenu 2 |
| Il y a 45 jours | Contenu 3 |
| Il y a 60 jours | Contenu 4 |
| Il y a 75 jours | Contenu 5 |
Quand je consulte les critères de monétisation
Alors le critère " 5 contenus publiés dans les 90 derniers jours" est validé
Scénario: Critère 5 - Contenus trop anciens ne comptent pas
Étant donné que j'ai publié:
| date de publication | titre |
| Il y a 15 jours | Contenu 1 |
| Il y a 30 jours | Contenu 2 |
| Il y a 95 jours | Contenu 3 |
| Il y a 120 jours | Contenu 4 |
Quand je consulte les critères de monétisation
Alors seuls 2 contenus comptent (dans les 90 jours)
Et je vois "Encore 3 contenus à publier dans les 90 prochains jours"
Scénario: Tous les critères validés - Bouton disponible
Étant donné que tous mes critères sont validés:
| critère | statut |
| Ancienneté 3 mois | |
| 500 abonnés | |
| 10 000 écoutes | |
| Fiabilité | |
| Régularité (5 contenus) | |
Quand j'accède à mon profil créateur
Alors le bouton "Demander la monétisation" est actif
Et je peux cliquer pour démarrer le KYC
Scénario: Critères incomplets - Bouton grisé avec progression
Étant donné que mes critères sont:
| critère | statut | progression |
| Ancienneté 3 mois | | 100% |
| 500 abonnés | | 347/500 (69%) |
| 10 000 écoutes | | 8500/10000 (85%) |
| Fiabilité | | 100% |
| Régularité (5 contenus) | | 100% |
Quand j'accède à mon profil créateur
Alors le bouton "Demander la monétisation" est grisé
Et je vois la progression détaillée de chaque critère
Scénario: Vérification automatique SQL lors de la demande
Étant donné que je clique sur "Demander la monétisation"
Quand le système vérifie mes critères
Alors une requête SQL est exécutée:
```sql
SELECT
(created_at <= NOW() - INTERVAL '3 months') AS anciennete_ok,
(SELECT COUNT(*) FROM subscriptions WHERE creator_id = :creator_id) >= 500 AS abonnes_ok,
(SELECT SUM(complete_listens) FROM contents WHERE creator_id = :creator_id) >= 10000 AS ecoutes_ok,
(SELECT COUNT(*) FROM strikes WHERE creator_id = :creator_id AND status = 'active') = 0 AS strikes_ok,
(SELECT COUNT(*) FROM moderated_contents WHERE creator_id = :creator_id AND moderated_at >= NOW() - INTERVAL '6 months') = 0 AS moderation_ok,
(SELECT COUNT(*) FROM contents WHERE creator_id = :creator_id AND published_at >= NOW() - INTERVAL '90 days') >= 5 AS regularite_ok
FROM users WHERE id = :creator_id;
```
Et si tous les critères sont TRUE, je suis redirigé vers le KYC
Scénario: Notification par email quand critères atteints
Étant donné que je viens d'atteindre 500 abonnés
Et que c'était mon dernier critère manquant
Quand le système détecte l'éligibilité
Alors je reçois un email:
"""
Félicitations ! Vous êtes maintenant éligible à la monétisation.
Accédez à votre profil pour activer la monétisation et commencer à gagner des revenus.
"""
Scénario: Badge "Éligible monétisation" dans profil
Étant donné que je remplis tous les critères
Mais que je n'ai pas encore activé la monétisation
Quand un utilisateur consulte mon profil
Alors il voit un badge "Éligible monétisation 💰"
Et cela renforce ma crédibilité de créateur
Scénario: Justification anti-fraude - Délai 3 mois
Étant donné qu'un compte suspect crée du contenu frauduleux
Quand le compte est détecté dans les 2 premiers mois
Alors le compte est banni avant d'atteindre les 3 mois
Et le créateur n'a jamais été éligible à la monétisation
Et aucun paiement n'a été effectué
Scénario: Justification qualité - 10 000 écoutes
Étant donné qu'un créateur produit du contenu de mauvaise qualité
Quand ses contenus ne génèrent que 2 000 écoutes complètes
Alors il ne peut pas activer la monétisation
Et seuls les créateurs avec contenu apprécié sont monétisés
Scénario: Réduction coût administratif plateforme
Étant donné que RoadWave a 10 000 créateurs inscrits
Et que seuls 500 remplissent tous les critères
Quand le système calcule le coût administratif
Alors seulement 500 KYC sont à gérer (vs 10 000)
Et seulement 500 virements mensuels (vs 10 000)
Et la charge comptable est réduite de 95%
Scénario: Statistiques publiques pour transparence
Quand un utilisateur consulte la page "Devenir créateur"
Alors il voit les statistiques:
| métrique | valeur exemple |
| Nombre créateurs monétisés | 1 247 |
| Revenus moyens par créateur | 127/mois |
| Top créateur (anonymisé) | 2 450/mois |
| Critères d'éligibilité à remplir | 5 critères |
Et cela permet de fixer des attentes réalistes
Scénario: Cache Redis pour calcul rapide critères
Étant donné que je consulte mes critères de monétisation
Quand le système charge la page
Alors les compteurs sont récupérés depuis Redis:
| clé Redis | exemple valeur |
| creator:[id]:subscribers_count | 347 |
| creator:[id]:complete_listens_total | 8500 |
| creator:[id]:recent_contents_count | 7 |
Et le temps de réponse est <50ms
Scénario: Mise à jour temps réel des compteurs
Étant donné que je viens de publier un nouveau contenu
Quand un utilisateur écoute ce contenu en entier
Alors le compteur "complete_listens_total" est incrémenté immédiatement
Et si je rafraîchis la page critères, je vois la nouvelle valeur
Et cela encourage les créateurs à continuer de produire
Scénario: Historique des tentatives d'activation
Étant donné que j'ai tenté d'activer la monétisation il y a 2 mois
Mais que les critères n'étaient pas remplis
Quand j'accède à mes logs d'activité
Alors je vois:
| date | action | résultat | raison |
| 2025-11-15 | Demande monétisation | Refusée | Seulement 300 abonnés |
Et cela m'aide à suivre ma progression
Scénario: Performance avec 100 000 créateurs
Étant donné que RoadWave a 100 000 créateurs
Et que chacun consulte ses critères 1 fois par jour
Quand le système traite ces requêtes
Alors la table users est indexée sur created_at
Et la table subscriptions est indexée sur creator_id
Et la table contents est indexée sur creator_id et published_at
Et chaque requête reste <50ms grâce aux index
Scénario: Export des critères pour support client
Étant donné que je contacte le support car je pense être éligible
Quand l'agent support consulte mon compte
Alors il voit un export JSON complet:
```json
{
"creator_id": "abc123",
"monetization_eligible": false,
"criteria": {
"account_age_days": 75,
"account_age_ok": false,
"subscribers_count": 512,
"subscribers_ok": true,
"complete_listens_total": 11234,
"complete_listens_ok": true,
"active_strikes": 0,
"strikes_ok": true,
"moderated_contents_6m": 1,
"moderation_ok": false,
"recent_contents_90d": 8,
"regularity_ok": true
},
"blocking_criteria": ["account_age", "moderation_history"]
}
```
Et l'agent peut expliquer précisément pourquoi je ne suis pas éligible
Scénario: Notification 30 jours avant éligibilité probable
Étant donné que mes critères sont:
| critère | statut | progression |
| Ancienneté 3 mois | | 60/90 jours |
| Tous les autres critères | | 100% |
Quand il reste exactement 30 jours avant les 90 jours
Alors je reçois une notification:
"""
Plus que 30 jours avant d'être éligible à la monétisation !
Préparez vos documents KYC (SIRET, RIB, CNI) pour gagner du temps.
"""
Scénario: Pas de bypass possible pour amis/influenceurs
Étant donné qu'un créateur influent me contacte directement
Et qu'il demande un bypass des critères
Quand je consulte la politique RoadWave
Alors la réponse est "Aucune exception possible, critères automatiques uniquement"
Et cela garantit l'équité pour tous les créateurs
Scénario: A/B test futur sur seuils (post-MVP)
Étant donné que RoadWave veut tester des seuils différents
Quand un A/B test est lancé en 2027
Alors groupe A voit: 500 abonnés, 10 000 écoutes
Et groupe B voit: 300 abonnés, 5 000 écoutes
Et les métriques (taux activation, fraude, qualité) sont comparées
Et le meilleur seuil est déployé définitivement

View File

@@ -0,0 +1,286 @@
# language: fr
Fonctionnalité: Contenus Premium exclusifs
En tant que créateur monétisé
Je veux pouvoir rendre certains contenus exclusifs aux abonnés Premium
Afin d'inciter les utilisateurs à s'abonner
Contexte:
Étant donné que je suis un créateur avec la monétisation activée
Scénario: Toggle "Réservé Premium" lors de la création
Étant donné que je crée un nouveau contenu
Quand j'accède aux options de publication
Alors je vois un toggle "Réservé aux abonnés Premium 👑"
Et je peux l'activer ou le désactiver
Scénario: Contenu marqué Premium lors de la création
Étant donné que je crée un nouveau contenu
Quand j'active le toggle "Réservé Premium"
Et que je publie le contenu
Alors le champ `is_premium` en base est mis à `true`
Et le contenu est visible uniquement pour les utilisateurs Premium
Scénario: Contenu gratuit par défaut
Étant donné que je crée un nouveau contenu
Quand je ne touche pas au toggle "Réservé Premium"
Et que je publie le contenu
Alors le champ `is_premium` en base est mis à `false` (défaut)
Et le contenu est accessible à tous les utilisateurs
Scénario: Modification d'un contenu existant en Premium
Étant donné que j'ai publié un contenu gratuit il y a 2 jours
Quand je modifie le contenu et active le toggle "Réservé Premium"
Et que j'enregistre les modifications
Alors le contenu devient immédiatement Premium
Et les utilisateurs gratuits ne peuvent plus y accéder
Scénario: Passage d'un contenu Premium en gratuit
Étant donné que j'ai publié un contenu Premium il y a 1 mois
Quand je modifie le contenu et désactive le toggle "Réservé Premium"
Et que j'enregistre les modifications
Alors le contenu devient immédiatement gratuit
Et tous les utilisateurs peuvent maintenant y accéder
Scénario: Aucune limite sur pourcentage de contenus Premium
Étant donné que je publie 10 nouveaux contenus
Quand je décide de rendre les 10 contenus Premium (100%)
Alors le système accepte sans limitation
Et je peux avoir 100% de mon catalogue en Premium
Scénario: Stratégie freemium - Mix gratuit/premium
Étant donné que je publie 10 nouveaux contenus
Quand je décide de rendre 5 contenus Premium et 5 gratuits (50/50)
Alors le système accepte cette stratégie
Et je peux tester différents mix pour optimiser mes revenus
Scénario: Stratégie tout gratuit possible
Étant donné que je suis monétisé via publicités
Quand je décide de ne mettre aucun contenu en Premium (0%)
Alors le système accepte cette stratégie
Et je génère des revenus uniquement via les publicités
Scénario: Badge 👑 visible sur l'interface utilisateur
Étant donné qu'un utilisateur consulte ma liste de contenus
Quand il voit un contenu Premium
Alors un badge 👑 "Premium" est affiché
Et le contenu est clairement identifiable comme réservé
Scénario: Utilisateur gratuit voit les contenus Premium dans la liste
Étant donné que je suis un utilisateur gratuit
Quand je consulte les contenus d'un créateur
Alors je vois aussi les contenus Premium dans la liste
Et ils sont affichés avec un badge 👑
Mais je ne peux pas les lire
Scénario: Tentative de lecture Premium par utilisateur gratuit - Overlay bloquant
Étant donné que je suis un utilisateur gratuit
Quand je clique sur un contenu Premium pour le lire
Alors un overlay bloquant apparaît
Et je vois le message:
"""
👑 Ce contenu est réservé aux abonnés Premium
Passez Premium pour 4.99/mois et accédez à tous les contenus exclusifs !
"""
Et un bouton "Passer Premium" est affiché
Scénario: CTA "Passer Premium" redirige vers abonnement
Étant donné que je vois l'overlay de contenu Premium bloqué
Quand je clique sur "Passer Premium"
Alors je suis redirigé vers la page d'abonnement Premium
Et je peux m'abonner pour 4.99/mois
Scénario: Utilisateur Premium peut lire tous les contenus Premium
Étant donné que je suis un utilisateur Premium actif
Quand je clique sur un contenu Premium
Alors le contenu se lance immédiatement
Et je n'ai aucun overlay bloquant
Et je peux profiter pleinement du contenu exclusif
Scénario: Contenus Premium inclus dans les recommandations
Étant donné que l'algorithme génère ma file de 5 contenus
Quand je suis un utilisateur gratuit
Alors les contenus Premium peuvent apparaître dans les recommandations
Et cela me fait découvrir qu'il existe du contenu exclusif
Scénario: Contenu Premium skippé automatiquement pour utilisateur gratuit
Étant donné que je suis un utilisateur gratuit
Et qu'un contenu Premium apparaît dans ma file de recommandation
Quand j'écoute le contenu précédent jusqu'à la fin
Alors le contenu Premium est automatiquement skippé
Et le contenu suivant (gratuit) est lancé
Et le slot Premium ne compte pas dans ma file de 5 contenus
Scénario: Contenu Premium diffusé normalement pour utilisateur Premium
Étant donné que je suis un utilisateur Premium
Et qu'un contenu Premium apparaît dans ma file de recommandation
Quand j'écoute le contenu précédent jusqu'à la fin
Alors le contenu Premium est lancé normalement
Et je profite du contenu exclusif sans interruption
Scénario: Champ `is_premium` boolean en base PostgreSQL
Étant donné qu'un contenu est créé
Quand il est stocké en base de données
Alors la table `contents` contient un champ `is_premium BOOLEAN DEFAULT FALSE`
Et ce champ est indexé pour requêtes rapides
Scénario: Index PostgreSQL sur `is_premium`
Étant donné que l'algorithme doit filtrer les contenus selon le statut Premium
Quand une requête SQL est exécutée:
```sql
SELECT * FROM contents
WHERE creator_id = :creator_id
AND (is_premium = FALSE OR :user_is_premium = TRUE)
ORDER BY created_at DESC;
```
Alors l'index sur `is_premium` accélère la requête
Et le temps de réponse reste <20ms
Scénario: Cache Redis pour statut Premium
Étant donné qu'un contenu Premium est consulté fréquemment
Quand l'API vérifie le statut Premium
Alors la valeur est récupérée depuis Redis:
```
content:[content_id]:premium = true
```
Et le cache a un TTL de 1 heure
Et cela évite des requêtes SQL inutiles
Scénario: Invalidation cache lors de modification statut Premium
Étant donné qu'un contenu est passé de gratuit à Premium
Quand le créateur enregistre la modification
Alors le cache Redis `content:[id]:premium` est invalidé immédiatement
Et la nouvelle valeur est mise à jour
Et les utilisateurs voient le changement en temps réel
Scénario: Justification liberté créateur - Stratégie personnalisée
Étant donné que chaque créateur a une audience différente
Quand un créateur décide de sa stratégie Premium
Alors il peut tester différentes approches:
| stratégie | % Premium | objectif |
| Tout gratuit | 0% | Maximiser audience + revenus pub |
| Mix 50/50 | 50% | Équilibrer audience et exclusivité |
| Premium majoritaire | 80% | Cibler abonnés fidèles |
| 100% Premium | 100% | Contenu ultra-exclusif |
Scénario: Justification incitation Premium - Argument fort pour s'abonner
Étant donné qu'un utilisateur gratuit voit beaucoup de contenus Premium
Quand il consulte les profils de ses créateurs préférés
Alors il voit que 60% de leur contenu est réservé Premium
Et cela l'incite à s'abonner pour 4.99/mois
Et RoadWave augmente son taux de conversion vers Premium
Scénario: Justification équité - Petit créateur peut tout mettre en Premium
Étant donné que je suis un petit créateur avec 600 abonnés
Et que 50 sont abonnés Premium
Quand je mets 100% de mon contenu en Premium
Alors je génère des revenus uniquement via mes 50 abonnés Premium
Et cela me permet de vivre de mon contenu malgré une petite audience
Scénario: Justification équité - Gros créateur peut tout offrir gratuitement
Étant donné que je suis un gros créateur avec 50 000 abonnés
Et que je génère déjà beaucoup de revenus publicitaires
Quand je laisse 100% de mon contenu gratuit
Alors je maximise mon audience et mes revenus pub
Et je n'ai pas besoin de mettre du contenu en Premium
Scénario: Statistiques créateur - Ratio Premium/Gratuit
Étant donné que j'accède à mon tableau de bord créateur
Quand je consulte mes statistiques de contenus
Alors je vois:
| métrique | valeur |
| Contenus totaux | 47 |
| Contenus gratuits | 32 (68%) |
| Contenus Premium | 15 (32%) |
| Écoutes Premium ce mois | 12,345 |
| Écoutes gratuites ce mois | 28,901 |
Scénario: Statistiques créateur - Revenus par type
Étant donné que j'ai des contenus gratuits et Premium
Quand je consulte mes revenus détaillés
Alors je vois:
| source | montant |
| Revenus pub (gratuit) | 86.70 |
| Revenus Premium (exclusifs) | 34.20 |
| Revenus Premium (tout contenu)| 78.90 |
Et je peux comparer l'efficacité de chaque stratégie
Scénario: Notification créateur - Contenu Premium très écouté
Étant donné que j'ai publié un contenu Premium il y a 3 jours
Et qu'il a généré 5 000 écoutes Premium (très élevé)
Quand le système détecte cette performance
Alors je reçois une notification:
"""
🔥 Votre contenu Premium "[Titre]" cartonne !
5 000 écoutes en 3 jours. Continuez à créer du contenu exclusif de qualité !
"""
Scénario: A/B test utilisateur - Impact badge Premium sur conversion
Étant donné que RoadWave veut optimiser le taux de conversion Premium
Quand un A/B test est lancé
Alors groupe A voit le badge 👑 "Premium"
Et groupe B voit le badge 💎 "Exclusif"
Et les taux de clic et conversion sont mesurés
Et le badge le plus performant est déployé définitivement
Scénario: Analytics plateforme - Adoption fonctionnalité Premium
Étant donné que RoadWave suit l'adoption de la fonctionnalité
Quand un admin consulte les métriques
Alors il voit:
| métrique | valeur |
| Créateurs utilisant Premium | 847 (68%) |
| % moyen contenus Premium | 23% |
| Taux conversion vers Premium (users) | 8.5% |
| Revenus Premium/mois | 47,890 |
Scénario: Impact sur churn - Contenus Premium réduisent le churn Premium
Étant donné qu'un utilisateur Premium envisage de résilier
Mais qu'il a accès à 150 contenus Premium de ses créateurs préférés
Quand il voit la valeur exclusive qu'il perdrait
Alors il est moins susceptible de résilier (churn réduit de ~30%)
Et les contenus Premium augmentent la rétention
Scénario: Transparence - Créateur voit combien de contenus Premium il a
Étant donné que j'accède à mon profil créateur
Quand je consulte mes contenus
Alors je peux filtrer par statut:
| filtre | résultats |
| Tous | 47 |
| Gratuits | 32 |
| Premium 👑 | 15 |
Et je peux facilement gérer mon catalogue
Scénario: Export liste contenus avec statut Premium (RGPD)
Étant donné que je demande l'export de mes données
Quand l'export est généré
Alors la liste de mes contenus inclut le statut Premium:
```json
{
"contents": [
{
"title": "Mon épisode exclusif",
"is_premium": true,
"published_at": "2025-06-15T10:30:00Z"
},
{
"title": "Mon épisode gratuit",
"is_premium": false,
"published_at": "2025-06-14T08:15:00Z"
}
]
}
```
Scénario: Suppression compte créateur et contenus Premium
Étant donné que je supprime définitivement mon compte créateur
Quand la suppression est confirmée
Alors tous mes contenus (gratuits et Premium) sont supprimés
Et les utilisateurs Premium ne peuvent plus y accéder
Et les fichiers audio sont supprimés du CDN sous 7 jours
Scénario: Performance avec 1 million de contenus Premium
Étant donné que RoadWave a 1 million de contenus dont 300 000 Premium
Quand l'algorithme génère une recommandation
Alors la requête SQL filtre efficacement avec l'index `is_premium`
Et le temps de réponse reste <50ms
Et la scalabilité est garantie

View File

@@ -0,0 +1,381 @@
# language: fr
Fonctionnalité: Désactivation et suspension monétisation
En tant que créateur ou plateforme
Je veux pouvoir désactiver ou suspendre la monétisation selon certaines conditions
Afin de gérer les pauses, problèmes techniques ou violations des règles
Contexte:
Étant donné que je suis un créateur avec la monétisation activée
# ===== DÉSACTIVATION VOLONTAIRE PAR LE CRÉATEUR =====
Scénario: Désactivation temporaire par le créateur
Étant donné que je veux faire une pause dans ma création de contenu
Quand j'accède à "Paramètres > Monétisation"
Et que je clique sur "Désactiver temporairement la monétisation"
Alors ma monétisation est désactivée immédiatement
Et je ne génère plus de revenus à partir de maintenant
Scénario: Confirmation avant désactivation
Étant donné que je clique sur "Désactiver temporairement"
Quand une popup de confirmation apparaît
Alors je vois le message:
"""
Désactiver la monétisation ?
Vous ne générerez plus de revenus à partir de maintenant.
Votre solde actuel sera conservé et versé normalement.
Vous pourrez réactiver quand vous le souhaitez.
"""
Et je dois confirmer pour continuer
Scénario: Solde conservé pendant désactivation
Étant donné que mon solde actuel est 87.45
Quand je désactive ma monétisation le 15 du mois
Alors mon solde de 87.45 est conservé
Et il sera reporté au mois suivant
Et si le total dépasse 50, il sera versé normalement le 15 du mois prochain
Scénario: Contenus restent accessibles pendant désactivation
Étant donné que j'ai désactivé ma monétisation
Quand des utilisateurs écoutent mes contenus
Alors mes contenus restent accessibles normalement
Mais je ne génère aucun revenu (ni pub ni Premium)
Scénario: Réactivation sans refaire le KYC si <2 ans
Étant donné que j'ai désactivé ma monétisation il y a 8 mois
Et que mes documents KYC sont toujours valides
Quand je clique sur "Réactiver la monétisation"
Alors la réactivation est immédiate
Et je n'ai pas besoin de refaire le KYC
Et je recommence à générer des revenus dès maintenant
Scénario: Nouveau KYC requis si inactivité >2 ans
Étant donné que j'ai désactivé ma monétisation il y a 25 mois
Quand j'essaie de réactiver
Alors le système demande un nouveau KYC
Et je vois:
"""
Votre monétisation était désactivée depuis plus de 2 ans.
Veuillez mettre à jour vos documents KYC pour réactiver.
"""
Et je dois soumettre à nouveau mes documents
Scénario: Historique des désactivations/réactivations
Étant donné que j'ai désactivé et réactivé ma monétisation plusieurs fois
Quand j'accède à "Paramètres > Monétisation > Historique"
Alors je vois la liste complète:
| date | action | raison |
| 15/06/2025 | Réactivation | Reprise création contenu |
| 01/03/2025 | Désactivation | Pause vacances |
| 20/01/2025 | Activation | KYC validé |
# ===== SUSPENSION AUTOMATIQUE PAR LA PLATEFORME =====
Scénario: Suspension si 3+ strikes actifs
Étant donné que je reçois un 3ème strike pour violation des règles
Quand le strike devient actif
Alors ma monétisation est suspendue automatiquement
Et je vois:
"""
Monétisation suspendue
Votre compte a 3 strikes actifs.
La monétisation est suspendue jusqu'à résolution des violations.
"""
Scénario: Réactivation après résolution des strikes
Étant donné que ma monétisation est suspendue pour 3 strikes
Quand je résous tous mes strikes (après expiration ou contestation)
Et que mon compteur de strikes passe à 0
Alors ma monétisation est réactivée automatiquement
Et je reçois un email de confirmation
Scénario: Suspension si RIB invalide après 3 échecs de virement
Étant donné que 3 tentatives de virement ont échoué (15, 18, 22 du mois)
Quand le 3ème échec est confirmé
Alors ma monétisation est suspendue automatiquement
Et je vois:
"""
Monétisation suspendue
Vos virements ont échoué 3 fois (RIB invalide ou compte fermé).
Veuillez mettre à jour votre RIB dans "Paramètres > Monétisation".
Votre solde en attente (150.00) sera versé dès que le RIB sera valide.
"""
Scénario: Réactivation après mise à jour RIB valide
Étant donné que ma monétisation est suspendue pour RIB invalide
Quand je mets à jour mon RIB avec un compte bancaire valide
Et que Mangopay valide le nouveau RIB
Alors ma monétisation est réactivée automatiquement
Et un virement est tenté immédiatement pour le solde en attente
Scénario: Suspension si documents KYC expirés
Étant donné que ma carte d'identité expire dans 30 jours
Quand je reçois un email de rappel de mise à jour
Mais que je ne mets pas à jour mes documents
Et que ma CNI expire
Alors ma monétisation est suspendue automatiquement après 30 jours de grâce
Scénario: Préavis 30 jours avant suspension pour docs expirés
Étant donné que ma CNI expire le 15 juin 2025
Quand le 15 mai 2025 arrive (30 jours avant)
Alors je reçois un email d'alerte:
"""
Vos documents KYC expirent dans 30 jours
Votre carte d'identité expire le 15 juin 2025.
Veuillez mettre à jour vos documents dans "Paramètres > Monétisation > KYC".
Si vous ne mettez pas à jour, votre monétisation sera suspendue le 16 juin 2025.
"""
Scénario: Réactivation après renouvellement documents KYC
Étant donné que ma monétisation est suspendue pour CNI expirée
Quand je soumets une nouvelle CNI valide
Et que Mangopay valide le document sous 24-72h
Alors ma monétisation est réactivée automatiquement
Et je recommence à générer des revenus
Scénario: Suspension si fraude détectée
Étant donné que le système détecte une activité frauduleuse (bots, écoutes artificielles)
Quand l'équipe modération confirme la fraude
Alors ma monétisation est suspendue immédiatement
Et mon compte est mis sous enquête
Et je reçois un email m'informant de la suspension
Scénario: Enquête fraude - Vérification manuelle
Étant donné que ma monétisation est suspendue pour suspicion de fraude
Quand l'équipe modération enquête
Alors elle analyse:
| élément à vérifier | outil |
| Patterns d'écoute suspects | Analytics + logs |
| Origine géographique | Logs IP |
| Vitesse de croissance anormale | Graphiques statistiques |
| Plaintes utilisateurs | Système de signalement |
Scénario: Levée suspension si fraude non confirmée
Étant donné que mon compte était suspendu pour suspicion de fraude
Quand l'enquête conclut qu'il n'y a pas eu de fraude
Alors ma monétisation est réactivée
Et les revenus suspendus pendant l'enquête sont versés normalement
Et je reçois un email d'excuses avec explication
Scénario: Suspension définitive si fraude confirmée
Étant donné que l'enquête confirme une fraude avérée
Quand l'équipe modération prend la décision
Alors ma monétisation est définitivement désactivée
Et mon solde en attente est gelé (non versé)
Et je peux recevoir un strike 4 (ban définitif du compte)
# ===== SUPPRESSION DÉFINITIVE =====
Scénario: Suppression définitive sur demande créateur
Étant donné que je veux arrêter définitivement la monétisation
Quand j'accède à "Paramètres > Monétisation > Supprimer définitivement"
Alors une confirmation stricte est demandée
Et je dois taper "SUPPRIMER" pour confirmer
Scénario: Solde versé sous 30 jours après suppression
Étant donné que je supprime définitivement ma monétisation
Et que mon solde en attente est 127.45
Quand la suppression est confirmée
Alors mon solde sera versé sous 30 jours
Et je reçois un dernier virement de clôture
Et mon e-wallet Mangopay est clôturé
Scénario: Suppression auto si inactivité 24 mois + solde <50€
Étant donné que je n'ai plus publié de contenu depuis 24 mois
Et que mon solde en attente est 12.30 (<50€)
Quand le processus de purge RGPD s'exécute
Alors ma monétisation est automatiquement supprimée
Et mon solde de 12.30€ est perdu (trop faible pour virement)
Et mes données KYC sont archivées puis supprimées selon la législation
Scénario: Email de préavis 60 jours avant purge RGPD
Étant donné que je suis inactif depuis 22 mois
Quand le système détecte l'inactivité
Alors je reçois un email:
"""
⚠️ Votre monétisation sera supprimée dans 60 jours
Vous n'avez pas publié de contenu depuis 22 mois.
Si vous restez inactif 2 mois de plus (24 mois total), votre monétisation sera automatiquement supprimée.
Solde actuel: 12.30€
Pour éviter la suppression, publiez un nouveau contenu ou contactez-nous.
"""
Scénario: Ban définitif compte - Strike 4
Étant donné que je reçois un 4ème strike (violation grave ou répétée)
Quand l'équipe modération applique le strike 4
Alors mon compte est banni définitivement
Et ma monétisation est supprimée définitivement
Et mon solde en attente est gelé (non versé)
Et je ne peux plus créer de nouveau compte (blacklist email/SIRET)
# ===== NOTIFICATIONS =====
Scénario: Email pour toute suspension
Étant donné que ma monétisation est suspendue (quelle qu'en soit la raison)
Quand la suspension devient effective
Alors je reçois immédiatement un email:
"""
⚠️ Monétisation RoadWave suspendue
Raison: [Raison explicite]
Que faire:
[Procédure de réactivation selon la raison]
Votre solde actuel sera conservé pendant la suspension.
Questions? Contactez support@roadwave.com
"""
Scénario: Notification in-app avec raison explicite
Étant donné que ma monétisation est suspendue
Quand je me connecte à l'application
Alors je vois une bannière en haut de mon dashboard:
```
⚠️ MONÉTISATION SUSPENDUE
Raison: 3 strikes actifs
Action requise: Résoudre les violations pour réactiver
[En savoir plus]
```
Scénario: Email de confirmation lors de réactivation
Étant donné que ma monétisation était suspendue
Quand elle est réactivée (automatiquement ou manuellement)
Alors je reçois un email:
"""
✅ Monétisation RoadWave réactivée
Votre monétisation a été réactivée avec succès.
Vous recommencez à générer des revenus dès maintenant.
Tableau de bord: [Lien]
"""
# ===== STATISTIQUES ET MONITORING =====
Scénario: Dashboard admin - Suspensions actives
Étant donné qu'un admin RoadWave consulte les suspensions
Quand il accède au dashboard admin "Monétisation > Suspensions"
Alors il voit:
| raison suspension | nombre actif | taux |
| Strikes (3+) | 23 | 1.8% |
| RIB invalide | 12 | 0.9% |
| Documents KYC expirés | 8 | 0.6% |
| Fraude sous enquête | 3 | 0.2% |
| TOTAL | 46 | 3.7% |
Scénario: Alertes si taux de suspension >5%
Étant donné que le taux de suspension dépasse 5%
Quand le système détecte cette anomalie
Alors une alerte est envoyée à l'équipe:
"""
Taux de suspension monétisation anormal: 5.8%
Causes principales:
- RIB invalides: 67 créateurs (3.2%)
- Documents expirés: 34 créateurs (1.6%)
- Strikes: 21 créateurs (1.0%)
Action recommandée: Campagne email de rappel mise à jour docs
"""
Scénario: Statistiques personnelles - Temps actif monétisation
Étant donné que j'accède à mon dashboard créateur
Quand je consulte "Statistiques > Monétisation"
Alors je vois:
| métrique | valeur |
| Date activation monétisation | 20 janvier 2025 |
| Temps actif total | 8 mois |
| Périodes de désactivation | 2 (3 mois total)|
| Suspensions subies | 0 |
| Statut actuel | Actif |
# ===== RGPD ET CONFORMITÉ =====
Scénario: Export données suspension (RGPD)
Étant donné que je demande l'export de mes données
Quand l'export est généré
Alors l'historique des suspensions est inclus:
```json
{
"monetization_history": [
{
"event": "suspension",
"reason": "3 active strikes",
"suspended_at": "2025-06-15T10:30:00Z",
"reactivated_at": "2025-07-01T14:20:00Z",
"duration_days": 16
},
{
"event": "voluntary_deactivation",
"deactivated_at": "2025-03-01T08:00:00Z",
"reactivated_at": "2025-06-15T10:00:00Z",
"duration_days": 106
}
]
}
```
Scénario: Suppression compte et données monétisation
Étant donné que je supprime définitivement mon compte RoadWave
Quand la suppression est confirmée
Alors toutes mes données de monétisation sont supprimées:
| donnée | action |
| Solde en attente | Versé sous 30 jours puis supprimé |
| Historique revenus | Archivé 10 ans (obligation légale) |
| Documents KYC | Archivés 10 ans chez Mangopay puis supprimés |
| E-wallet Mangopay | Clôturé après versement final |
Scénario: Conservation archives 10 ans obligation légale
Étant donné que je supprime mon compte
Quand mes données sont archivées
Alors RoadWave conserve 10 ans:
| donnée archivée | raison |
| Relevés mensuels PDF | Obligation comptable France |
| Déclarations DAS2 | Obligation fiscale France |
| Justificatifs virements | Preuve paiement en cas d'audit |
Et après 10 ans, tout est supprimé définitivement
# ===== CAS PARTICULIERS =====
Scénario: Suspension temporaire pour maintenance technique
Étant donné que Mangopay effectue une maintenance planifiée
Quand la maintenance est programmée
Alors tous les créateurs reçoivent un email préventif 7 jours avant:
"""
📅 Maintenance planifiée Mangopay
Date: 15 juin 2025, 02h00-06h00 (heure de Paris)
Impact: Les virements programmés ce jour seront reportés de 24h
Aucune action de votre part n'est requise.
Vos revenus seront versés normalement avec 1 jour de retard.
"""
Scénario: Réactivation progressive après incident majeur
Étant donné qu'un incident technique majeur suspend toutes les monétisations
Quand l'incident est résolu
Alors les réactivations se font progressivement:
| vague | critère | % créateurs |
| 1 | Top 10% créateurs (revenus) | 10% |
| 2 | Créateurs vérifiés | 30% |
| 3 | Tous les autres créateurs | 60% |
Et cela évite une surcharge système lors de la reprise
Scénario: Support prioritaire pour créateurs suspendus injustement
Étant donné que ma monétisation est suspendue
Et que je pense que c'est une erreur
Quand je contacte le support avec tag "Suspension monétisation"
Alors mon ticket est traité en priorité (SLA 24h)
Et un agent expert examine mon cas
Et si suspension injustifiée, je suis réactivé immédiatement avec excuses

View File

@@ -0,0 +1,293 @@
# language: fr
Fonctionnalité: KYC et inscription à la monétisation
En tant que créateur éligible
Je veux compléter le KYC pour activer la monétisation
Afin de recevoir des paiements légalement
Contexte:
Étant donné que je remplis tous les critères de monétisation
Et que j'ai cliqué sur "Demander la monétisation"
Scénario: Redirection vers formulaire KYC Mangopay
Quand je démarre le processus d'activation
Alors je suis redirigé vers un formulaire KYC
Et le formulaire est fourni par Mangopay (iframe sécurisée)
Et toutes les données sont chiffrées et hébergées en EU
Scénario: Statut auto-entrepreneur accepté
Étant donné que je suis auto-entrepreneur
Quand je renseigne mon statut juridique
Alors l'option "Auto-entrepreneur (micro-BNC)" est disponible
Et je peux continuer le processus
Scénario: Statut société SARL/SAS/SASU accepté
Étant donné que j'ai créé une société
Quand je renseigne mon statut juridique
Alors les options suivantes sont disponibles:
| statut juridique |
| SARL |
| SAS |
| SASU |
Et je peux continuer le processus
Scénario: Statut particulier refusé
Étant donné que je n'ai pas de statut professionnel
Quand j'essaie de m'inscrire en tant que "Particulier"
Alors le formulaire affiche:
"""
Un statut juridique professionnel est obligatoire pour la monétisation.
Créez un statut auto-entrepreneur sur autoentrepreneur.urssaf.fr (gratuit, 15 min).
"""
Et je ne peux pas continuer sans statut professionnel
Scénario: Document SIRET obligatoire et validé
Étant donné que je renseigne mon SIRET
Quand je saisis "12345678901234" (14 chiffres)
Alors le format est validé
Et Mangopay vérifie l'existence du SIRET auprès du répertoire SIRENE
Et si valide, le document est accepté
Scénario: SIRET invalide ou inexistant
Étant donné que je renseigne un SIRET inexistant
Quand je saisis "99999999999999"
Alors Mangopay rejette le SIRET
Et je vois "SIRET non trouvé dans le répertoire SIRENE. Vérifiez le numéro."
Et je dois corriger avant de continuer
Scénario: RIB professionnel obligatoire
Étant donné que j'upload mon RIB
Quand le RIB est scanné par Mangopay
Alors le système vérifie que le titulaire correspond à mon SIRET
Et que l'IBAN commence par "FR" (compte français)
Et si valide, le document est accepté
Scénario: RIB particulier refusé
Étant donné que j'upload un RIB de compte particulier
Quand Mangopay détecte que le compte n'est pas professionnel
Alors le RIB est rejeté
Et je vois:
"""
Le RIB doit correspondre à un compte professionnel lié à votre SIRET.
Créez un compte professionnel auprès de votre banque.
"""
Scénario: Pièce d'identité CNI en cours de validité
Étant donné que j'upload ma carte nationale d'identité
Quand Mangopay analyse le document
Alors la date d'expiration est vérifiée
Et si la CNI est valide, le document est accepté
Et mon identité est vérifiée par OCR + vérification manuelle
Scénario: Pièce d'identité expirée refusée
Étant donné que j'upload une CNI expirée depuis 2 ans
Quand Mangopay analyse le document
Alors le document est rejeté
Et je vois "Pièce d'identité expirée. Veuillez fournir un document en cours de validité."
Scénario: Passeport accepté comme alternative
Étant donné que je n'ai pas de CNI
Quand j'upload mon passeport en cours de validité
Alors Mangopay accepte le passeport
Et mon identité est vérifiée de la même manière
Scénario: Numéro TVA intracommunautaire si applicable
Étant donné que mon CA dépasse 37 000/an
Et que je suis sorti de la franchise en base
Quand je renseigne mon numéro TVA intracommunautaire
Alors le format "FR + 11 chiffres" est validé
Et Mangopay vérifie l'existence auprès de la Commission Européenne (VIES)
Scénario: TVA non applicable pour micro-BNC sous franchise
Étant donné que je suis auto-entrepreneur sous franchise en base
Et que mon CA est <37 000€/an
Quand je remplis le formulaire KYC
Alors le champ "Numéro TVA" est optionnel
Et je peux continuer sans TVA
Scénario: Kbis <3 mois pour sociétés
Étant donné que je suis gérant d'une SARL
Quand j'upload mon extrait Kbis
Alors Mangopay vérifie que le Kbis date de moins de 3 mois
Et que le SIRET correspond
Et si valide, le document est accepté
Scénario: Kbis trop ancien refusé
Étant donné que j'upload un Kbis de 5 mois
Quand Mangopay analyse le document
Alors le Kbis est rejeté
Et je vois "Le Kbis doit dater de moins de 3 mois. Téléchargez un extrait récent sur infogreffe.fr"
Scénario: Vérification identité ne correspond pas au compte
Étant donné que mon compte RoadWave est au nom de "Jean Dupont"
Mais que ma CNI est au nom de "Pierre Martin"
Quand Mangopay compare les identités
Alors le KYC est rejeté
Et je vois:
"""
L'identité sur votre pièce d'identité ne correspond pas à votre compte RoadWave.
Si vous avez changé de nom, veuillez contacter le support.
"""
Scénario: Liste noire anti-blanchiment détectée
Étant donné que mon identité apparaît sur une liste anti-blanchiment
Quand Mangopay effectue la vérification AML (Anti-Money Laundering)
Alors le KYC est automatiquement rejeté
Et je vois "Votre demande ne peut être acceptée pour des raisons de conformité légale"
Et mon compte créateur peut être suspendu
Scénario: Délai de vérification 24-72h si documents conformes
Étant donné que j'ai soumis tous les documents valides
Quand Mangopay traite ma demande
Alors je reçois un email "KYC en cours de vérification (24-72h)"
Et mon statut est "En attente de validation"
Et je peux continuer à publier des contenus en attendant
Scénario: Validation KYC réussie
Étant donné que mes documents sont conformes
Quand Mangopay valide mon KYC après 48h
Alors je reçois un email "Monétisation activée !"
Et mon statut passe à "Monétisé"
Et je commence à générer des revenus dès maintenant
Scénario: Rejet KYC pour documents invalides
Étant donné que j'ai soumis une CNI floue et illisible
Quand Mangopay analyse les documents
Alors le KYC est rejeté après 24h
Et je reçois un email détaillant les documents à refournir:
"""
Votre demande de monétisation a été rejetée pour les raisons suivantes:
- Carte d'identité illisible (photo floue)
Veuillez soumettre à nouveau des documents de meilleure qualité.
"""
Scénario: E-wallet Mangopay créé automatiquement
Étant donné que mon KYC est validé
Quand Mangopay finalise mon inscription
Alors un e-wallet Mangopay est créé automatiquement à mon nom
Et tous mes futurs revenus seront transférés vers ce wallet
Et les virements SEPA vers mon RIB seront effectués depuis ce wallet
Scénario: Conformité RGPD - Données hébergées EU
Étant donné que je fournis mes documents KYC
Quand Mangopay stocke mes données
Alors toutes les données sont hébergées en Union Européenne
Et Mangopay est régulé par l'ACPR (Autorité de Contrôle Prudentiel)
Et mes données sont protégées selon le RGPD
Scénario: KYC gratuit inclus dans Mangopay
Étant donné que je complète le KYC
Quand le processus se termine
Alors aucun frais ne m'est facturé (0€)
Et aucun frais n'est facturé à RoadWave (inclus dans l'offre Mangopay)
Contrairement à Stripe qui facture 1.20€ par KYC
Scénario: Base légale - Conformité fiscale française
Étant donné que RoadWave est une plateforme française
Quand je génère des revenus >1200/an
Alors RoadWave doit déclarer ces revenus aux impôts (DAS2)
Et le KYC permet de garantir l'identité réelle du bénéficiaire
Et cela respecte la réglementation fiscale française
Scénario: Base légale - Directive anti-blanchiment EU 2018/843
Étant donné que RoadWave verse de l'argent aux créateurs
Quand le KYC est effectué
Alors RoadWave respecte la 5ème directive anti-blanchiment EU
Et Mangopay effectue les vérifications requises (identité, liste noire, origine fonds)
Scénario: Notification de mise à jour documents expirés
Étant donné que ma CNI va expirer dans 30 jours
Quand le système détecte l'expiration proche
Alors je reçois un email:
"""
Votre pièce d'identité expire dans 30 jours.
Veuillez mettre à jour vos documents KYC pour éviter une suspension de la monétisation.
"""
Scénario: Suspension monétisation si documents expirés
Étant donné que ma CNI est expirée depuis 10 jours
Et que je n'ai pas mis à jour mes documents
Quand le système vérifie mon statut KYC
Alors ma monétisation est suspendue automatiquement
Et je ne génère plus de revenus jusqu'à mise à jour
Scénario: Réactivation sans nouveau KYC si données à jour
Étant donné que j'ai désactivé temporairement ma monétisation il y a 6 mois
Et que mes documents KYC sont toujours valides
Quand je réactive la monétisation
Alors je n'ai pas besoin de refaire le KYC
Et la réactivation est immédiate
Scénario: Nouveau KYC requis après 2 ans d'inactivité
Étant donné que j'ai désactivé ma monétisation il y a 25 mois
Quand j'essaie de réactiver
Alors le système demande un nouveau KYC
Et je dois soumettre des documents à jour (CNI peut avoir changé)
Scénario: Support créateur pour problèmes KYC
Étant donné que mon KYC est rejeté et je ne comprends pas pourquoi
Quand je contacte le support RoadWave
Alors un agent peut consulter les raisons du rejet Mangopay
Et m'aider à fournir les bons documents
Scénario: Export données KYC pour RGPD
Étant donné que je demande l'export de mes données personnelles
Quand l'export est généré
Alors les informations KYC sont incluses:
```json
{
"kyc_status": "validated",
"legal_status": "Auto-entrepreneur",
"siret": "12345678901234",
"iban": "FR76 XXXX XXXX XXXX",
"validated_at": "2025-06-20T14:30:00Z"
}
```
Et les documents scannés (CNI, RIB) sont exclus pour sécurité
Scénario: Suppression compte et données KYC
Étant donné que je supprime définitivement mon compte RoadWave
Quand la suppression est confirmée
Alors mes données KYC chez Mangopay sont archivées 10 ans (obligation légale)
Mais supprimées de la base RoadWave immédiatement
Et mon e-wallet est clôturé après versement du solde final
Scénario: Statistiques KYC pour monitoring plateforme
Étant donné que RoadWave suit la qualité du processus KYC
Quand un admin consulte les métriques
Alors il voit:
| métrique | valeur exemple |
| Demandes KYC ce mois | 247 |
| Taux de validation | 87% |
| Délai moyen validation | 36h |
| Taux de rejet (documents invalides)| 13% |
Et cela permet d'optimiser le processus
Scénario: Vérification SIRET via API INSEE
Étant donné que je saisis mon SIRET
Quand le système le valide
Alors une requête est faite à l'API SIRENE de l'INSEE
Et le système vérifie que le SIRET existe et est actif
Et récupère le nom de l'entreprise pour pré-remplir le formulaire
Scénario: Détection fraude - Même SIRET utilisé par plusieurs comptes
Étant donné qu'un SIRET "12345678901234" est déjà utilisé par un autre créateur
Quand j'essaie d'utiliser le même SIRET
Alors le système détecte la duplication
Et affiche "Ce SIRET est déjà utilisé par un autre compte RoadWave"
Et je dois contacter le support si c'est une erreur
Scénario: Protection données sensibles - Logs chiffrés
Étant donné que des données KYC sensibles transitent dans le système
Quand les logs sont enregistrés
Alors les numéros SIRET, IBAN et données CNI sont masqués:
"""
[2025-06-20 14:30:00] KYC submitted: creator_id=abc123, siret=1234****1234, iban=FR76****
"""
Et seule l'équipe sécurité peut accéder aux données complètes
Scénario: Backup Mangopay des documents KYC
Étant donné que mes documents KYC sont stockés chez Mangopay
Quand un audit est demandé par les autorités
Alors Mangopay peut fournir les documents originaux
Et RoadWave n'a pas besoin de stocker ces documents (réduction risque RGPD)

View File

@@ -0,0 +1,321 @@
# language: fr
Fonctionnalité: Obligations fiscales
En tant que créateur monétisé
Je veux que RoadWave génère automatiquement les documents fiscaux requis
Afin de faciliter ma comptabilité et respecter la loi
Contexte:
Étant donné que je suis un créateur avec la monétisation activée
Et que je génère des revenus sur RoadWave
# ===== RELEVÉ MENSUEL PDF =====
Scénario: Génération automatique relevé mensuel PDF
Étant donné que le mois de janvier se termine
Quand le système calcule mes revenus du mois
Alors un relevé mensuel PDF est généré automatiquement
Et le PDF est disponible dans mon tableau de bord
Scénario: Contenu du relevé mensuel PDF
Étant donné que mon relevé de janvier est généré
Quand je télécharge le PDF
Alors le document contient:
```
RELEVÉ MENSUEL ROADWAVE
Période: Janvier 2025
CRÉATEUR
Nom: Jean Dupont
SIRET: 12345678901234
Statut: Auto-entrepreneur
REVENUS DU MOIS
Revenus publicitaires: 89.50
Revenus abonnés Premium: 60.50
TOTAL REVENUS: 150.00
DÉTAILS
Écoutes complètes (gratuit): 29,833
Heures d'écoute Premium: 287h
Abonnés Premium actifs: 47
PAIEMENT
Statut: Validé
Date de paiement: 15 février 2025
Référence virement: MANGOPAY-ABC123
Document généré automatiquement par RoadWave
En cas de question: support@roadwave.com
```
Scénario: Téléchargement relevé depuis tableau de bord
Étant donné que je suis sur mon tableau de bord créateur
Quand j'accède à l'onglet "Revenus > Historique"
Alors je vois la liste de mes relevés mensuels:
| mois | montant | actions |
| Janvier 2025 | 150.00 | 📄 Télécharger PDF |
| Décembre 2024| 123.50 | 📄 Télécharger PDF |
| Novembre 2024| 98.75 | 📄 Télécharger PDF |
Scénario: Conservation relevés accessibles 10 ans
Étant donné que j'ai commencé la monétisation en janvier 2025
Quand je consulte mes relevés en janvier 2035 (10 ans plus tard)
Alors tous les relevés depuis 2025 sont toujours accessibles
Et je peux télécharger n'importe quel relevé historique
Et cela respecte l'obligation de conservation comptable de 10 ans
# ===== EXPORT CSV COMPTABLE =====
Scénario: Export CSV à la demande
Étant donné que je clique sur "Exporter pour comptable"
Quand je choisis la période "Année 2025"
Alors un fichier CSV est généré et téléchargé
Scénario: Contenu export CSV détaillé
Étant donné que j'exporte mes données comptables 2025
Quand je télécharge le fichier CSV
Alors le fichier contient:
```csv
Mois,Revenus Pub,Revenus Premium,Total,Référence Virement,Statut,Date Paiement
2025-01,89.50,60.50,150.00,MANGOPAY-ABC123,Payé,2025-02-15
2025-02,78.30,45.20,123.50,MANGOPAY-XYZ789,Payé,2025-03-15
2025-03,67.25,31.50,98.75,MANGOPAY-DEF456,Payé,2025-04-15
2025-04,45.80,28.90,74.70,MANGOPAY-GHI123,Payé,2025-05-15
2025-05,56.40,35.60,92.00,MANGOPAY-JKL456,Payé,2025-06-15
2025-06,89.20,67.80,157.00,MANGOPAY-MNO789,Payé,2025-07-15
2025-07,91.00,72.50,163.50,MANGOPAY-PQR012,Payé,2025-08-15
2025-08,87.60,58.40,146.00,MANGOPAY-STU345,Payé,2025-09-15
2025-09,102.30,81.70,184.00,MANGOPAY-VWX678,Payé,2025-10-15
2025-10,94.50,69.50,164.00,MANGOPAY-YZA901,Payé,2025-11-15
2025-11,88.40,64.60,153.00,MANGOPAY-BCD234,Payé,2025-12-15
2025-12,98.70,75.30,174.00,MANGOPAY-EFG567,En attente,2026-01-15
```
Scénario: Transmission à l'expert-comptable
Étant donné que j'ai téléchargé mon export CSV 2025
Quand je l'envoie à mon expert-comptable
Alors il peut importer le fichier dans son logiciel comptable
Et il saisit rapidement mes revenus RoadWave
Et cela facilite ma déclaration fiscale annuelle
# ===== DAS2 ANNUEL =====
Scénario: DAS2 généré automatiquement si revenus >1200€/an
Étant donné que mes revenus 2025 totalisent 2,450
Quand l'année 2025 se termine
Alors RoadWave génère automatiquement une DAS2 pour les impôts
Et la DAS2 est transmise à la DGFIP en janvier 2026
Scénario: Contenu de la DAS2
Étant donné que RoadWave génère ma DAS2 pour 2025
Quand la DGFIP reçoit la déclaration
Alors le document contient:
```
Déclarant: RoadWave SAS
SIRET RoadWave: 98765432100000
Bénéficiaire: Jean Dupont
SIRET bénéficiaire: 12345678901234
Année: 2025
Honoraires versés: 2,450.00
Catégorie: BNC (Bénéfices Non Commerciaux)
```
Scénario: Créateur reçoit une copie de la DAS2
Étant donné que RoadWave transmet ma DAS2 aux impôts
Quand la transmission est confirmée
Alors je reçois un email avec une copie de la DAS2 en pièce jointe
Et je peux consulter le document dans mon tableau de bord
Scénario: Pas de DAS2 si revenus <1200€/an
Étant donné que mes revenus 2025 totalisent seulement 890
Quand l'année 2025 se termine
Alors aucune DAS2 n'est générée car le seuil de 1200 n'est pas atteint
Mais je dois quand même déclarer mes revenus dans ma déclaration personnelle
Scénario: Base légale DAS2 - Obligation France
Étant donné que RoadWave verse des honoraires à des prestataires
Quand les revenus dépassent 1200/an
Alors la déclaration DAS2 est obligatoire selon l'article 87 du Code Général des Impôts
Et le non-respect entraîne une amende de 15 par bénéficiaire non déclaré
Scénario: Transmission DAS2 via EDI-TDFC
Étant donné que RoadWave génère 1,247 DAS2 pour l'année 2025
Quand la transmission aux impôts est effectuée
Alors la transmission se fait via le portail EDI-TDFC de la DGFIP
Et la transmission est automatisée (pas de saisie manuelle)
Et un accusé de réception est reçu sous 48h
# ===== RESPONSABILITÉS CRÉATEUR =====
Scénario: Créateur responsable de déclarer aux impôts
Étant donné que j'ai reçu 2,450 de revenus RoadWave en 2025
Quand je fais ma déclaration fiscale en mai 2026
Alors je dois déclarer ces 2,450 dans ma déclaration annuelle
Et si je suis auto-entrepreneur, je déclare en BNC (Bénéfices Non Commerciaux)
Scénario: Créateur responsable des cotisations URSSAF
Étant donné que je suis auto-entrepreneur
Et que j'ai reçu 2,450 de revenus RoadWave en 2025
Quand je fais ma déclaration URSSAF trimestrielle
Alors je dois déclarer ces revenus à l'URSSAF
Et je paie ~22% de cotisations sociales (soit ~539)
Scénario: TVA non applicable en franchise en base
Étant donné que je suis auto-entrepreneur en micro-BNC
Et que mon chiffre d'affaires est <37,800€/an
Quand je génère des revenus sur RoadWave
Alors je bénéficie de la franchise en base de TVA
Et je ne facture pas de TVA à RoadWave
Et je ne récupère pas la TVA sur mes achats
Scénario: TVA applicable si CA >37,800/an
Étant donné que mon chiffre d'affaires total 2025 est 45,000
Quand je dépasse le seuil de franchise en base (37,800)
Alors je dois facturer de la TVA (20%) à RoadWave
Et je dois obtenir un numéro TVA intracommunautaire
Et je dois déclarer ma TVA mensuellement ou trimestriellement
Scénario: Conservation justificatifs 10 ans - Obligation légale
Étant donné que je génère des revenus sur RoadWave
Quand je télécharge mes relevés mensuels et exports CSV
Alors je dois les conserver 10 ans (obligation comptable France)
Et en cas de contrôle fiscal, je dois pouvoir les fournir
# ===== MANGOPAY ET CONFORMITÉ EU =====
Scénario: Mangopay transmet automatiquement via DAC7
Étant donné que je suis créateur monétisé sur RoadWave
Quand l'année se termine
Alors Mangopay transmet automatiquement mes revenus aux autorités fiscales EU
Et cela respecte la directive DAC7 (2021/514) sur la transparence fiscale des plateformes
Scénario: Directive DAC7 - Obligations plateforme
Étant donné que RoadWave est une plateforme facilitant des transactions
Quand Mangopay gère les paiements
Alors Mangopay transmet automatiquement:
| information | destinataire |
| Identité créateur (SIRET) | Autorités fiscales pays EU |
| Revenus annuels | Autorités fiscales pays EU |
| Nombre transactions | Autorités fiscales pays EU |
Et RoadWave n'a pas besoin de faire cette transmission manuellement
Scénario: Justificatif virement = Preuve bancaire comptable
Étant donné que je reçois un virement de 150.00 de Mangopay
Quand je consulte mon relevé bancaire
Alors je vois le virement avec la référence MANGOPAY-ABC123
Et ce relevé bancaire sert de justificatif comptable
Et je peux le fournir à mon expert-comptable ou aux impôts
# ===== NOTIFICATIONS ET RAPPELS =====
Scénario: Notification annuelle rappel déclaration fiscale
Étant donné que je suis créateur monétisé
Quand le mois d'avril 2026 arrive (période déclaration impôts France)
Alors je reçois un email de rappel:
"""
📋 Rappel: Déclaration fiscale 2025
N'oubliez pas de déclarer vos revenus RoadWave 2025 dans votre déclaration annuelle.
Revenus RoadWave 2025: 2,450.00
Documents disponibles:
- Récapitulatif annuel PDF
- Export CSV pour comptable
- Copie DAS2 (transmise aux impôts)
Téléchargez vos documents: [Lien dashboard]
Besoin d'aide? Contactez votre expert-comptable ou nos ressources fiscales.
"""
Scénario: Page ressources fiscales pour créateurs
Étant donné que je suis créateur monétisé
Quand j'accède à "Aide > Fiscalité"
Alors je vois une page avec:
| ressource | description |
| Guide auto-entrepreneur RoadWave | PDF expliquant démarches et déclarations |
| FAQ fiscalité | Questions fréquentes sur TVA, cotisations, etc.|
| Liens URSSAF et impots.gouv.fr | Portails officiels |
| Contact expert-comptable partenaire | Recommandations d'experts connaissant RoadWave |
Scénario: Dashboard créateur - Récapitulatif annuel
Étant donné que je consulte mon dashboard en décembre 2025
Quand j'accède à "Revenus > Récapitulatif annuel"
Alors je vois:
```
===== RÉCAPITULATIF 2025 =====
Revenus totaux: 2,450.00
- Revenus publicitaires: 1,234.00 (50%)
- Revenus Premium: 1,216.00 (50%)
Paiements reçus: 12
Mois le plus rentable: Septembre (184.00)
À faire pour votre déclaration:
Télécharger export CSV comptable
Télécharger copie DAS2
Déclarer aux impôts (avant mai 2026)
Déclarer à l'URSSAF (trimestriel)
```
# ===== AUTOMATISATION ET SÉCURITÉ =====
Scénario: Génération automatique minimise erreurs
Étant donné que tous les documents fiscaux sont générés automatiquement
Quand un créateur télécharge ses documents
Alors les montants sont garantis corrects (issus de la base de données)
Et il n'y a pas d'erreur de saisie manuelle
Et cela réduit les risques de contrôle fiscal
Scénario: Conformité RGPD - Données fiscales chiffrées
Étant donné que les documents fiscaux contiennent des données sensibles (SIRET, revenus)
Quand les documents sont stockés
Alors ils sont chiffrés au repos (encryption AES-256)
Et seul le créateur et les admins autorisés peuvent y accéder
Et les logs d'accès sont conservés pour audit
Scénario: Backup documents fiscaux 10 ans
Étant donné qu'un document fiscal est généré
Quand il est stocké dans la base de données
Alors une copie est sauvegardée sur S3 (stockage durable)
Et les backups sont répliqués sur 3 zones de disponibilité
Et la conservation est garantie 10 ans minimum
Scénario: Audit trail génération DAS2
Étant donné que 1,247 DAS2 sont générées en janvier 2026
Quand un audit est demandé
Alors tous les événements sont loggés:
| événement | timestamp | détails |
| Calcul revenus annuels | 2025-12-31 23:59:00 | 1,247 créateurs éligibles |
| Génération fichier EDI | 2026-01-10 08:00:00 | Format EDI-TDFC |
| Transmission DGFIP | 2026-01-10 10:30:00 | Via portail EDI-TDFC |
| Accusé réception DGFIP | 2026-01-11 14:20:00 | Transmission confirmée |
| Email créateurs | 2026-01-11 16:00:00 | 1,247 emails envoyés |
Scénario: Statistiques admin - Conformité fiscale
Étant donné qu'un admin RoadWave consulte les métriques fiscales
Quand il accède au dashboard admin
Alors il voit:
| métrique | valeur 2025 |
| Créateurs monétisés | 1,247 |
| Créateurs éligibles DAS2 (>1200) | 847 (68%) |
| Revenus totaux versés | 1,890,345 |
| DAS2 transmises à la DGFIP | 847 |
| Taux conformité | 100% |
Scénario: Support créateur pour questions fiscales
Étant donné que j'ai une question sur ma déclaration fiscale
Quand je contacte le support RoadWave
Alors l'agent peut consulter mes documents fiscaux
Et m'aider à comprendre ce que je dois déclarer
Mais il ne peut pas me conseiller fiscalement (pas expert-comptable)
Et il me recommande de consulter un expert-comptable si nécessaire

View File

@@ -0,0 +1,308 @@
# language: fr
Fonctionnalité: Paiement des créateurs
En tant que créateur monétisé
Je veux recevoir mes paiements mensuels de manière fiable
Afin d'être rémunéré pour mon travail
Contexte:
Étant donné que je suis un créateur avec la monétisation activée
Et que mon KYC est validé
Scénario: Seuil minimum de 50€ atteint - Paiement effectué
Étant donné que mes revenus du mois sont 73.45
Quand le dernier jour du mois arrive
Alors mon solde de 73.45 est transféré vers "en attente de paiement"
Et le paiement sera effectué le 15 du mois prochain
Scénario: Seuil minimum de 50€ non atteint - Report mois suivant
Étant donné que mes revenus du mois sont 32.17
Quand le dernier jour du mois arrive
Alors mon solde de 32.17 est reporté au mois suivant
Et je vois "Solde insuffisant pour paiement (<50€). Report mois prochain."
Scénario: Cumul sur plusieurs mois jusqu'à atteindre 50€
Étant donné que mes revenus sont:
| mois | revenus | solde cumulé |
| Janvier | 18.50€ | 18.50€ |
| Février | 22.30€ | 40.80€ |
| Mars | 15.70€ | 56.50€ |
Quand la fin du mois de mars arrive
Alors le solde cumulé de 56.50€ dépasse les 50€
Et un paiement de 56.50€ est effectué le 15 avril
Scénario: Calcul des revenus le dernier jour du mois
Étant donné que nous sommes le 31 janvier à 23h59
Quand le système calcule les revenus du mois
Alors une requête SQL agrège tous les revenus pub et premium
Et le solde final du mois est figé dans monthly_revenues
Et le compteur du mois en cours repart à 0€ le 1er février
Scénario: Période de traitement contestations 1-14 du mois
Étant donné que mes revenus de janvier sont calculés à 150.00€
Quand la période du 1-14 février arrive
Alors RoadWave analyse les éventuelles fraudes ou contestations
Et si une fraude est détectée, les revenus concernés sont retirés du solde
Et le solde final est validé le 14 février
Scénario: Virement SEPA le 15 du mois suivant
Étant donné que mes revenus de janvier validés sont 150.00€
Quand le 15 février arrive
Alors Mangopay initie un virement SEPA depuis mon e-wallet vers mon RIB
Et le statut du paiement passe à "En cours"
Scénario: Réception virement 16-18 du mois (1-3 jours SEPA)
Étant donné qu'un virement SEPA a été initié le 15 février
Quand 1-3 jours ouvrés s'écoulent
Alors je reçois le virement sur mon compte bancaire entre le 16 et 18 février
Et je peux consulter l'historique des paiements dans mon dashboard
Scénario: Virement SEPA gratuit pour comptes EU
Étant donné que mon RIB est français (IBAN FR)
Quand Mangopay effectue le virement
Alors aucun frais n'est prélevé (virement SEPA gratuit)
Et je reçois 100% du montant annoncé
Scénario: Virement international hors EU avec frais variables
Étant donné que je suis créateur expatrié avec RIB hors Union Européenne
Quand Mangopay effectue le virement international
Alors des frais variables s'appliquent selon le pays
Et les frais sont déduits du montant final
Et je vois le détail des frais dans mon historique
Scénario: E-wallet Mangopay automatique
Étant donné que mon KYC est validé
Quand mes revenus sont calculés
Alors les revenus sont automatiquement transférés vers mon e-wallet Mangopay
Et l'e-wallet est débité lors du virement SEPA vers mon RIB
Et je n'ai aucune action manuelle à faire
Scénario: Tableau de bord - Revenus pub temps réel
Étant donné que j'accède à mon tableau de bord créateur
Quand je consulte l'onglet "Revenus"
Alors je vois:
| métrique | valeur exemple |
| Revenus pub ce mois | 123.45€ |
| Revenus premium ce mois | 67.89€ |
| Solde disponible ce mois | 191.34€ |
| Prochain paiement | 15 mars 2025 |
Et ces valeurs sont mises à jour en temps réel (cache Redis, refresh 10 min)
Scénario: Tableau de bord - Solde en attente de paiement
Étant donné que mes revenus de janvier sont calculés et validés
Et que nous sommes le 10 février
Quand je consulte mon tableau de bord
Alors je vois:
| métrique | valeur exemple |
| Solde en attente | 150.00€ |
| Date de paiement | 15 février 2025 |
| Statut | En attente |
Scénario: Historique des virements permanents
Étant donné que je suis monétisé depuis 6 mois
Quand je consulte l'historique des paiements
Alors je vois la liste complète:
| date paiement | montant | statut | référence virement |
| 15/02/2025 | 150.00€ | Payé | MANGOPAY-ABC123 |
| 15/01/2025 | 123.50€ | Payé | MANGOPAY-XYZ789 |
| 15/12/2024 | 98.75€ | Payé | MANGOPAY-DEF456 |
| ... | ... | ... | ... |
Scénario: Export comptable CSV téléchargeable
Étant donné que je clique sur "Télécharger export comptable"
Quand le fichier CSV est généré
Alors je télécharge un fichier contenant:
```csv
Date,Revenus Pub,Revenus Premium,Total,Référence Virement,Statut
2025-02-15,89.50,60.50,150.00,MANGOPAY-ABC123,Payé
2025-01-15,78.30,45.20,123.50,MANGOPAY-XYZ789,Payé
2024-12-15,67.25,31.50,98.75,MANGOPAY-DEF456,Payé
```
Et je peux transmettre ce fichier à mon expert-comptable
Scénario: Échec virement - Tentative 1 échouée
Étant donné qu'un virement est initié le 15 février
Mais que mon RIB est invalide ou le compte est fermé
Quand Mangopay détecte l'échec
Alors le statut passe à "Échec - Retry programmé le 18 février"
Et je reçois un email m'alertant du problème
Scénario: Échec virement - Retry automatique J+3
Étant donné que le virement du 15 février a échoué
Quand le 18 février arrive (J+3)
Alors Mangopay tente automatiquement un nouveau virement
Et si le RIB est toujours invalide, le virement échoue à nouveau
Scénario: Échec virement - Retry automatique J+7
Étant donné que les 2 premières tentatives ont échoué
Quand le 22 février arrive (J+7)
Alors Mangopay tente une 3ème et dernière fois
Et si le virement échoue encore, la monétisation est suspendue
Scénario: Échec virement - Suspension monétisation après 3 échecs
Étant donné que les 3 tentatives de virement ont échoué
Quand le système détecte le 3ème échec
Alors ma monétisation est suspendue automatiquement
Et je reçois un email:
"""
Votre monétisation a été suspendue après 3 échecs de virement.
Veuillez mettre à jour votre RIB dans les paramètres de monétisation.
Votre solde de 150.00€ sera versé dès que le RIB sera valide.
"""
Scénario: Mise à jour RIB et réactivation paiement
Étant donné que ma monétisation est suspendue pour RIB invalide
Et que mon solde en attente est 150.00€
Quand je mets à jour mon RIB avec un compte valide
Alors Mangopay tente immédiatement un nouveau virement
Et si le virement réussit, ma monétisation est réactivée automatiquement
Scénario: Notification email lors de chaque paiement
Étant donné qu'un virement de 150.00€ est effectué le 15 février
Quand le virement est confirmé par Mangopay
Alors je reçois un email:
"""
💰 Paiement RoadWave effectué
Montant: 150.00€
Date: 15 février 2025
Référence: MANGOPAY-ABC123
Compte bancaire: FR76 **** **** **** **89
Ce virement devrait arriver sur votre compte sous 1-3 jours ouvrés.
Détails dans votre tableau de bord créateur.
"""
Scénario: Justification seuil 50€ - Éviter frais bancaires micro-sommes
Étant donné que Mangopay facture des frais fixes par virement
Et que les banques peuvent facturer des frais de réception
Quand un créateur génère seulement 5€/mois
Alors un virement mensuel coûterait proportionnellement trop cher
Et le seuil de 50€ garantit des frais proportionnels raisonnables
Scénario: Comparaison avec YouTube (seuil 100$)
Étant donné que YouTube fixe le seuil à 100$ (~90€)
Quand RoadWave fixe le seuil à 50€
Alors RoadWave est plus accessible pour petits créateurs
Et les paiements arrivent plus rapidement
Scénario: Comparaison avec Twitch (seuil 50$)
Étant donné que Twitch fixe le seuil à 50$ (~45€)
Quand RoadWave fixe le seuil à 50€
Alors le seuil est aligné sur Twitch
Et les créateurs comprennent facilement le système
Scénario: Comparaison avec Spotify (seuil 10€ mais délais longs)
Étant donné que Spotify a un seuil bas de 10€ mais verse tous les 3 mois
Quand RoadWave a un seuil de 50€ mais verse chaque mois
Alors les créateurs reçoivent leurs paiements plus régulièrement
Et la trésorerie est plus prévisible
Scénario: Relevé mensuel PDF automatique
Étant donné que mes revenus de janvier sont calculés
Quand le 1er février arrive
Alors un relevé mensuel PDF est généré automatiquement:
```
===== RELEVÉ ROADWAVE - JANVIER 2025 =====
Créateur: Jean Dupont
SIRET: 12345678901234
Revenus publicitaires: 89.50€
Revenus Premium: 60.50€
─────────────────────────────────
TOTAL: 150.00€
Écoutes complètes (gratuit): 29,833
Abonnés Premium actifs: 47
Paiement prévu: 15 février 2025
```
Et le PDF est téléchargeable depuis mon tableau de bord
Scénario: Conservation relevés 10 ans (obligation comptable)
Étant donné que je génère des revenus sur RoadWave
Quand je télécharge mes relevés mensuels
Alors je dois les conserver 10 ans (obligation légale France)
Et RoadWave conserve également une copie pendant 10 ans pour audit
Scénario: Dashboard admin - Monitoring paiements
Étant donné qu'un admin RoadWave consulte les paiements du mois
Quand il accède au dashboard admin
Alors il voit:
| métrique | valeur exemple |
| Créateurs payés ce mois | 1,247 |
| Montant total versé | 127,345€ |
| Paiements en attente | 34 |
| Échecs virements | 3 |
| Délai moyen réception (jours) | 1.8 |
Scénario: Alerte admin si taux échec >5%
Étant donné que 8% des virements du mois ont échoué
Quand le système détecte le taux d'échec élevé
Alors une alerte est envoyée à l'équipe technique:
"""
Taux d'échec virements anormal: 8% (seuil: 5%)
Nombre échecs: 102 / 1,247 virements
Causes principales:
- RIB invalides: 67
- Comptes fermés: 23
- Autres erreurs: 12
"""
Scénario: Statistiques personnelles - Moyenne revenus sur 6 mois
Étant donné que je suis monétisé depuis 6 mois
Quand je consulte mes statistiques
Alors je vois:
| métrique | valeur |
| Revenus moyens/mois | 134.50 |
| Meilleur mois | 189.00 |
| Mois le plus bas | 87.30 |
| Tendance | +12% |
Et cela m'aide à suivre ma progression
Scénario: Projection revenus annuels
Étant donné que mes revenus moyens sont 134.50/mois
Quand je consulte les projections
Alors le système estime mes revenus annuels à ~1,614
Et je peux anticiper mes déclarations fiscales
Scénario: Notification seuil symbolique 1000 cumulés
Étant donné que mes revenus cumulés depuis inscription atteignent 1000
Quand le paiement qui franchit ce seuil est effectué
Alors je reçois une notification:
"""
🎉 Félicitations ! Vous venez de dépasser 1000 de revenus cumulés sur RoadWave !
Merci de contribuer à la plateforme avec votre contenu de qualité.
"""
Scénario: Performance calcul avec 100 000 créateurs monétisés
Étant donné que RoadWave a 100 000 créateurs monétisés
Quand le calcul des paiements du 15 du mois est lancé
Alors un job asynchrone traite les paiements par batch de 1000
Et tous les virements sont initiés en 2-4 heures
Et les serveurs Mangopay gèrent la charge sans problème
Scénario: Backup des données de paiement
Étant donné que les paiements sont critiques pour les créateurs
Quand un paiement est effectué
Alors les données sont sauvegardées dans PostgreSQL (principal)
Et répliquées vers une base de backup (replica)
Et une copie d'archive est stockée sur S3 (conservation 10 ans)
Scénario: Audit trail complet des paiements
Étant donné qu'un paiement est initié, traité et complété
Quand un audit est demandé
Alors tous les événements sont loggés:
| événement | timestamp | détails |
| Calcul revenus mois | 2025-01-31 23:59:00 | Montant: 150.00 |
| Validation période fraude | 2025-02-14 23:59:00 | Aucune fraude détectée |
| Initiation virement | 2025-02-15 09:00:00 | Mangopay ref: ABC123 |
| Confirmation virement | 2025-02-16 14:30:00 | Reçu par banque créateur |
Et ces logs sont conservés 10 ans pour conformité
Scénario: Protection fraude - Détection pattern suspect
Étant donné qu'un créateur génère subitement 10 000 de revenus en 1 mois
Alors que sa moyenne est de 50/mois
Quand le système détecte cette anomalie
Alors le paiement est mis en attente pour vérification manuelle
Et l'équipe modération analyse le compte avant validation

View File

@@ -0,0 +1,307 @@
# language: fr
Fonctionnalité: Sources de revenus créateurs
En tant que créateur monétisé
Je veux générer des revenus via publicités et abonnés Premium
Afin d'être rémunéré pour mon travail
Contexte:
Étant donné que je suis un créateur avec la monétisation activée
Et que mon KYC est validé
# ===== PUBLICITÉS (UTILISATEURS GRATUITS) =====
Scénario: CPM créateur de 3€ / 1000 écoutes complètes
Étant donné que mes contenus ont généré 1000 écoutes complètes par des utilisateurs gratuits
Quand le calcul des revenus du mois est effectué
Alors je touche 3.00 pour ces 1000 écoutes
Et ce montant est ajouté à mon solde disponible
Scénario: 10 000 écoutes gratuits → 30€ de revenus pub
Étant donné que mes contenus ont généré 10 000 écoutes complètes (utilisateurs gratuits)
Quand le mois se termine
Alors je touche 30.00 de revenus publicitaires
Et ces revenus sont visibles en temps réel dans mon tableau de bord
Scénario: 50 000 écoutes gratuits → 150€ de revenus pub
Étant donné que mes contenus ont généré 50 000 écoutes complètes (utilisateurs gratuits)
Quand le mois se termine
Alors je touche 150.00 de revenus publicitaires
Scénario: 100 000 écoutes gratuits → 300€ de revenus pub
Étant donné que mes contenus ont généré 100 000 écoutes complètes (utilisateurs gratuits)
Quand le mois se termine
Alors je touche 300.00 de revenus publicitaires
Scénario: Répartition économique - Plateforme garde 94%
Étant donné qu'une publicité facturée 0.05/écoute génère 50 CPM
Quand la plateforme calcule la répartition
Alors le créateur touche 3 (6% du CA pub)
Et la plateforme garde 47 (94%) pour:
| poste budgétaire | coût estimé |
| CDN + infrastructure | 10-15 |
| Modération + support | 5-10 |
| Développement + R&D | 10-15 |
| Marge opérationnelle | 10-15 |
Scénario: Écoute complète = ≥80% du contenu écouté
Étant donné qu'un utilisateur gratuit écoute mon contenu de 10 minutes
Quand il écoute 8 minutes (80%)
Alors l'écoute compte comme "complète"
Et je génère 0.003 de revenus pub (3/1000)
Scénario: Écoute incomplète <80% ne compte pas
Étant donné qu'un utilisateur gratuit écoute mon contenu de 10 minutes
Mais il skip après 5 minutes (50%)
Quand le calcul des revenus est effectué
Alors cette écoute ne compte pas comme "complète"
Et je ne génère aucun revenu publicitaire pour cette écoute
Scénario: Écoutes Premium ne comptent pas pour les revenus pub
Étant donné qu'un utilisateur Premium écoute 100% de mon contenu
Quand le calcul des revenus publicitaires est effectué
Alors cette écoute ne compte pas dans les revenus pub
Car les utilisateurs Premium ne voient pas de publicités
Mais elle compte dans les revenus Premium (système séparé)
Scénario: Détection bots - Écoutes exclues
Étant donné qu'un bot génère 10 000 écoutes artificielles sur mes contenus
Quand le système détecte le pattern suspect (rate limiting, IP unique, etc.)
Alors ces écoutes sont marquées comme frauduleuses
Et elles sont exclues du calcul des revenus publicitaires
Scénario: Comparaison avec YouTube (3-5€/1000 vues)
Étant donné que YouTube paie 3-5/1000 vues
Quand RoadWave fixe le CPM créateur à 3/1000 écoutes
Alors le tarif est aligné sur le bas de la fourchette YouTube
Et cela est compétitif pour un MVP sans marché publicitaire mature
Scénario: Comparaison avec Spotify (3-4€/1000 écoutes)
Étant donné que Spotify paie ~3-4/1000 écoutes
Quand RoadWave fixe le CPM créateur à 3/1000 écoutes
Alors le tarif est aligné sur l'industrie musicale
Et les créateurs audio peuvent anticiper des revenus similaires
Scénario: Tableau de bord - Revenus pub temps réel
Étant donné que j'accède à mon tableau de bord créateur
Quand je consulte mes revenus publicitaires
Alors je vois:
| métrique | valeur exemple |
| Écoutes complètes ce mois (gratuit)| 23 456 |
| Revenus pub ce mois | 70.37 |
| CPM effectif | 3.00 |
Et ces valeurs sont mises à jour toutes les 10 minutes
# ===== ABONNÉS PREMIUM =====
Scénario: Répartition 70/30 - Créateur touche 70%
Étant donné qu'un utilisateur Premium paie 4.99/mois
Quand la répartition est calculée
Alors 3.49 sont reversés aux créateurs écoutés (70%)
Et 1.50 sont gardés par la plateforme (30%)
Scénario: Utilisateur écoute 3 créateurs - Répartition proportionnelle
Étant donné qu'un utilisateur Premium paie 4.99/mois
Et qu'il écoute 3 créateurs ce mois:
| créateur | temps écoute | ratio |
| Créateur A | 10h | 50% |
| Créateur B | 6h | 30% |
| Créateur C | 4h | 20% |
Quand le calcul des revenus Premium est effectué
Alors la répartition est:
| créateur | revenus |
| Créateur A | 1.75 |
| Créateur B | 1.05 |
| Créateur C | 0.70 |
Et la somme totale versée aux créateurs est 3.50 (70% de 4.99)
Scénario: Calcul SQL proportionnel au temps d'écoute
Étant donné qu'un utilisateur Premium a écouté plusieurs créateurs
Quand le système calcule les revenus du mois
Alors la requête SQL suivante est exécutée:
```sql
SELECT
creator_id,
SUM(listen_duration_seconds) AS total_seconds,
(SUM(listen_duration_seconds) / (SELECT SUM(listen_duration_seconds) FROM premium_listens WHERE user_id = :user_id AND month = :current_month)) AS ratio,
(4.99 * 0.70 * ratio) AS revenue_euros
FROM premium_listens
WHERE user_id = :user_id
AND month = :current_month
GROUP BY creator_id;
```
Scénario: Utilisateur écoute un seul créateur - 100% à ce créateur
Étant donné qu'un utilisateur Premium paie 4.99/mois
Et qu'il n'écoute qu'un seul créateur (moi)
Quand le mois se termine
Alors je touche 3.49 (70% de 4.99)
Et je reçois 100% de la part créateurs
Scénario: Utilisateur Premium inactif - Aucun revenu généré
Étant donné qu'un utilisateur Premium paie 4.99/mois
Mais qu'il n'écoute aucun contenu ce mois
Quand le calcul des revenus Premium est effectué
Alors aucun créateur ne reçoit de revenus de cet utilisateur
Et les 3.49 de la part créateurs restent à la plateforme
Et cela couvre les coûts d'infrastructure
Scénario: Comparaison avec YouTube Premium (70/30)
Étant donné que YouTube Premium reverse 70% aux créateurs
Quand RoadWave fixe également 70/30
Alors le modèle est aligné sur le standard industrie
Et les créateurs ont confiance dans l'équité du système
Scénario: Comparaison avec Spotify (70/30)
Étant donné que Spotify reverse 70% aux artistes
Quand RoadWave fixe également 70/30
Alors le modèle est identique à Spotify
Et les créateurs audio comprennent facilement le système
Scénario: Apple Music moins avantageux (52/48)
Étant donné qu'Apple Music ne reverse que 52% aux artistes
Quand RoadWave offre 70% aux créateurs
Alors RoadWave est plus avantageux de 18 points
Et cela devient un argument marketing fort
Scénario: Justification équité - Créateurs les plus écoutés gagnent plus
Étant donné que 2 créateurs ont le même nombre d'abonnés Premium
Mais que le Créateur A est écouté 20h/mois et le Créateur B seulement 2h/mois
Quand les revenus Premium sont calculés
Alors le Créateur A gagne 10× plus que le Créateur B
Et cela récompense la qualité et l'engagement (pas juste l'abonnement)
Scénario: Pas de "winner takes all" - Équité totale
Étant donné qu'un utilisateur Premium écoute 10 créateurs différents
Quand les revenus sont calculés
Alors chacun des 10 créateurs reçoit sa part proportionnelle
Et il n'y a pas de système où un seul créateur prend tout
Scénario: Marge plateforme 30% couvre absence revenus pub Premium
Étant donné qu'un utilisateur Premium ne voit aucune publicité
Quand la plateforme calcule ses revenus
Alors elle ne touche que les 30% de l'abonnement Premium (1.50)
Et cette marge compense la perte des revenus publicitaires (qui auraient été ~47/1000 écoutes)
Scénario: Tableau de bord - Revenus Premium temps réel
Étant donné que j'accède à mon tableau de bord créateur
Quand je consulte mes revenus Premium
Alors je vois:
| métrique | valeur exemple |
| Abonnés Premium actifs ayant écouté | 47 |
| Heures d'écoute Premium ce mois | 234h |
| Revenus Premium ce mois | 89.23 |
Et ces valeurs sont mises à jour toutes les 10 minutes
# ===== CUMUL REVENUS PUB + PREMIUM =====
Scénario: Revenus cumulés pub + premium
Étant donné que j'ai généré ce mois:
| source | montant |
| Revenus pub | 150.00 |
| Revenus Premium | 89.23 |
Quand je consulte mon solde disponible
Alors le total est 239.23
Et ce solde sera versé le 15 du mois prochain (si 50)
Scénario: Dashboard créateur - Vue d'ensemble
Étant donné que j'accède à mon tableau de bord créateur
Quand je consulte la page revenus
Alors je vois:
```
===== REVENUS DU MOIS EN COURS =====
📊 Publicités (utilisateurs gratuits)
- Écoutes complètes: 50,234
- Revenus pub: 150.70
👑 Abonnés Premium
- Abonnés actifs: 47
- Heures d'écoute: 234h
- Revenus Premium: 89.23
💰 TOTAL CE MOIS: 239.93
===== HISTORIQUE =====
Mois dernier: 178.45 (versé le 15/01)
Il y a 2 mois: 156.78 (versé le 15/12)
```
Scénario: Export comptable CSV pour expert-comptable
Étant donné que je clique sur "Exporter pour comptable"
Quand l'export est généré
Alors je télécharge un fichier CSV:
```csv
Mois,Revenus Pub,Revenus Premium,Total,Statut
2025-01,150.70,89.23,239.93,En attente versement
2024-12,123.45,55.00,178.45,Versé le 15/01/2025
2024-11,100.30,56.48,156.78,Versé le 15/12/2024
```
Et je peux transmettre ce fichier à mon expert-comptable
Scénario: Notification hebdomadaire progression revenus
Étant donné que je suis créateur monétisé
Quand chaque lundi matin arrive
Alors je reçois un email récapitulatif:
"""
📊 Vos revenus de la semaine dernière:
- Revenus pub: +23.45 (3,456 écoutes)
- Revenus Premium: +12.78 (12 abonnés actifs)
- Total semaine: 36.23
- Projection mois: ~150
"""
Scénario: Graphique évolution revenus sur 12 mois
Étant donné que je suis monétisé depuis 12 mois
Quand j'accède à mes statistiques
Alors je vois un graphique en courbes montrant:
| mois | revenus pub | revenus premium | total |
| Jan 25 | 150 | 89 | 239 |
| Déc 24 | 123 | 55 | 178 |
| Nov 24 | 100 | 56 | 156 |
| ... | ... | ... | ... |
Et cela m'aide à suivre ma progression
Scénario: Top 3 contenus les plus rentables du mois
Étant donné que j'ai publié 20 contenus ce mois
Quand je consulte mes statistiques détaillées
Alors je vois mon top 3 contenus:
| titre | écoutes | revenus pub | revenus premium | total |
| Mon meilleur épisode | 12,345 | 37.04 | 23.45 | 60.49 |
| Discussion tech | 8,901 | 26.70 | 15.67 | 42.37 |
| Road trip Bretagne | 7,234 | 21.70 | 12.34 | 34.04 |
Et cela m'aide à comprendre quel type de contenu plaît le plus
Scénario: Alertes seuils de revenus
Étant donné que j'ai activé les notifications de seuils
Quand mes revenus du mois dépassent 100 pour la première fois
Alors je reçois une notification:
"""
🎉 Félicitations ! Vous venez de dépasser 100 de revenus ce mois !
Continuez comme ça !
"""
Scénario: Performance calcul avec 100 000 créateurs
Étant donné que RoadWave a 100 000 créateurs monétisés
Quand le calcul des revenus mensuels est lancé le dernier jour du mois
Alors un job asynchrone traite tous les créateurs
Et le calcul prend environ 2-4 heures pour tous les créateurs
Et les résultats sont stockés dans la table monthly_revenues
Scénario: Cache Redis pour métriques temps réel
Étant donné que je consulte mon dashboard plusieurs fois par jour
Quand la page se charge
Alors les compteurs sont récupérés depuis Redis:
| clé Redis | valeur exemple |
| creator:[id]:complete_listens:202501 | 50234 |
| creator:[id]:premium_hours:202501 | 234 |
| creator:[id]:revenue_ads:202501 | 150.70 |
| creator:[id]:revenue_premium:202501 | 89.23 |
Et le temps de réponse est <30ms
Scénario: Prévision revenus fin de mois
Étant donné que nous sommes le 20 du mois
Et que mes revenus actuels sont 160
Quand le système calcule la projection
Alors il estime les revenus fin de mois à ~240 (extrapolation linéaire)
Et affiche "Projection fin de mois: ~240"
Et cela m'aide à anticiper mes revenus