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>
309 lines
14 KiB
Gherkin
309 lines
14 KiB
Gherkin
# 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
|