Files
roadwave/features/api/monetisation/desactivation-suspension.feature
jpgiannetti 37c62206ad 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>
2026-02-01 11:31:41 +01:00

382 lines
16 KiB
Gherkin
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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