doc(diagrammes): ajouter diagrammes Mermaid pour modération

Structure minimaliste :
- docs/diagrammes/flux/ : Flowcharts
- docs/diagrammes/etats/ : State diagrams
- docs/diagrammes/sequence/ : Sequence diagrams
- docs/diagrammes/entites/ : Entity-Relationship diagrams

Exemples créés pour modération (Section 14) :
- Flux de signalement complet
- Cycle de vie d'un signalement (13 états)
- Processus d'appel créateur
- Modèle de données modération (8 entités)

Chaque fichier contient uniquement :
- Référence vers règle métier
- Diagramme Mermaid détaillé
- Légende courte

Intégration dans navigation MkDocs.
This commit is contained in:
jpgiannetti
2026-02-07 15:56:48 +01:00
parent f6a5b9afce
commit bd724dcb8e
5 changed files with 336 additions and 1 deletions

View File

@@ -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`

View File

@@ -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é<br/>Priorisé dans la file
EnAnalyseIA --> ActionAuto: Score IA >95%<br/>+ 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<br/>sous 7 jours
SanctionAppliquée --> Clôturé: Pas de contestation<br/>ou délai expiré
EnAppel --> ExamenAppel: Modérateur senior<br/>examine sous 72h
ExamenAppel --> AppelAccepté: Sanction annulée
ExamenAppel --> AppelRejeté: Sanction maintenue
AppelAccepté --> Clôturé: Strike retiré<br/>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)

View File

@@ -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<br/>7 catégories + commentaire optionnel]
Form --> Submit[Envoi signalement]
Submit --> Toast[Toast confirmation<br/>Traitement sous 24-48h]
Submit --> Queue[Ajout file d'attente]
Queue --> Transcription[Transcription automatique<br/>Whisper large-v3]
Transcription --> AI[Analyse IA<br/>Score confiance 0-100%]
AI --> Priority{Calcul priorité}
Priority -->|Score ≥90| Critical[🔴 CRITIQUE<br/>Traitement <2h]
Priority -->|Score 70-89| High[🟠 HAUTE<br/>Traitement <24h]
Priority -->|Score 40-69| Medium[🟡 MOYENNE<br/>Traitement <24h]
Priority -->|Score <40| Low[⚪ BASSE<br/>Traitement <72h]
Critical --> AutoAction{Score IA >95%<br/>+ 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<br/>Strike/Suspension/Ban]
Decision -->|Rejeté| Reject[Signalement rejeté]
AutoSanction --> Notify
Sanction --> Notify[Notification créateur<br/>Email + Push + In-app]
Notify --> Creator{Créateur réagit?}
Creator -->|Conteste<br/>sous 7 jours| Appeal[Formulaire d'appel<br/>Ticket généré]
Creator -->|Accepte ou<br/>pas de réaction| Final1[Sanction définitive]
Appeal --> SeniorMod[Modérateur senior<br/>Examen sous 72h]
SeniorMod --> AppealDecision{Décision appel}
AppealDecision -->|Accepté| Overturn[Annulation sanction<br/>Strike retiré]
AppealDecision -->|Rejeté| Maintain[Maintien sanction]
Overturn --> Final2[Décision définitive]
Maintain --> Final2
Reject --> NotifyReporter[Notification signaleur<br/>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)`

View File

@@ -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<br/>(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<br/>(signalement + arguments + historique)
alt Appel accepté
ModSenior->>API: Accepter appel
API->>Email: Email créateur
Email->>Créateur: "✅ Appel accepté<br/>Strike retiré"
else Appel rejeté
ModSenior->>API: Rejeter appel
API->>Email: Email créateur
Email->>Créateur: "❌ Appel rejeté<br/>Décision définitive"
end
opt Cas complexe (J+3)
API->>Email: Email intermédiaire
Email->>Créateur: "Examen approfondi<br/>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)

View File

@@ -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