diff --git a/docs/diagrammes/entites/modele-moderation.md b/docs/diagrammes/entites/modele-moderation.md
new file mode 100644
index 0000000..3655233
--- /dev/null
+++ b/docs/diagrammes/entites/modele-moderation.md
@@ -0,0 +1,107 @@
+# Modèle de données - Modération
+
+📖 Voir [Règles métier - Section 14 : Modération Flows](../../regles-metier/14-moderation-flows.md)
+
+## Diagramme
+
+```mermaid
+erDiagram
+ USERS ||--o{ REPORTS : "signale"
+ USERS ||--o{ CONTENTS : "crée"
+ USERS ||--o{ MODERATION_BADGES : "possède"
+ USERS ||--o{ APPEALS : "soumet"
+
+ CONTENTS ||--o{ REPORTS : "concerne"
+ CONTENTS ||--o{ SANCTIONS : "sanctionné par"
+
+ REPORTS ||--o| SANCTIONS : "génère"
+ REPORTS ||--o| APPEALS : "fait l'objet de"
+ REPORTS }o--|| MODERATORS : "traité par"
+
+ APPEALS }o--|| MODERATORS : "examiné par"
+
+ SANCTIONS ||--o{ STRIKES : "crée"
+
+ USERS {
+ uuid id PK
+ string email UK
+ string pseudo UK
+ int trust_score
+ string role
+ }
+
+ CONTENTS {
+ uuid id PK
+ uuid creator_id FK
+ string title
+ string status
+ point geo_location
+ boolean is_moderated
+ }
+
+ REPORTS {
+ uuid id PK
+ uuid content_id FK
+ uuid reporter_id FK
+ uuid moderator_id FK
+ string category
+ string status
+ int ai_score
+ int priority
+ string decision
+ }
+
+ SANCTIONS {
+ uuid id PK
+ uuid report_id FK
+ uuid content_id FK
+ uuid creator_id FK
+ string sanction_type
+ int duration_days
+ boolean is_active
+ }
+
+ STRIKES {
+ uuid id PK
+ uuid creator_id FK
+ uuid sanction_id FK
+ int strike_number
+ boolean is_active
+ }
+
+ APPEALS {
+ uuid id PK
+ uuid report_id FK
+ uuid creator_id FK
+ uuid moderator_id FK
+ string ticket_number UK
+ string status
+ string decision
+ }
+
+ MODERATORS {
+ uuid id PK
+ string name
+ string role
+ }
+
+ MODERATION_BADGES {
+ uuid id PK
+ uuid user_id FK
+ string badge_type
+ int reports_validated
+ decimal accuracy_rate
+ boolean is_active
+ }
+```
+
+## Légende
+
+**Entités** :
+- **REPORTS** : Signalements - 7 catégories (haine, sexuel, illégal, copyright, spam, désinformation, autre), scoring IA 0-100%, priorité CRITIQUE/HAUTE/MOYENNE/BASSE
+- **SANCTIONS** : Strike (avertissement), Suspension (7j/30j), Ban permanent
+- **APPEALS** : Appels créateurs - ticket #MOD-YYYY-XXXXX, délai 7j, examen 72h
+- **STRIKES** : Compteur créateur 1/4 à 4/4 (Strike 4 = ban permanent, expiration 6 mois)
+- **MODERATION_BADGES** : Bronze (5 validés, 70%), Argent (20 validés, 80%), Or (50 validés, 90%)
+
+**Statuts REPORTS** : `received` → `transcribing` → `analyzing` → `pending_review` → `in_review` → `validated`/`rejected` → `closed`
diff --git a/docs/diagrammes/etats/signalement-lifecycle.md b/docs/diagrammes/etats/signalement-lifecycle.md
new file mode 100644
index 0000000..c74c943
--- /dev/null
+++ b/docs/diagrammes/etats/signalement-lifecycle.md
@@ -0,0 +1,75 @@
+# Cycle de vie d'un signalement
+
+📖 Voir [Règles métier - Section 14 : Modération Flows](../../regles-metier/14-moderation-flows.md)
+
+## Diagramme
+
+```mermaid
+stateDiagram-v2
+ [*] --> Reçu: Utilisateur envoie signalement
+
+ Reçu --> EnTranscription: Ajout à la file
+
+ EnTranscription --> EnAnalyseIA: Transcription terminée
+
+ EnAnalyseIA --> EnAttenteModo: Score IA calculé
Priorisé dans la file
+ EnAnalyseIA --> ActionAuto: Score IA >95%
+ Catégorie évidente
+
+ EnAttenteModo --> EnExamen: Modérateur prend en charge
+
+ EnExamen --> Validé: Violation confirmée
+ EnExamen --> Rejeté: Pas de violation
+
+ ActionAuto --> Validé: Sanction automatique
+
+ Validé --> SanctionAppliquée: Notification créateur
+
+ SanctionAppliquée --> EnAppel: Créateur conteste
sous 7 jours
+ SanctionAppliquée --> Clôturé: Pas de contestation
ou délai expiré
+
+ EnAppel --> ExamenAppel: Modérateur senior
examine sous 72h
+
+ ExamenAppel --> AppelAccepté: Sanction annulée
+ ExamenAppel --> AppelRejeté: Sanction maintenue
+
+ AppelAccepté --> Clôturé: Strike retiré
Contenu rétabli
+ AppelRejeté --> Clôturé: Sanction définitive
+
+ Rejeté --> Clôturé: Notification signaleur
+
+ Clôturé --> [*]
+
+ note right of EnAttenteModo
+ File intelligente
+ Tri par priorité:
+ - CRITIQUE (score ≥90)
+ - HAUTE (70-89)
+ - MOYENNE (40-69)
+ - BASSE (<40)
+ end note
+
+ note right of ActionAuto
+ Action immédiate si:
+ - Score IA >95%
+ - Pattern évident
+ - Spam détecté
+ end note
+
+ note right of EnAppel
+ Délai: 7 jours max
+ Ticket unique généré
+ end note
+```
+
+## Légende
+
+**États principaux** :
+- **Reçu** : Signalement initial (<1s)
+- **EnTranscription** : Whisper large-v3 (1-20 min)
+- **EnAnalyseIA** : Score confiance 0-100% (<1 min)
+- **ActionAuto** : Sanction automatique si score >95%
+- **EnAttenteModo** : File prioritaire (2h à 72h selon priorité)
+- **EnExamen** : Modérateur examine (5-20 min)
+- **SanctionAppliquée** : Notification multi-canal
+- **EnAppel** : Examen senior (72h max)
+- **Clôturé** : Archivage 3 ans (RGPD)
diff --git a/docs/diagrammes/flux/moderation-signalement.md b/docs/diagrammes/flux/moderation-signalement.md
new file mode 100644
index 0000000..32f04bc
--- /dev/null
+++ b/docs/diagrammes/flux/moderation-signalement.md
@@ -0,0 +1,75 @@
+# Flux de modération - Processus de signalement
+
+📖 Voir [Règles métier - Section 14 : Modération Flows](../../regles-metier/14-moderation-flows.md)
+
+## Diagramme
+
+```mermaid
+flowchart TD
+ Start([Utilisateur signale un contenu]) --> Form[Formulaire signalement
7 catégories + commentaire optionnel]
+ Form --> Submit[Envoi signalement]
+ Submit --> Toast[Toast confirmation
Traitement sous 24-48h]
+
+ Submit --> Queue[Ajout file d'attente]
+ Queue --> Transcription[Transcription automatique
Whisper large-v3]
+ Transcription --> AI[Analyse IA
Score confiance 0-100%]
+
+ AI --> Priority{Calcul priorité}
+ Priority -->|Score ≥90| Critical[🔴 CRITIQUE
Traitement <2h]
+ Priority -->|Score 70-89| High[🟠 HAUTE
Traitement <24h]
+ Priority -->|Score 40-69| Medium[🟡 MOYENNE
Traitement <24h]
+ Priority -->|Score <40| Low[⚪ BASSE
Traitement <72h]
+
+ Critical --> AutoAction{Score IA >95%
+ catégorie évidente?}
+ AutoAction -->|Oui| AutoSanction[Action automatique]
+ AutoAction -->|Non| ModReview
+
+ High --> ModReview[Examen modérateur]
+ Medium --> ModReview
+ Low --> ModReview
+
+ ModReview --> Decision{Décision}
+
+ Decision -->|Validé| Sanction[Application sanction
Strike/Suspension/Ban]
+ Decision -->|Rejeté| Reject[Signalement rejeté]
+
+ AutoSanction --> Notify
+ Sanction --> Notify[Notification créateur
Email + Push + In-app]
+
+ Notify --> Creator{Créateur réagit?}
+ Creator -->|Conteste
sous 7 jours| Appeal[Formulaire d'appel
Ticket généré]
+ Creator -->|Accepte ou
pas de réaction| Final1[Sanction définitive]
+
+ Appeal --> SeniorMod[Modérateur senior
Examen sous 72h]
+ SeniorMod --> AppealDecision{Décision appel}
+
+ AppealDecision -->|Accepté| Overturn[Annulation sanction
Strike retiré]
+ AppealDecision -->|Rejeté| Maintain[Maintien sanction]
+
+ Overturn --> Final2[Décision définitive]
+ Maintain --> Final2
+
+ Reject --> NotifyReporter[Notification signaleur
Mise à jour historique]
+
+ Final1 --> End([Fin du processus])
+ Final2 --> End
+ NotifyReporter --> End
+
+ style Critical fill:#ff6b6b,stroke:#c92a2a,color:#fff
+ style High fill:#ff922b,stroke:#d9480f,color:#fff
+ style Medium fill:#ffd43b,stroke:#f59f00,color:#000
+ style Low fill:#e9ecef,stroke:#adb5bd,color:#000
+ style Sanction fill:#fa5252,stroke:#c92a2a,color:#fff
+ style Overturn fill:#51cf66,stroke:#2b8a3e,color:#fff
+ style AutoSanction fill:#ff6b6b,stroke:#c92a2a,color:#fff
+```
+
+## Légende
+
+**Priorités de traitement** :
+- 🔴 **CRITIQUE** (score ≥90) : <2h - Violence, suicide, danger immédiat
+- 🟠 **HAUTE** (70-89) : <24h - Haine, harcèlement
+- 🟡 **MOYENNE** (40-69) : <24h - Spam, contenu inapproprié
+- ⚪ **BASSE** (<40) : <72h - Qualité audio, tags incorrects
+
+**Calcul priorité** : `(Score_IA × 0.7) + (Signalements_cumulés × 0.2) + (Fiabilité_signaleur × 0.1)`
diff --git a/docs/diagrammes/sequence/processus-appel-moderation.md b/docs/diagrammes/sequence/processus-appel-moderation.md
new file mode 100644
index 0000000..23fc4ef
--- /dev/null
+++ b/docs/diagrammes/sequence/processus-appel-moderation.md
@@ -0,0 +1,59 @@
+# Processus d'appel de modération
+
+📖 Voir [Règles métier - Section 14 : Modération Flows](../../regles-metier/14-moderation-flows.md)
+
+## Diagramme
+
+```mermaid
+sequenceDiagram
+ actor Créateur
+ participant App as Application Mobile
+ participant API as Backend API
+ participant Email as Service Email
+ actor ModSenior as Modérateur Senior
+
+ Note over Créateur,ModSenior: Notification sanction initiale
+
+ API->>Créateur: Email + Push + In-app
(catégorie + raison + extrait)
+
+ Note over Créateur,ModSenior: Soumission appel (J+0 à J+7)
+
+ Créateur->>App: Clique "Contester cette décision"
+ App->>Créateur: Affiche formulaire d'appel
+
+ Créateur->>App: Remplit formulaire + preuves
+ App->>API: POST /appeals
+
+ API->>API: Génère ticket #MOD-2026-XXXXX
+
+ API->>Email: Email confirmation
+ Email->>Créateur: "Appel traité sous 72h"
+
+ Note over Créateur,ModSenior: Examen modérateur senior (J+0 à J+3)
+
+ ModSenior->>API: Consulte appel
+ API-->>ModSenior: Données complètes
(signalement + arguments + historique)
+
+ alt Appel accepté
+ ModSenior->>API: Accepter appel
+ API->>Email: Email créateur
+ Email->>Créateur: "✅ Appel accepté
Strike retiré"
+ else Appel rejeté
+ ModSenior->>API: Rejeter appel
+ API->>Email: Email créateur
+ Email->>Créateur: "❌ Appel rejeté
Décision définitive"
+ end
+
+ opt Cas complexe (J+3)
+ API->>Email: Email intermédiaire
+ Email->>Créateur: "Examen approfondi
Réponse sous 2 jours"
+ end
+```
+
+## Légende
+
+**Phases** :
+1. **Notification sanction** : Multi-canal (Email + Push + In-app)
+2. **Soumission appel** : Délai 7 jours max après sanction, formulaire obligatoire (raison + arguments), preuves optionnelles (max 5 fichiers, 10 MB)
+3. **Examen senior** : 72h standard, 5 jours si complexe avec notification intermédiaire J+3
+4. **Décision** : Accepté (strike retiré, contenu rétabli) ou Rejeté (définitif, pas de second appel)
diff --git a/mkdocs.yml b/mkdocs.yml
index fec7c46..cbb2989 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -36,11 +36,16 @@ theme:
plugins:
- search:
lang: fr
+ - glightbox: # Lightbox pour agrandir les images
markdown_extensions:
- admonition
- pymdownx.details
- - pymdownx.superfences
+ - pymdownx.superfences:
+ custom_fences:
+ - name: mermaid
+ class: mermaid
+ format: !!python/name:pymdownx.superfences.fence_code_format
- pymdownx.tabbed:
alternate_style: true
- pymdownx.emoji:
@@ -50,6 +55,7 @@ markdown_extensions:
- toc:
permalink: true
- attr_list
+ - md_in_html # Permet d'utiliser du markdown dans du HTML
- def_list
nav:
@@ -109,6 +115,15 @@ nav:
- Transverse:
- '19: Autres Comportements': regles-metier/19-autres-comportements.md
- 'Annexe: Post-MVP': regles-metier/ANNEXE-POST-MVP.md
+ - Diagrammes:
+ - Flux:
+ - 'Processus de signalement': diagrammes/flux/moderation-signalement.md
+ - États:
+ - 'Cycle de vie signalement': diagrammes/etats/signalement-lifecycle.md
+ - Séquences:
+ - "Processus d'appel modération": diagrammes/sequence/processus-appel-moderation.md
+ - Entités:
+ - 'Modèle modération': diagrammes/entites/modele-moderation.md
- Documentation Légale:
- Introduction: legal/README.md
- "Conditions Générales d'Utilisation": legal/cgu.md
@@ -117,6 +132,10 @@ nav:
- 'Charte Créateur': legal/charte-createur.md
- 'Mentions Légales': legal/mentions-legales.md
- 'Politique de Confidentialité': legal/politique-confidentialite.md
+ - Interfaces:
+ - Vue d'ensemble: interfaces/README.md
+ - Mobile:
+ - Navigation & Architecture: interfaces/mobile/navigation.md
- Mobile:
- 'Stratégie Permissions': mobile/permissions-strategy.md
- 'Validation TestFlight': mobile/testflight-validation-plan.md