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:
107
docs/diagrammes/entites/modele-moderation.md
Normal file
107
docs/diagrammes/entites/modele-moderation.md
Normal 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`
|
||||||
75
docs/diagrammes/etats/signalement-lifecycle.md
Normal file
75
docs/diagrammes/etats/signalement-lifecycle.md
Normal 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)
|
||||||
75
docs/diagrammes/flux/moderation-signalement.md
Normal file
75
docs/diagrammes/flux/moderation-signalement.md
Normal 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)`
|
||||||
59
docs/diagrammes/sequence/processus-appel-moderation.md
Normal file
59
docs/diagrammes/sequence/processus-appel-moderation.md
Normal 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)
|
||||||
21
mkdocs.yml
21
mkdocs.yml
@@ -36,11 +36,16 @@ theme:
|
|||||||
plugins:
|
plugins:
|
||||||
- search:
|
- search:
|
||||||
lang: fr
|
lang: fr
|
||||||
|
- glightbox: # Lightbox pour agrandir les images
|
||||||
|
|
||||||
markdown_extensions:
|
markdown_extensions:
|
||||||
- admonition
|
- admonition
|
||||||
- pymdownx.details
|
- pymdownx.details
|
||||||
- pymdownx.superfences
|
- pymdownx.superfences:
|
||||||
|
custom_fences:
|
||||||
|
- name: mermaid
|
||||||
|
class: mermaid
|
||||||
|
format: !!python/name:pymdownx.superfences.fence_code_format
|
||||||
- pymdownx.tabbed:
|
- pymdownx.tabbed:
|
||||||
alternate_style: true
|
alternate_style: true
|
||||||
- pymdownx.emoji:
|
- pymdownx.emoji:
|
||||||
@@ -50,6 +55,7 @@ markdown_extensions:
|
|||||||
- toc:
|
- toc:
|
||||||
permalink: true
|
permalink: true
|
||||||
- attr_list
|
- attr_list
|
||||||
|
- md_in_html # Permet d'utiliser du markdown dans du HTML
|
||||||
- def_list
|
- def_list
|
||||||
|
|
||||||
nav:
|
nav:
|
||||||
@@ -109,6 +115,15 @@ nav:
|
|||||||
- Transverse:
|
- Transverse:
|
||||||
- '19: Autres Comportements': regles-metier/19-autres-comportements.md
|
- '19: Autres Comportements': regles-metier/19-autres-comportements.md
|
||||||
- 'Annexe: Post-MVP': regles-metier/ANNEXE-POST-MVP.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:
|
- Documentation Légale:
|
||||||
- Introduction: legal/README.md
|
- Introduction: legal/README.md
|
||||||
- "Conditions Générales d'Utilisation": legal/cgu.md
|
- "Conditions Générales d'Utilisation": legal/cgu.md
|
||||||
@@ -117,6 +132,10 @@ nav:
|
|||||||
- 'Charte Créateur': legal/charte-createur.md
|
- 'Charte Créateur': legal/charte-createur.md
|
||||||
- 'Mentions Légales': legal/mentions-legales.md
|
- 'Mentions Légales': legal/mentions-legales.md
|
||||||
- 'Politique de Confidentialité': legal/politique-confidentialite.md
|
- 'Politique de Confidentialité': legal/politique-confidentialite.md
|
||||||
|
- Interfaces:
|
||||||
|
- Vue d'ensemble: interfaces/README.md
|
||||||
|
- Mobile:
|
||||||
|
- Navigation & Architecture: interfaces/mobile/navigation.md
|
||||||
- Mobile:
|
- Mobile:
|
||||||
- 'Stratégie Permissions': mobile/permissions-strategy.md
|
- 'Stratégie Permissions': mobile/permissions-strategy.md
|
||||||
- 'Validation TestFlight': mobile/testflight-validation-plan.md
|
- 'Validation TestFlight': mobile/testflight-validation-plan.md
|
||||||
|
|||||||
Reference in New Issue
Block a user