Remplace les diagrammes Mermaid par DBML (via kroki-dbml) pour une meilleure expressivité des schémas de base de données : - Ajout support notes, contraintes et indexes détaillés - Migration de tous les schémas d'entités partagées - Ajout fichier exemple dbml-example.md - Configuration plugin mkdocs-kroki pour rendu DBML
106 lines
3.7 KiB
Markdown
106 lines
3.7 KiB
Markdown
# Reports
|
|
|
|
📖 Signalements de contenu et workflow de modération
|
|
|
|
## Diagramme
|
|
|
|
```kroki-dbml
|
|
Table users {
|
|
id uuid [primary key]
|
|
username varchar(50)
|
|
}
|
|
|
|
Table contents {
|
|
id uuid [primary key]
|
|
title varchar(255)
|
|
user_id uuid [not null]
|
|
}
|
|
|
|
Table reports {
|
|
id uuid [primary key]
|
|
content_id uuid [not null, ref: > contents.id, note: 'Content being reported']
|
|
reporter_id uuid [not null, ref: > users.id, note: 'User who filed the report']
|
|
moderator_id uuid [ref: > users.id, note: 'Moderator assigned to review (NULL if pending)']
|
|
category report_category_enum [not null]
|
|
status report_status_enum [not null, default: 'pending']
|
|
comment text [note: 'Reporter explanation (mandatory for "other" category)']
|
|
evidence_url varchar(512) [note: 'Screenshot or additional proof URL']
|
|
reported_at timestamp [not null, default: `now()`]
|
|
reviewed_at timestamp [note: 'When moderator reviewed the report']
|
|
moderator_notes text [note: 'Internal moderator notes']
|
|
action_taken report_action_enum [note: 'Action decided by moderator']
|
|
|
|
indexes {
|
|
(content_id, status) [note: 'Find all reports for a content']
|
|
(status, reported_at) [note: 'Queue for moderators (pending first)']
|
|
(reporter_id) [note: 'User report history (detect abuse)']
|
|
(moderator_id) [note: 'Reports assigned to moderator']
|
|
}
|
|
}
|
|
|
|
Enum report_category_enum {
|
|
spam [note: 'Contenu publicitaire non sollicité']
|
|
hate_speech [note: 'Discours haineux, discrimination']
|
|
violence [note: 'Violence explicite']
|
|
sexual_content [note: 'Contenu sexuel inapproprié']
|
|
misinformation [note: 'Désinformation, fake news']
|
|
copyright [note: 'Violation de droits d auteur']
|
|
wrong_age_rating [note: 'Classification d âge incorrecte']
|
|
other [note: 'Autre raison (commentaire obligatoire)']
|
|
}
|
|
|
|
Enum report_status_enum {
|
|
pending [note: 'En attente de revue']
|
|
under_review [note: 'En cours d examen par modérateur']
|
|
actioned [note: 'Action prise (contenu retiré/édité)']
|
|
dismissed [note: 'Signalement rejeté (contenu valide)']
|
|
duplicate [note: 'Doublon d un signalement existant']
|
|
}
|
|
|
|
Enum report_action_enum {
|
|
content_removed [note: 'Contenu supprimé']
|
|
content_edited [note: 'Métadonnées modifiées (âge, tags)']
|
|
warning_sent [note: 'Avertissement au créateur']
|
|
strike_issued [note: 'Strike ajouté au créateur']
|
|
account_suspended [note: 'Compte créateur suspendu']
|
|
no_action [note: 'Aucune action (signalement infondé)']
|
|
}
|
|
```
|
|
|
|
## Légende
|
|
|
|
**Catégories de signalement** :
|
|
|
|
- `spam` : Contenu publicitaire non sollicité
|
|
- `hate_speech` : Discours haineux, discrimination
|
|
- `violence` : Violence explicite
|
|
- `sexual_content` : Contenu sexuel inapproprié
|
|
- `misinformation` : Désinformation, fake news
|
|
- `copyright` : Violation de droits d'auteur
|
|
- `wrong_age_rating` : Classification d'âge incorrecte
|
|
- `other` : Autre raison (commentaire obligatoire)
|
|
|
|
**Statuts** :
|
|
|
|
- `pending` : En attente de revue
|
|
- `under_review` : En cours d'examen par modérateur
|
|
- `actioned` : Action prise (contenu retiré/édité)
|
|
- `dismissed` : Signalement rejeté (contenu valide)
|
|
- `duplicate` : Doublon d'un signalement existant
|
|
|
|
**Actions possibles** :
|
|
|
|
- `content_removed` : Contenu supprimé
|
|
- `content_edited` : Métadonnées modifiées (âge, tags)
|
|
- `warning_sent` : Avertissement au créateur
|
|
- `strike_issued` : Strike ajouté au créateur
|
|
- `account_suspended` : Compte créateur suspendu
|
|
- `no_action` : Aucune action (signalement infondé)
|
|
|
|
**Workflow modération** :
|
|
|
|
- **3 premiers contenus** : Modération préalable obligatoire
|
|
- **Après validation** : Modération a posteriori (signalements)
|
|
- **Priorisation** : Nombre de signalements (>3 = urgent)
|
|
- **Délai de traitement** : <48h pour signalements critiques
|