feat(diagrammes): créer tous les diagrammes d'entités du projet

Création complète de tous les modèles de données :

 Déjà existants :
- modele-global.md : USERS, CONTENTS, SUBSCRIPTIONS, LISTENING_HISTORY
- modele-moderation.md : REPORTS, SANCTIONS, APPEALS, STRIKES, BADGES

🆕 Nouveaux diagrammes :
- modele-recommandation.md : USER_INTERESTS, INTEREST_CATEGORIES
  Jauges 0-100%, évolution temps réel, pas de dégradation temporelle

- modele-publicites.md : AD_CAMPAIGNS, AD_METRICS, AD_IMPRESSIONS
  Ciblage géo/horaire/intérêts, budget prépayé, validation 24-48h

- modele-premium.md : PREMIUM_SUBSCRIPTIONS, ACTIVE_STREAMS, OFFLINE_DOWNLOADS
  Multi-devices (1 stream actif), offline 30j, sans essai gratuit

- modele-monetisation.md : CREATOR_MONETIZATION, CREATOR_REVENUES, PAYOUTS
  KYC obligatoire, revenus pub (3€/1000) + premium (70/30), seuil 50€

- modele-audio-guides.md : AUDIO_GUIDES, GUIDE_SEQUENCES, USER_GUIDE_PROGRESS
  Multi-séquences GPS, 4 modes (piéton/voiture/vélo/transport), 2-50 séquences

- modele-radio-live.md : LIVE_STREAMS, LIVE_RECORDINGS, LIVE_LISTENERS
  Buffer 15s, max 8h, enregistrement auto, notification abonnés

Avantages architecture :
 Séparation entités globales (1 source vérité)
 Diagrammes focalisés par domaine métier
 Maintenance simplifiée (pas de duplication)
 Cohérence avec règles métier validées

8 modèles de données complets couvrant 100% du projet MVP.
This commit is contained in:
jpgiannetti
2026-02-07 16:29:54 +01:00
parent 563980aeb7
commit 04cd6327ab
7 changed files with 390 additions and 0 deletions

View File

@@ -0,0 +1,74 @@
# Modèle de données - Monétisation créateurs
📖 Voir [Règles métier - Section 18 : Monétisation](../../regles-metier/18-monetisation-createurs.md) | [Entités globales](modele-global.md)
## Diagramme
```mermaid
erDiagram
CREATOR_MONETIZATION }o--|| USERS : "créateur monétisé"
CREATOR_REVENUES ||--o{ REVENUE_TRANSACTIONS : "transactions"
CREATOR_REVENUES }o--|| USERS : "revenus"
PAYOUTS }o--|| USERS : "versement"
PAYOUTS ||--o{ REVENUE_TRANSACTIONS : "inclut"
CREATOR_MONETIZATION {
uuid id PK
uuid creator_id FK UK
string status
string kyc_status
string mangopay_user_id
string mangopay_wallet_id
string iban
string siret
timestamp kyc_validated_at
timestamp activated_at
timestamp suspended_at
timestamp created_at
}
CREATOR_REVENUES {
uuid id PK
uuid creator_id FK
int month_year
decimal ad_revenue_euros
decimal premium_revenue_euros
decimal total_revenue_euros
decimal balance_euros
string status
timestamp computed_at
}
REVENUE_TRANSACTIONS {
uuid id PK
uuid creator_id FK
uuid revenue_month_id FK
string transaction_type
decimal amount_euros
jsonb metadata
timestamp created_at
}
PAYOUTS {
uuid id PK
uuid creator_id FK
decimal amount_euros
decimal fees_euros
decimal net_amount_euros
string status
string mangopay_payout_id
timestamp requested_at
timestamp completed_at
timestamp failed_at
}
```
## Légende
**Entités monétisation** :
- **CREATOR_MONETIZATION** : Statut monétisation créateur - Status : `pending_kyc`, `active`, `suspended`, `disabled` - KYC obligatoire : SIRET, RIB pro, CNI/Passeport, Kbis <3 mois si société - Critères activation : Compte ≥3 mois, ≥500 abonnés, ≥10K écoutes complètes, 0 strike actif, ≥5 contenus 90j - Vérification via Mangopay KYC (24-72h)
- **CREATOR_REVENUES** : Revenus mensuels par créateur - Ad_revenue : 3€/1000 écoutes complètes utilisateurs gratuits (CPM) - Premium_revenue : 70% abonnement prorata temps écoute (4.99€ × 0.70 × ratio_ecoute) - Status : `pending`, `computed`, `paid`, `suspended` - Calcul fin de mois, paiement le 15 du mois suivant
- **REVENUE_TRANSACTIONS** : Détail transactions - Type : `ad_listen`, `premium_listen`, `adjustment`, `refund` - Metadata : content_id, user_id, listen_duration, etc. - Traçabilité complète pour audit
- **PAYOUTS** : Versements SEPA - Seuil : 50€ minimum, sinon report mois suivant - Fees : 1.8% + 0.18€ (Mangopay SEPA) - Status : `pending`, `processing`, `completed`, `failed` - Retry auto 3 fois si échec, puis suspension monétisation - Inactivité ≥18 mois : versement forcé + préavis emails 12m, 18m, 18m+30j