Règles RGPD (docs/domains/_shared/rules/rgpd.md): - Ajouter sections 13.11-13.22 (droits utilisateurs, mineurs, sécurité) - Droit de rectification, opposition, limitation du traitement - Gestion des mineurs: 13 ans minimum + consentement parental 13-15 ans - Protection renforcée: RoadWave Kids pour < 13 ans - Sécurité: chiffrement multi-niveaux, procédure breach 72h CNIL - Politique de confidentialité avec versioning - Sous-traitants, DPIA, délais de réponse Entités (6 nouvelles): - PARENTAL_CONSENTS + PARENTAL_CONTROLS (workflow 13-15 ans) - PRIVACY_POLICY_VERSIONS + USER_POLICY_ACCEPTANCES - ACCOUNT_DELETIONS (grace period 30j) - BREACH_INCIDENTS + BREACH_AFFECTED_USERS - USER_PROFILE_HISTORY (audit trail rectification) - DATA_RETENTION_LOGS (purge 5 ans) Diagrammes séquences (5 nouveaux): - Consentement parental avec validation email - Anonymisation GPS automatique après 24h - Notification breach CNIL (procédure 72h) - Export données asynchrone - Suppression compte avec grace period Cycles de vie (3 nouveaux + 1 enrichi): - parental-consent-lifecycle.md - breach-incident-lifecycle.md - account-deletion-lifecycle.md - user-account-lifecycle.md (ajout états mineurs, frozen) Features BDD (4 nouvelles, 195 scénarios RGPD): - minors-protection.feature (9 scénarios) - data-security.feature (12 scénarios) - privacy-policy.feature (8 scénarios) - user-rights.feature (8 scénarios) Infrastructure: - Réorganiser docs générées: docs/bdd + output → generated/bdd + generated/pdf - Mettre à jour mkdocs.yml, Makefile, scripts Python - Ajouter /generated/ au .gitignore
Context Map RoadWave
Vue d'ensemble
RoadWave est organisé selon les principes du Domain-Driven Design (DDD) avec 7 bounded contexts clairs. Cette architecture modulaire permet une meilleure séparation des préoccupations, facilite la maintenance et l'évolution du système.
Architecture des domaines
graph TB
subgraph "Core Domain"
SHARED[_shared<br/>Authentification, RGPD, Erreurs]
end
subgraph "Supporting Subdomains"
RECO[recommendation<br/>Jauges & Algorithme]
CONTENT[content<br/>Audio-guides & Live]
MODERATION[moderation<br/>Signalements & Sanctions]
end
subgraph "Generic Subdomains"
ADS[advertising<br/>Publicités]
PREMIUM[premium<br/>Abonnements]
MONETIZATION[monetization<br/>Monétisation créateurs]
end
%% Dépendances principales
RECO --> SHARED
RECO --> CONTENT
CONTENT --> SHARED
ADS --> SHARED
ADS --> RECO
PREMIUM --> SHARED
PREMIUM --> CONTENT
MONETIZATION --> SHARED
MONETIZATION --> CONTENT
MONETIZATION --> ADS
MONETIZATION --> PREMIUM
MODERATION --> SHARED
MODERATION --> CONTENT
%% Relations anti-corruption
ADS -.-|bloqué par| PREMIUM
MODERATION -.->|peut démonétiser| MONETIZATION
Bounded Contexts
Core Domain
🔐 _shared
Responsabilité : Fonctionnalités transversales essentielles
- Authentification et inscription via Zitadel
- Conformité RGPD (consentements, suppression données)
- Gestion cohérente des erreurs
- Entités centrales :
USERS,CONTENTS,SUBSCRIPTIONS,LISTENING_HISTORY
Utilisé par : Tous les autres domaines
Supporting Subdomains
🎯 recommendation
Responsabilité : Recommandation géolocalisée de contenus
- Jauges de centres d'intérêt (scores dynamiques 0-100)
- Algorithme de scoring (distance + affinité)
- Adaptation selon interactions utilisateur
- Entités :
USER_INTERESTS,INTEREST_CATEGORIES
Dépend de : _shared, content
Ubiquitous Language : Interest Gauge, Recommendation Score, Geographic Priority, Interest Decay
🎙️ content
Responsabilité : Création et diffusion de contenus audio
- Audio-guides multi-séquences géolocalisés
- Radio live et enregistrements
- Contenus géolocalisés pour voiture/piéton
- Détection de contenu protégé (droits d'auteur)
- Entités :
AUDIO_GUIDES,LIVE_STREAMS,GUIDE_SEQUENCES,LIVE_RECORDINGS
Dépend de : _shared
Interagit avec : moderation (modération), monetization (revenus)
Ubiquitous Language : Audio Guide, Guide Sequence, Live Stream, Geofence, Content Fingerprint
🛡️ moderation
Responsabilité : Modération et sécurité de la plateforme
- Workflow de traitement des signalements
- Système de strikes et sanctions
- Processus d'appel
- Badges de confiance créateurs
- Modération communautaire
- Entités :
REPORTS,SANCTIONS,APPEALS,STRIKES,BADGES
Dépend de : _shared, content
Peut affecter : monetization (démonétisation)
Ubiquitous Language : Report, Strike, Sanction, Appeal, Trust Badge, Community Moderation
Generic Subdomains
📢 advertising
Responsabilité : Publicités audio géociblées
- Campagnes publicitaires
- Ciblage géographique et par intérêts
- Métriques (impressions, CPM)
- Insertion dynamique dans flux audio
- Entités :
AD_CAMPAIGNS,AD_METRICS,AD_IMPRESSIONS
Dépend de : _shared, recommendation (ciblage)
Bloqué par : premium (pas de pub pour abonnés)
Ubiquitous Language : Ad Campaign, Ad Impression, CPM, Ad Targeting, Skip Rate
💎 premium
Responsabilité : Abonnements et fonctionnalités premium
- Abonnements payants (mensuel/annuel)
- Mode offline (téléchargement, synchro)
- Notifications personnalisées
- Avantages : sans pub, qualité audio supérieure
- Entités :
PREMIUM_SUBSCRIPTIONS,ACTIVE_STREAMS,OFFLINE_DOWNLOADS
Dépend de : _shared, content
Bloque : advertising (désactivation pubs)
Ubiquitous Language : Premium Subscription, Offline Download, Sync Queue, Premium Tier, Auto-Renewal
💰 monetization
Responsabilité : Monétisation des créateurs
- KYC (vérification identité)
- Calcul des revenus (pub + abonnements)
- Versements mensuels via Mangopay
- Tableaux de bord revenus
- Entités :
CREATOR_MONETIZATION,REVENUES,PAYOUTS
Dépend de : _shared, content, advertising, premium
Affecté par : moderation (démonétisation en cas de sanction)
Ubiquitous Language : Revenue Share, KYC Verification, Payout, Minimum Threshold
Relations entre domaines
Upstream/Downstream
| Upstream (Fournisseur) | Downstream (Consommateur) | Type de relation |
|---|---|---|
_shared |
Tous | Kernel partagé |
content |
recommendation |
Customer/Supplier |
recommendation |
advertising |
Customer/Supplier |
premium |
advertising |
Anti-Corruption Layer |
Événements de domaine
Les domaines communiquent via des événements métier :
- UserRegistered (
_shared→ tous) : Nouvel utilisateur - ContentPublished (
content→recommendation,moderation) : Nouveau contenu - InterestGaugeUpdated (
recommendation→advertising) : Mise à jour jauges - UserBanned (
moderation→monetization) : Bannissement utilisateur - SubscriptionActivated (
premium→advertising) : Activation premium
Structure de la documentation
Chaque domaine suit cette organisation :
domains/<domain>/
├── README.md # Vue d'ensemble du domaine
├── rules/ # Règles métier (*.md)
├── entities/ # Diagrammes entités (*.md)
├── sequences/ # Diagrammes séquences (*.md)
├── states/ # Diagrammes états (*.md)
├── flows/ # Diagrammes flux (*.md)
└── features/ # Tests BDD Gherkin (*.feature)
Navigation
- (structure legacy, déprécié)
- 🏛️ ADR (Architecture Decision Records)
- ⚖️ Documentation légale
- 🖥️ Interfaces UI
- 🔧 Documentation technique
Ubiquitous Language Global
Termes transversaux utilisés dans tous les domaines :
- User : Utilisateur (auditeur, créateur, ou les deux)
- Content : Contenu audio diffusé sur la plateforme
- Creator : Utilisateur créant du contenu
- Geolocation : Position GPS de l'utilisateur
- Stream : Flux de lecture audio
- Subscription : Abonnement (à un créateur ou à premium)
- Interest : Centre d'intérêt (automobile, voyage, musique, etc.)
Principes d'architecture
- Bounded Contexts clairs : Chaque domaine a des limites bien définies
- Autonomie des domaines : Chaque domaine peut évoluer indépendamment
- Communication asynchrone : Préférence pour les événements vs appels directs
- Anti-Corruption Layer : Protection contre les changements externes
- Alignment code/docs : Structure docs ↔ structure
backend/internal/
Alignement avec le code backend
backend/internal/ docs/domains/
├── auth/ ←→ _shared/
├── user/ ←→ _shared/
├── content/ ←→ content/
├── geo/ ←→ recommendation/
├── streaming/ ←→ content/
├── moderation/ ←→ moderation/
├── payment/ ←→ monetization/
└── analytics/ ←→ recommendation/
Dernière mise à jour : 2026-02-07 Statut : ✅ Active Auteur : Documentation DDD initiative