refactor(docs): réorganiser la documentation selon principes DDD
Réorganise la documentation du projet selon les principes du Domain-Driven Design (DDD) pour améliorer la cohésion, la maintenabilité et l'alignement avec l'architecture modulaire du backend. **Structure cible:** ``` docs/domains/ ├── README.md (Context Map) ├── _shared/ (Core Domain) ├── recommendation/ (Supporting Subdomain) ├── content/ (Supporting Subdomain) ├── moderation/ (Supporting Subdomain) ├── advertising/ (Generic Subdomain) ├── premium/ (Generic Subdomain) └── monetization/ (Generic Subdomain) ``` **Changements effectués:** Phase 1: Création de l'arborescence des 7 bounded contexts Phase 2: Déplacement des règles métier (01-19) vers domains/*/rules/ Phase 3: Déplacement des diagrammes d'entités vers domains/*/entities/ Phase 4: Déplacement des diagrammes flux/états/séquences vers domains/*/ Phase 5: Création des README.md pour chaque domaine Phase 6: Déplacement des features Gherkin vers domains/*/features/ Phase 7: Création du Context Map (domains/README.md) Phase 8: Mise à jour de mkdocs.yml pour la nouvelle navigation Phase 9: Correction automatique des liens internes (script fix-markdown-links.sh) Phase 10: Nettoyage de l'ancienne structure (regles-metier/, diagrammes/, features/) **Configuration des tests:** - Makefile: godog run docs/domains/*/features/ - scripts/generate-bdd-docs.py: features_dir → docs/domains **Avantages:** ✅ Cohésion forte: toute la doc d'un domaine au même endroit ✅ Couplage faible: domaines indépendants, dépendances explicites ✅ Navigabilité améliorée: README par domaine = entrée claire ✅ Alignement code/docs: miroir de backend/internal/ ✅ Onboarding facilité: exploration domaine par domaine ✅ Tests BDD intégrés: features au plus près des règles métier Voir docs/REFACTOR-DDD.md pour le plan complet.
This commit is contained in:
@@ -0,0 +1,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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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)
|
||||
@@ -0,0 +1,437 @@
|
||||
# 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
|
||||
|
||||
# Règle: DAS2 systématique tous montants (même <1200€)
|
||||
|
||||
Scénario: DAS2 systématique - Créateur avec revenus <1200€
|
||||
Étant donné que j'ai touché 450.00€ en 2025
|
||||
Et que le seuil légal DAS2 est 1200€/an
|
||||
Quand RoadWave génère les DAS2 en janvier 2026
|
||||
Alors ma DAS2 est quand même envoyée à la DGFIP
|
||||
Et le montant déclaré est 450.00€
|
||||
Et je reçois une copie par email
|
||||
Et la DAS2 est disponible dans mon dashboard
|
||||
|
||||
Scénario: DAS2 systématique - Créateur avec 50€ seulement
|
||||
Étant donné que j'ai touché seulement 50.00€ en 2025
|
||||
Quand RoadWave génère les DAS2 en janvier 2026
|
||||
Alors ma DAS2 est envoyée à la DGFIP avec 50.00€
|
||||
Et je reçois un email de confirmation:
|
||||
"""
|
||||
Objet : Votre déclaration fiscale 2025 RoadWave
|
||||
|
||||
Bonjour [Créateur],
|
||||
|
||||
Vos revenus RoadWave 2025 ont été déclarés aux impôts (DAS2) :
|
||||
- Revenus publicité : 30.00€
|
||||
- Revenus Premium : 20.00€
|
||||
- Total déclaré : 50.00€
|
||||
|
||||
Cette déclaration a été transmise à la DGFIP.
|
||||
Vous devez inclure ce montant dans votre déclaration personnelle.
|
||||
|
||||
Télécharger le justificatif : [Lien PDF]
|
||||
|
||||
Cordialement,
|
||||
L'équipe RoadWave
|
||||
"""
|
||||
|
||||
Scénario: Justification juridique DAS2 systématique
|
||||
Étant donné que le seuil légal DAS2 est 1200€/an
|
||||
Et que RoadWave déclare tous montants (même <1200€)
|
||||
Quand un créateur demande pourquoi sa DAS2 <1200€ est envoyée
|
||||
Alors la justification est:
|
||||
"""
|
||||
Bien que le seuil légal DAS2 soit 1200€/an,
|
||||
rien n'interdit de déclarer les montants inférieurs.
|
||||
|
||||
Au contraire, cela renforce la transparence et
|
||||
protège RoadWave en cas de contrôle fiscal.
|
||||
"""
|
||||
|
||||
Scénario: Avantages DAS2 systématique pour RoadWave
|
||||
Étant donné que RoadWave déclare tous montants
|
||||
Quand un audit fiscal a lieu
|
||||
Alors les avantages sont:
|
||||
| avantage | description |
|
||||
| Conformité maximale | Aucune zone grise, 100% transparent |
|
||||
| Protection juridique RoadWave | Traçabilité totale de tous les paiements |
|
||||
| Simplicité technique | Même processus pour tous (pas de filtrage) |
|
||||
| Créateur a justificatif | Justificatif fourni même pour petits montants |
|
||||
| Coût 0€ | DAS2 = déclaration obligatoire gratuite |
|
||||
|
||||
Scénario: Avantages DAS2 systématique pour créateurs
|
||||
Étant donné que j'ai touché 800€ en 2025
|
||||
Et que je reçois une DAS2 même si <1200€
|
||||
Quand je fais ma déclaration d'impôts
|
||||
Alors j'ai un justificatif officiel pour déclarer mes revenus
|
||||
Et je peux prouver l'origine de mes revenus en cas de contrôle
|
||||
Et je suis protégé même si les montants sont faibles
|
||||
|
||||
Scénario: Statistiques admin - DAS2 systématique
|
||||
Étant donné qu'un admin RoadWave consulte les métriques DAS2 2025
|
||||
Quand il accède au dashboard admin
|
||||
Alors il voit:
|
||||
| métrique | valeur 2025 |
|
||||
| Créateurs monétisés totaux | 1,247 |
|
||||
| DAS2 transmises (tous montants) | 1,247 |
|
||||
| Dont DAS2 <1200€ | 400 (32%) |
|
||||
| Dont DAS2 ≥1200€ | 847 (68%) |
|
||||
| Revenus totaux déclarés | 1,890,345€ |
|
||||
| Taux conformité | 100% |
|
||||
|
||||
Scénario: Comparaison autres plateformes - Twitch, YouTube
|
||||
Étant donné que Twitch et YouTube ont un seuil DAS2 1200€
|
||||
Et que RoadWave déclare tous montants (même <1200€)
|
||||
Quand on compare les pratiques
|
||||
Alors RoadWave est plus transparent:
|
||||
| Plateforme | Seuil DAS2 | Montants <1200€ déclarés ? |
|
||||
| Twitch | 1200€ | ❌ Non (non documenté) |
|
||||
| YouTube | 1200€ | ❌ Non (non documenté) |
|
||||
| RoadWave | 0€ | ✅ Oui (tous montants) |
|
||||
|
||||
Scénario: Email créateur DAS2 <1200€ - Clarification obligation
|
||||
Étant donné que j'ai touché 800€ en 2025
|
||||
Quand je reçois l'email DAS2
|
||||
Alors l'email contient une clarification:
|
||||
"""
|
||||
ℹ️ Bien que vos revenus soient inférieurs au seuil légal DAS2 (1200€),
|
||||
RoadWave déclare tous les montants pour assurer une transparence maximale.
|
||||
|
||||
Vous devez déclarer ces 800€ dans votre déclaration d'impôts personnelle
|
||||
(formulaire 2042 C PRO pour auto-entrepreneurs ou déclaration IS/IR selon votre statut).
|
||||
|
||||
Ce justificatif vous protège en cas de contrôle fiscal.
|
||||
"""
|
||||
|
||||
Scénario: Créateur avec plusieurs plateformes - Cumul seuil 1200€
|
||||
Étant donné que j'ai touché:
|
||||
| plateforme | revenus 2025 |
|
||||
| RoadWave | 800€ |
|
||||
| YouTube | 600€ |
|
||||
| Twitch | 400€ |
|
||||
Et que le seuil DAS2 légal est 1200€ par plateforme
|
||||
Quand les DAS2 sont envoyées
|
||||
Alors RoadWave envoie une DAS2 pour 800€
|
||||
Mais YouTube et Twitch n'envoient pas de DAS2 (<1200€)
|
||||
Et je dois quand même déclarer les 1800€ totaux aux impôts
|
||||
Et la DAS2 RoadWave me donne un justificatif partiel
|
||||
@@ -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
|
||||
@@ -0,0 +1,235 @@
|
||||
# language: fr
|
||||
Fonctionnalité: Gestion des soldes dormants et créateurs inactifs
|
||||
En tant que plateforme RoadWave
|
||||
Je veux gérer les soldes des créateurs inactifs de manière équitable
|
||||
Afin de restituer l'argent aux créateurs plutôt que de le confisquer
|
||||
|
||||
Contexte:
|
||||
Étant donné que je suis un créateur monétisé
|
||||
Et que mon KYC est validé
|
||||
Et que mon solde actuel est 45.00€
|
||||
|
||||
# Conservation du solde pour créateurs actifs
|
||||
|
||||
Scénario: Créateur actif - Solde conservé indéfiniment
|
||||
Étant donné que je publie au moins 1 contenu par mois
|
||||
Ou que je me connecte au dashboard au moins 1 fois par mois
|
||||
Quand 24 mois se sont écoulés
|
||||
Alors mon solde de 45.00€ est toujours conservé
|
||||
Et aucun email de préavis n'est envoyé
|
||||
Et le solde reste visible dans mon dashboard
|
||||
|
||||
Scénario: Créateur actif sporadique - Pas de pénalité
|
||||
Étant donné que je publie 1 contenu tous les 2-3 mois
|
||||
Ou que je me connecte au dashboard tous les 2 mois
|
||||
Quand 18 mois d'activité sporadique se sont écoulés
|
||||
Alors mon solde est conservé normalement
|
||||
Et je ne reçois aucun email d'avertissement
|
||||
Et mon statut reste "Créateur actif"
|
||||
|
||||
# Créateur inactif - Emails préventifs
|
||||
|
||||
Scénario: Inactivité 12 mois - Email préventif 1
|
||||
Étant donné que je n'ai publié aucun contenu depuis 12 mois
|
||||
Et que je ne me suis pas connecté au dashboard depuis 12 mois
|
||||
Quand le système détecte 12 mois d'inactivité
|
||||
Alors je reçois un email avec le sujet:
|
||||
"""
|
||||
⚠️ Votre solde RoadWave (45.00€) - Action requise
|
||||
"""
|
||||
Et l'email contient:
|
||||
"""
|
||||
Vous n'avez pas publié de contenu depuis 12 mois.
|
||||
Votre solde actuel : 45.00€
|
||||
|
||||
🔔 Si vous restez inactif 6 mois supplémentaires :
|
||||
→ Versement automatique (frais bancaires déduits)
|
||||
→ Montant net estimé : 44.64€
|
||||
|
||||
💡 Pour éviter le versement anticipé :
|
||||
- Publiez un nouveau contenu, OU
|
||||
- Connectez-vous à votre dashboard créateur
|
||||
"""
|
||||
Et un lien vers le dashboard est fourni
|
||||
|
||||
Scénario: Inactivité 18 mois - Email préventif 2 (préavis final)
|
||||
Étant donné que je n'ai publié aucun contenu depuis 18 mois
|
||||
Et que je ne me suis pas connecté au dashboard depuis 18 mois
|
||||
Quand le système détecte 18 mois d'inactivité
|
||||
Alors je reçois un email avec le sujet:
|
||||
"""
|
||||
📢 Versement automatique dans 30 jours
|
||||
"""
|
||||
Et l'email contient:
|
||||
"""
|
||||
Vous n'avez pas publié de contenu depuis 18 mois.
|
||||
|
||||
⏰ Votre solde sera versé automatiquement dans 30 jours :
|
||||
- Solde actuel : 45.00€
|
||||
- Frais bancaires Mangopay SEPA : 0.36€ (1.8% + 0.18€)
|
||||
- Montant net : 44.64€
|
||||
|
||||
Ce versement est automatique pour restituer votre argent.
|
||||
|
||||
💡 Pour conserver le solde jusqu'à 50€ :
|
||||
- Publiez un nouveau contenu, OU
|
||||
- Connectez-vous à votre dashboard
|
||||
"""
|
||||
|
||||
Scénario: Inactivité 18 mois + 30 jours - Versement forcé
|
||||
Étant donné que je n'ai publié aucun contenu depuis 18 mois + 30 jours
|
||||
Et que je ne me suis pas connecté au dashboard depuis 18 mois + 30 jours
|
||||
Quand le système détecte 18 mois + 30 jours d'inactivité
|
||||
Alors un versement SEPA automatique est initié vers mon RIB
|
||||
Et le montant versé est 45.00€ - 0.36€ = 44.64€
|
||||
Et je reçois un email de confirmation:
|
||||
"""
|
||||
✅ Versement automatique effectué
|
||||
|
||||
Votre solde RoadWave a été versé :
|
||||
- Montant brut : 45.00€
|
||||
- Frais bancaires : 0.36€
|
||||
- Montant net versé : 44.64€
|
||||
|
||||
Le virement devrait arriver sur votre compte dans 1-3 jours.
|
||||
"""
|
||||
|
||||
Scénario: Inactivité 18 mois + 37 jours - Purge données comptables
|
||||
Étant donné qu'un versement forcé a été effectué il y a 7 jours
|
||||
Quand le système détecte 18 mois + 37 jours d'inactivité
|
||||
Alors les données comptables temporaires sont purgées
|
||||
Mais les logs sont conservés 10 ans (obligation RGPD)
|
||||
Et l'historique de paiement reste visible dans mon profil
|
||||
|
||||
# Exception soldes <10€
|
||||
|
||||
Scénario: Solde <10€ après 18 mois - Proposition de don
|
||||
Étant donné que mon solde actuel est 8.50€
|
||||
Et que je suis inactif depuis 18 mois
|
||||
Quand le système détecte 18 mois d'inactivité
|
||||
Alors je reçois un email avec proposition:
|
||||
"""
|
||||
Votre solde actuel : 8.50€
|
||||
|
||||
⚠️ Les frais bancaires (0.36€) représentent 4.2% du montant.
|
||||
|
||||
💡 Options disponibles :
|
||||
1. Don à une association (frais 0€, 100% reversé)
|
||||
2. Conservation jusqu'à atteindre 50€
|
||||
3. Versement avec frais déduits (8.14€ net)
|
||||
|
||||
Choisissez votre option : [Lien formulaire]
|
||||
"""
|
||||
|
||||
Scénario: Solde <10€ - Choix option "Don association"
|
||||
Étant donné que mon solde est 8.50€
|
||||
Et que j'ai choisi "Don à une association"
|
||||
Quand le don est effectué
|
||||
Alors 8.50€ (100%) sont reversés à l'association
|
||||
Et je reçois un reçu fiscal si applicable
|
||||
Et mon solde est remis à 0€
|
||||
|
||||
Scénario: Solde <10€ - Choix option "Conservation jusqu'à 50€"
|
||||
Étant donné que mon solde est 8.50€
|
||||
Et que j'ai choisi "Conservation jusqu'à 50€"
|
||||
Quand l'option est validée
|
||||
Alors mon solde est conservé indéfiniment
|
||||
Et je peux me reconnecter à tout moment pour publier du contenu
|
||||
Et atteindre les 50€ pour un paiement standard
|
||||
|
||||
Scénario: Solde <10€ - Choix option "Versement avec frais"
|
||||
Étant donné que mon solde est 8.50€
|
||||
Et que j'ai choisi "Versement avec frais déduits"
|
||||
Quand le versement est initié
|
||||
Alors je reçois 8.50€ - 0.36€ = 8.14€ net
|
||||
Et un email de confirmation est envoyé
|
||||
|
||||
Scénario: Solde <10€ - Pas de réponse + inactivité continue - Versement forcé
|
||||
Étant donné que mon solde est 8.50€
|
||||
Et que je n'ai pas répondu à l'email de proposition
|
||||
Et que l'inactivité continue pendant 30 jours supplémentaires
|
||||
Quand le délai de 18 mois + 30 jours est atteint
|
||||
Alors le versement est effectué quand même (équité)
|
||||
Et je reçois 8.14€ net après frais
|
||||
|
||||
# Frais bancaires
|
||||
|
||||
Scénario: Calcul frais bancaires Mangopay SEPA
|
||||
Étant donné que mon solde est de <montant>
|
||||
Quand le versement forcé est initié
|
||||
Alors les frais Mangopay SEPA sont: 1.8% + 0.18€
|
||||
Et le montant net est calculé comme suit:
|
||||
| Solde brut | Frais (1.8% + 0.18€) | Montant net |
|
||||
| 45.00€ | 0.36€ | 44.64€ |
|
||||
| 30.00€ | 0.36€ | 29.64€ |
|
||||
| 100.00€ | 1.98€ | 98.02€ |
|
||||
| 8.50€ | 0.36€ | 8.14€ |
|
||||
|
||||
Scénario: Transparence frais bancaires dans emails
|
||||
Étant donné qu'un email de préavis est envoyé
|
||||
Quand je lis l'email
|
||||
Alors les frais bancaires sont explicitement mentionnés:
|
||||
"""
|
||||
Frais bancaires Mangopay SEPA : 0.36€ (1.8% + 0.18€)
|
||||
"""
|
||||
Et le montant net final est clairement indiqué
|
||||
|
||||
# Comparaison Twitch
|
||||
|
||||
Scénario: Comparaison avec Twitch - Versement forcé vs Forfeiture
|
||||
Étant donné que Twitch confisque (forfeiture) les soldes après 24 mois
|
||||
Et que RoadWave verse (restitue) les soldes après 18 mois
|
||||
Alors RoadWave est plus équitable:
|
||||
| Critère | Twitch | RoadWave | Avantage |
|
||||
| Seuil paiement | 50-100$ | 50€ | Aligné |
|
||||
| Délai inactivité | 24 mois | 18 mois | Plus court |
|
||||
| Action fin délai | Forfeiture (perte argent) | Versement forcé (récupère) | ✅ RoadWave |
|
||||
| Emails préventifs | Non documenté | 12 mois + 18 mois + 30j | ✅ RoadWave |
|
||||
| Frais bancaires | Non documenté | Déduits + annoncés | ✅ RoadWave |
|
||||
|
||||
# Réactivation après inactivité
|
||||
|
||||
Scénario: Reconnexion après 12 mois d'inactivité - Solde conservé
|
||||
Étant donné que je suis inactif depuis 12 mois
|
||||
Et que mon solde est 45.00€
|
||||
Quand je me connecte au dashboard
|
||||
Alors mon solde est toujours de 45.00€
|
||||
Et le compteur d'inactivité est remis à 0
|
||||
Et aucun versement forcé n'aura lieu
|
||||
|
||||
Scénario: Publication contenu après 17 mois d'inactivité - Annulation versement
|
||||
Étant donné que je suis inactif depuis 17 mois
|
||||
Et qu'un email de préavis a été envoyé
|
||||
Quand je publie un nouveau contenu
|
||||
Alors le processus de versement forcé est annulé
|
||||
Et mon solde reste conservé normalement
|
||||
Et je redeviens "Créateur actif"
|
||||
|
||||
Scénario: Reconnexion 1 jour avant versement forcé - Annulation
|
||||
Étant donné que je suis inactif depuis 18 mois + 29 jours
|
||||
Et que le versement forcé est prévu demain
|
||||
Quand je me connecte au dashboard aujourd'hui
|
||||
Alors le versement forcé est annulé
|
||||
Et mon solde est conservé
|
||||
Et un message confirme: "Versement automatique annulé. Solde conservé."
|
||||
|
||||
# Cas limites
|
||||
|
||||
Scénario: Créateur avec plusieurs contenus anciens mais inactif
|
||||
Étant donné que j'ai publié 50 contenus il y a 2 ans
|
||||
Et que ces contenus génèrent encore des revenus passifs
|
||||
Mais que je ne me connecte plus au dashboard depuis 18 mois
|
||||
Quand le système détecte 18 mois d'inactivité
|
||||
Alors je suis considéré "inactif" (aucune connexion dashboard)
|
||||
Et je reçois les emails de préavis normalement
|
||||
Et le versement forcé s'applique après 18 mois + 30 jours
|
||||
|
||||
Scénario: Créateur avec abonnés fidèles mais inactif
|
||||
Étant donné que j'ai 500 abonnés
|
||||
Et que mes anciens contenus génèrent encore des revenus
|
||||
Mais que je ne publie plus de contenus depuis 18 mois
|
||||
Et que je ne me connecte plus au dashboard depuis 18 mois
|
||||
Quand le système détecte l'inactivité
|
||||
Alors je reçois les emails de préavis
|
||||
Et le versement forcé s'applique normalement
|
||||
Car l'activité comptabilisée = connexion dashboard OU publication contenu
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user