feat(bdd): réorganiser features en catégories api/ui/e2e et créer ADR-024
Résolution des incohérences #10, #11, et #12 de l'analyse d'architecture. ## Phase 1 : Réorganisation Features BDD (Point #10 - RÉSOLU) - Créer structure features/{api,ui,e2e} - Déplacer 83 features en 3 catégories via git mv (historique préservé) - features/api/ : 53 features (tests API backend) - features/ui/ : 22 features (tests UI mobile) - features/e2e/ : 8 features (tests end-to-end) Domaines déplacés : - API : authentication, recommendation, rgpd-compliance, content-creation, moderation, monetisation, premium, radio-live, publicites - UI : audio-guides, navigation, interest-gauges, mode-offline, partage, profil, recherche - E2E : abonnements, error-handling ## Phase 2 : Mise à jour Documentation ### ADR-007 - Tests BDD - Ajouter section "Convention de Catégorisation des Features" - Documenter règles api/ui/e2e avec exemples concrets - Spécifier step definitions (backend Go, mobile Dart) ### ADR-024 - Stratégie CI/CD Monorepo (NOUVEAU) - Créer ADR dédié pour stratégie CI/CD avec path filters - Architecture workflows séparés (backend.yml, mobile.yml, shared.yml) - Configuration path filters détaillée avec exemples YAML - Matrice de déclenchement et optimisations (~70% gain temps CI) - Plan d'implémentation (~2h, reporté jusqu'au développement) ### ADR-016 - Organisation Monorepo - Simplifier en retirant section CI/CD détaillée - Ajouter référence vers ADR-024 pour stratégie CI/CD ### INCONSISTENCIES-ANALYSIS.md - Point #10 (Tests BDD synchronisés) : ✅ RÉSOLU - Catégorisation features implémentée - ADR-007 mis à jour avec convention complète - Point #11 (70/30 Split paiements) : ✅ ANNULÉ (faux problème) - ADR-009 et Règle 18 parfaitement cohérents - Documentation exhaustive existante (formule, SQL, comparaisons) - Point #12 (Monorepo path filters) : ⏸️ DOCUMENTÉ - Architecture CI/CD complète dans ADR-024 - Implémentation reportée (projet en phase documentation) - Métriques mises à jour : - MODERATE : 6/9 traités (4 résolus + 1 annulé + 1 documenté) - ADR à jour : 100% (19/19 avec ADR-024) ## Phase 3 : Validation - Structure features validée (api/ui/e2e, aucun répertoire restant) - Historique Git préservé (git mv, renommages détectés) - 83 features total (API: 53, UI: 22, E2E: 8) Closes: Point #10 (résolu), Point #11 (annulé), Point #12 (documenté) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
381
features/api/monetisation/desactivation-suspension.feature
Normal file
381
features/api/monetisation/desactivation-suspension.feature
Normal file
@@ -0,0 +1,381 @@
|
||||
# language: fr
|
||||
Fonctionnalité: Désactivation et suspension monétisation
|
||||
En tant que créateur ou plateforme
|
||||
Je veux pouvoir désactiver ou suspendre la monétisation selon certaines conditions
|
||||
Afin de gérer les pauses, problèmes techniques ou violations des règles
|
||||
|
||||
Contexte:
|
||||
Étant donné que je suis un créateur avec la monétisation activée
|
||||
|
||||
# ===== DÉSACTIVATION VOLONTAIRE PAR LE CRÉATEUR =====
|
||||
|
||||
Scénario: Désactivation temporaire par le créateur
|
||||
Étant donné que je veux faire une pause dans ma création de contenu
|
||||
Quand j'accède à "Paramètres > Monétisation"
|
||||
Et que je clique sur "Désactiver temporairement la monétisation"
|
||||
Alors ma monétisation est désactivée immédiatement
|
||||
Et je ne génère plus de revenus à partir de maintenant
|
||||
|
||||
Scénario: Confirmation avant désactivation
|
||||
Étant donné que je clique sur "Désactiver temporairement"
|
||||
Quand une popup de confirmation apparaît
|
||||
Alors je vois le message:
|
||||
"""
|
||||
⚠️ Désactiver la monétisation ?
|
||||
|
||||
Vous ne générerez plus de revenus à partir de maintenant.
|
||||
Votre solde actuel sera conservé et versé normalement.
|
||||
|
||||
Vous pourrez réactiver quand vous le souhaitez.
|
||||
"""
|
||||
Et je dois confirmer pour continuer
|
||||
|
||||
Scénario: Solde conservé pendant désactivation
|
||||
Étant donné que mon solde actuel est 87.45€
|
||||
Quand je désactive ma monétisation le 15 du mois
|
||||
Alors mon solde de 87.45€ est conservé
|
||||
Et il sera reporté au mois suivant
|
||||
Et si le total dépasse 50€, il sera versé normalement le 15 du mois prochain
|
||||
|
||||
Scénario: Contenus restent accessibles pendant désactivation
|
||||
Étant donné que j'ai désactivé ma monétisation
|
||||
Quand des utilisateurs écoutent mes contenus
|
||||
Alors mes contenus restent accessibles normalement
|
||||
Mais je ne génère aucun revenu (ni pub ni Premium)
|
||||
|
||||
Scénario: Réactivation sans refaire le KYC si <2 ans
|
||||
Étant donné que j'ai désactivé ma monétisation il y a 8 mois
|
||||
Et que mes documents KYC sont toujours valides
|
||||
Quand je clique sur "Réactiver la monétisation"
|
||||
Alors la réactivation est immédiate
|
||||
Et je n'ai pas besoin de refaire le KYC
|
||||
Et je recommence à générer des revenus dès maintenant
|
||||
|
||||
Scénario: Nouveau KYC requis si inactivité >2 ans
|
||||
Étant donné que j'ai désactivé ma monétisation il y a 25 mois
|
||||
Quand j'essaie de réactiver
|
||||
Alors le système demande un nouveau KYC
|
||||
Et je vois:
|
||||
"""
|
||||
Votre monétisation était désactivée depuis plus de 2 ans.
|
||||
Veuillez mettre à jour vos documents KYC pour réactiver.
|
||||
"""
|
||||
Et je dois soumettre à nouveau mes documents
|
||||
|
||||
Scénario: Historique des désactivations/réactivations
|
||||
Étant donné que j'ai désactivé et réactivé ma monétisation plusieurs fois
|
||||
Quand j'accède à "Paramètres > Monétisation > Historique"
|
||||
Alors je vois la liste complète:
|
||||
| date | action | raison |
|
||||
| 15/06/2025 | Réactivation | Reprise création contenu |
|
||||
| 01/03/2025 | Désactivation | Pause vacances |
|
||||
| 20/01/2025 | Activation | KYC validé |
|
||||
|
||||
# ===== SUSPENSION AUTOMATIQUE PAR LA PLATEFORME =====
|
||||
|
||||
Scénario: Suspension si 3+ strikes actifs
|
||||
Étant donné que je reçois un 3ème strike pour violation des règles
|
||||
Quand le strike devient actif
|
||||
Alors ma monétisation est suspendue automatiquement
|
||||
Et je vois:
|
||||
"""
|
||||
⚠️ Monétisation suspendue
|
||||
|
||||
Votre compte a 3 strikes actifs.
|
||||
La monétisation est suspendue jusqu'à résolution des violations.
|
||||
"""
|
||||
|
||||
Scénario: Réactivation après résolution des strikes
|
||||
Étant donné que ma monétisation est suspendue pour 3 strikes
|
||||
Quand je résous tous mes strikes (après expiration ou contestation)
|
||||
Et que mon compteur de strikes passe à 0
|
||||
Alors ma monétisation est réactivée automatiquement
|
||||
Et je reçois un email de confirmation
|
||||
|
||||
Scénario: Suspension si RIB invalide après 3 échecs de virement
|
||||
Étant donné que 3 tentatives de virement ont échoué (15, 18, 22 du mois)
|
||||
Quand le 3ème échec est confirmé
|
||||
Alors ma monétisation est suspendue automatiquement
|
||||
Et je vois:
|
||||
"""
|
||||
⚠️ Monétisation suspendue
|
||||
|
||||
Vos virements ont échoué 3 fois (RIB invalide ou compte fermé).
|
||||
Veuillez mettre à jour votre RIB dans "Paramètres > Monétisation".
|
||||
|
||||
Votre solde en attente (150.00€) sera versé dès que le RIB sera valide.
|
||||
"""
|
||||
|
||||
Scénario: Réactivation après mise à jour RIB valide
|
||||
Étant donné que ma monétisation est suspendue pour RIB invalide
|
||||
Quand je mets à jour mon RIB avec un compte bancaire valide
|
||||
Et que Mangopay valide le nouveau RIB
|
||||
Alors ma monétisation est réactivée automatiquement
|
||||
Et un virement est tenté immédiatement pour le solde en attente
|
||||
|
||||
Scénario: Suspension si documents KYC expirés
|
||||
Étant donné que ma carte d'identité expire dans 30 jours
|
||||
Quand je reçois un email de rappel de mise à jour
|
||||
Mais que je ne mets pas à jour mes documents
|
||||
Et que ma CNI expire
|
||||
Alors ma monétisation est suspendue automatiquement après 30 jours de grâce
|
||||
|
||||
Scénario: Préavis 30 jours avant suspension pour docs expirés
|
||||
Étant donné que ma CNI expire le 15 juin 2025
|
||||
Quand le 15 mai 2025 arrive (30 jours avant)
|
||||
Alors je reçois un email d'alerte:
|
||||
"""
|
||||
⚠️ Vos documents KYC expirent dans 30 jours
|
||||
|
||||
Votre carte d'identité expire le 15 juin 2025.
|
||||
Veuillez mettre à jour vos documents dans "Paramètres > Monétisation > KYC".
|
||||
|
||||
Si vous ne mettez pas à jour, votre monétisation sera suspendue le 16 juin 2025.
|
||||
"""
|
||||
|
||||
Scénario: Réactivation après renouvellement documents KYC
|
||||
Étant donné que ma monétisation est suspendue pour CNI expirée
|
||||
Quand je soumets une nouvelle CNI valide
|
||||
Et que Mangopay valide le document sous 24-72h
|
||||
Alors ma monétisation est réactivée automatiquement
|
||||
Et je recommence à générer des revenus
|
||||
|
||||
Scénario: Suspension si fraude détectée
|
||||
Étant donné que le système détecte une activité frauduleuse (bots, écoutes artificielles)
|
||||
Quand l'équipe modération confirme la fraude
|
||||
Alors ma monétisation est suspendue immédiatement
|
||||
Et mon compte est mis sous enquête
|
||||
Et je reçois un email m'informant de la suspension
|
||||
|
||||
Scénario: Enquête fraude - Vérification manuelle
|
||||
Étant donné que ma monétisation est suspendue pour suspicion de fraude
|
||||
Quand l'équipe modération enquête
|
||||
Alors elle analyse:
|
||||
| élément à vérifier | outil |
|
||||
| Patterns d'écoute suspects | Analytics + logs |
|
||||
| Origine géographique | Logs IP |
|
||||
| Vitesse de croissance anormale | Graphiques statistiques |
|
||||
| Plaintes utilisateurs | Système de signalement |
|
||||
|
||||
Scénario: Levée suspension si fraude non confirmée
|
||||
Étant donné que mon compte était suspendu pour suspicion de fraude
|
||||
Quand l'enquête conclut qu'il n'y a pas eu de fraude
|
||||
Alors ma monétisation est réactivée
|
||||
Et les revenus suspendus pendant l'enquête sont versés normalement
|
||||
Et je reçois un email d'excuses avec explication
|
||||
|
||||
Scénario: Suspension définitive si fraude confirmée
|
||||
Étant donné que l'enquête confirme une fraude avérée
|
||||
Quand l'équipe modération prend la décision
|
||||
Alors ma monétisation est définitivement désactivée
|
||||
Et mon solde en attente est gelé (non versé)
|
||||
Et je peux recevoir un strike 4 (ban définitif du compte)
|
||||
|
||||
# ===== SUPPRESSION DÉFINITIVE =====
|
||||
|
||||
Scénario: Suppression définitive sur demande créateur
|
||||
Étant donné que je veux arrêter définitivement la monétisation
|
||||
Quand j'accède à "Paramètres > Monétisation > Supprimer définitivement"
|
||||
Alors une confirmation stricte est demandée
|
||||
Et je dois taper "SUPPRIMER" pour confirmer
|
||||
|
||||
Scénario: Solde versé sous 30 jours après suppression
|
||||
Étant donné que je supprime définitivement ma monétisation
|
||||
Et que mon solde en attente est 127.45€
|
||||
Quand la suppression est confirmée
|
||||
Alors mon solde sera versé sous 30 jours
|
||||
Et je reçois un dernier virement de clôture
|
||||
Et mon e-wallet Mangopay est clôturé
|
||||
|
||||
Scénario: Suppression auto si inactivité 24 mois + solde <50€
|
||||
Étant donné que je n'ai plus publié de contenu depuis 24 mois
|
||||
Et que mon solde en attente est 12.30€ (<50€)
|
||||
Quand le processus de purge RGPD s'exécute
|
||||
Alors ma monétisation est automatiquement supprimée
|
||||
Et mon solde de 12.30€ est perdu (trop faible pour virement)
|
||||
Et mes données KYC sont archivées puis supprimées selon la législation
|
||||
|
||||
Scénario: Email de préavis 60 jours avant purge RGPD
|
||||
Étant donné que je suis inactif depuis 22 mois
|
||||
Quand le système détecte l'inactivité
|
||||
Alors je reçois un email:
|
||||
"""
|
||||
⚠️ Votre monétisation sera supprimée dans 60 jours
|
||||
|
||||
Vous n'avez pas publié de contenu depuis 22 mois.
|
||||
Si vous restez inactif 2 mois de plus (24 mois total), votre monétisation sera automatiquement supprimée.
|
||||
|
||||
Solde actuel: 12.30€
|
||||
|
||||
Pour éviter la suppression, publiez un nouveau contenu ou contactez-nous.
|
||||
"""
|
||||
|
||||
Scénario: Ban définitif compte - Strike 4
|
||||
Étant donné que je reçois un 4ème strike (violation grave ou répétée)
|
||||
Quand l'équipe modération applique le strike 4
|
||||
Alors mon compte est banni définitivement
|
||||
Et ma monétisation est supprimée définitivement
|
||||
Et mon solde en attente est gelé (non versé)
|
||||
Et je ne peux plus créer de nouveau compte (blacklist email/SIRET)
|
||||
|
||||
# ===== NOTIFICATIONS =====
|
||||
|
||||
Scénario: Email pour toute suspension
|
||||
Étant donné que ma monétisation est suspendue (quelle qu'en soit la raison)
|
||||
Quand la suspension devient effective
|
||||
Alors je reçois immédiatement un email:
|
||||
"""
|
||||
⚠️ Monétisation RoadWave suspendue
|
||||
|
||||
Raison: [Raison explicite]
|
||||
|
||||
Que faire:
|
||||
[Procédure de réactivation selon la raison]
|
||||
|
||||
Votre solde actuel sera conservé pendant la suspension.
|
||||
|
||||
Questions? Contactez support@roadwave.com
|
||||
"""
|
||||
|
||||
Scénario: Notification in-app avec raison explicite
|
||||
Étant donné que ma monétisation est suspendue
|
||||
Quand je me connecte à l'application
|
||||
Alors je vois une bannière en haut de mon dashboard:
|
||||
```
|
||||
⚠️ MONÉTISATION SUSPENDUE
|
||||
Raison: 3 strikes actifs
|
||||
Action requise: Résoudre les violations pour réactiver
|
||||
[En savoir plus]
|
||||
```
|
||||
|
||||
Scénario: Email de confirmation lors de réactivation
|
||||
Étant donné que ma monétisation était suspendue
|
||||
Quand elle est réactivée (automatiquement ou manuellement)
|
||||
Alors je reçois un email:
|
||||
"""
|
||||
✅ Monétisation RoadWave réactivée
|
||||
|
||||
Votre monétisation a été réactivée avec succès.
|
||||
Vous recommencez à générer des revenus dès maintenant.
|
||||
|
||||
Tableau de bord: [Lien]
|
||||
"""
|
||||
|
||||
# ===== STATISTIQUES ET MONITORING =====
|
||||
|
||||
Scénario: Dashboard admin - Suspensions actives
|
||||
Étant donné qu'un admin RoadWave consulte les suspensions
|
||||
Quand il accède au dashboard admin "Monétisation > Suspensions"
|
||||
Alors il voit:
|
||||
| raison suspension | nombre actif | taux |
|
||||
| Strikes (3+) | 23 | 1.8% |
|
||||
| RIB invalide | 12 | 0.9% |
|
||||
| Documents KYC expirés | 8 | 0.6% |
|
||||
| Fraude sous enquête | 3 | 0.2% |
|
||||
| TOTAL | 46 | 3.7% |
|
||||
|
||||
Scénario: Alertes si taux de suspension >5%
|
||||
Étant donné que le taux de suspension dépasse 5%
|
||||
Quand le système détecte cette anomalie
|
||||
Alors une alerte est envoyée à l'équipe:
|
||||
"""
|
||||
⚠️ Taux de suspension monétisation anormal: 5.8%
|
||||
|
||||
Causes principales:
|
||||
- RIB invalides: 67 créateurs (3.2%)
|
||||
- Documents expirés: 34 créateurs (1.6%)
|
||||
- Strikes: 21 créateurs (1.0%)
|
||||
|
||||
Action recommandée: Campagne email de rappel mise à jour docs
|
||||
"""
|
||||
|
||||
Scénario: Statistiques personnelles - Temps actif monétisation
|
||||
Étant donné que j'accède à mon dashboard créateur
|
||||
Quand je consulte "Statistiques > Monétisation"
|
||||
Alors je vois:
|
||||
| métrique | valeur |
|
||||
| Date activation monétisation | 20 janvier 2025 |
|
||||
| Temps actif total | 8 mois |
|
||||
| Périodes de désactivation | 2 (3 mois total)|
|
||||
| Suspensions subies | 0 |
|
||||
| Statut actuel | ✅ Actif |
|
||||
|
||||
# ===== RGPD ET CONFORMITÉ =====
|
||||
|
||||
Scénario: Export données suspension (RGPD)
|
||||
Étant donné que je demande l'export de mes données
|
||||
Quand l'export est généré
|
||||
Alors l'historique des suspensions est inclus:
|
||||
```json
|
||||
{
|
||||
"monetization_history": [
|
||||
{
|
||||
"event": "suspension",
|
||||
"reason": "3 active strikes",
|
||||
"suspended_at": "2025-06-15T10:30:00Z",
|
||||
"reactivated_at": "2025-07-01T14:20:00Z",
|
||||
"duration_days": 16
|
||||
},
|
||||
{
|
||||
"event": "voluntary_deactivation",
|
||||
"deactivated_at": "2025-03-01T08:00:00Z",
|
||||
"reactivated_at": "2025-06-15T10:00:00Z",
|
||||
"duration_days": 106
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
Scénario: Suppression compte et données monétisation
|
||||
Étant donné que je supprime définitivement mon compte RoadWave
|
||||
Quand la suppression est confirmée
|
||||
Alors toutes mes données de monétisation sont supprimées:
|
||||
| donnée | action |
|
||||
| Solde en attente | Versé sous 30 jours puis supprimé |
|
||||
| Historique revenus | Archivé 10 ans (obligation légale) |
|
||||
| Documents KYC | Archivés 10 ans chez Mangopay puis supprimés |
|
||||
| E-wallet Mangopay | Clôturé après versement final |
|
||||
|
||||
Scénario: Conservation archives 10 ans obligation légale
|
||||
Étant donné que je supprime mon compte
|
||||
Quand mes données sont archivées
|
||||
Alors RoadWave conserve 10 ans:
|
||||
| donnée archivée | raison |
|
||||
| Relevés mensuels PDF | Obligation comptable France |
|
||||
| Déclarations DAS2 | Obligation fiscale France |
|
||||
| Justificatifs virements | Preuve paiement en cas d'audit |
|
||||
Et après 10 ans, tout est supprimé définitivement
|
||||
|
||||
# ===== CAS PARTICULIERS =====
|
||||
|
||||
Scénario: Suspension temporaire pour maintenance technique
|
||||
Étant donné que Mangopay effectue une maintenance planifiée
|
||||
Quand la maintenance est programmée
|
||||
Alors tous les créateurs reçoivent un email préventif 7 jours avant:
|
||||
"""
|
||||
📅 Maintenance planifiée Mangopay
|
||||
|
||||
Date: 15 juin 2025, 02h00-06h00 (heure de Paris)
|
||||
Impact: Les virements programmés ce jour seront reportés de 24h
|
||||
|
||||
Aucune action de votre part n'est requise.
|
||||
Vos revenus seront versés normalement avec 1 jour de retard.
|
||||
"""
|
||||
|
||||
Scénario: Réactivation progressive après incident majeur
|
||||
Étant donné qu'un incident technique majeur suspend toutes les monétisations
|
||||
Quand l'incident est résolu
|
||||
Alors les réactivations se font progressivement:
|
||||
| vague | critère | % créateurs |
|
||||
| 1 | Top 10% créateurs (revenus) | 10% |
|
||||
| 2 | Créateurs vérifiés | 30% |
|
||||
| 3 | Tous les autres créateurs | 60% |
|
||||
Et cela évite une surcharge système lors de la reprise
|
||||
|
||||
Scénario: Support prioritaire pour créateurs suspendus injustement
|
||||
Étant donné que ma monétisation est suspendue
|
||||
Et que je pense que c'est une erreur
|
||||
Quand je contacte le support avec tag "Suspension monétisation"
|
||||
Alors mon ticket est traité en priorité (SLA 24h)
|
||||
Et un agent expert examine mon cas
|
||||
Et si suspension injustifiée, je suis réactivé immédiatement avec excuses
|
||||
Reference in New Issue
Block a user