💬 Forum Moderation
📋 Vue d'ensemble
Le module Forum Moderation permet aux administrateurs de modérer le forum communautaire. Il gère les catégories, sujets, messages et signalements avec des outils de modération avancés.
🏗️ Architecture
- Queue NATS :
admin-service - Patterns :
forum.* - Modération : Outils complets pour les administrateurs
- Signalements : Système de reporting communautaire
- Statistiques : Analytics détaillées du forum
📡 Message Patterns NATS
1. Lister les Catégories
Pattern : forum.categories.all
Payload (CategoryQueryDto)
{
"page": 1,
"limit": 10,
"search": "transport",
"sortBy": "createdAt",
"sortOrder": "desc"
}
Réponse
{
"success": true,
"message": "Categories retrieved successfully",
"result": {
"data": [
{
"id": 1,
"publicId": "cat-uuid",
"name": "Transport Routier",
"description": "Discussions sur le transport routier",
"topicsCount": 25,
"messagesCount": 150,
"createdAt": "2024-01-01T00:00:00Z"
}
],
"pagination": {
"page": 1,
"limit": 10,
"total": 5,
"totalPages": 1
}
}
}
2. Lister les Sujets
Pattern : forum.topics.all
Payload (TopicQueryDto)
{
"page": 1,
"limit": 10,
"categoryId": 1,
"status": "ACTIVE",
"search": "problème livraison",
"sortBy": "lastActivity",
"sortOrder": "desc"
}
Filtres Disponibles
| Filtre | Type | Description |
|---|---|---|
categoryId | Number | Filtrer par catégorie |
status | String | Statut du sujet (ACTIVE, LOCKED, DELETED) |
isPinned | Boolean | Sujets épinglés uniquement |
search | String | Recherche dans titre et contenu |
3. Lister les Messages
Pattern : forum.messages.all
Payload (MessageQueryDto)
{
"page": 1,
"limit": 20,
"topicId": 1,
"status": "ACTIVE",
"search": "merci",
"sortBy": "createdAt",
"sortOrder": "asc"
}
4. Modérer un Sujet
Pattern : forum.topics.moderate
Payload
{
"id": "topic-uuid",
"action": "lock",
"reason": "Contenu inapproprié signalé par plusieurs utilisateurs"
}
Actions de Modération
| Action | Description | Effet |
|---|---|---|
lock | Verrouiller le sujet | Empêche nouveaux messages |
unlock | Déverrouiller le sujet | Autorise nouveaux messages |
pin | Épingler le sujet | Affichage en haut de liste |
unpin | Désépingler le sujet | Retour à l'ordre normal |
delete | Supprimer le sujet | Suppression logique |
restore | Restaurer le sujet | Annule la suppression |
5. Modérer un Message
Pattern : forum.messages.moderate
Payload
{
"id": "message-uuid",
"action": "hide",
"reason": "Langage inapproprié"
}
Actions de Modération
| Action | Description | Effet |
|---|---|---|
hide | Masquer le message | Invisible pour les utilisateurs |
show | Afficher le message | Visible pour les utilisateurs |
delete | Supprimer le message | Suppression logique |
restore | Restaurer le message | Annule la suppression |
6. Lister les Signalements
Pattern : forum.reports.all
Payload (ReportQueryDto)
{
"page": 1,
"limit": 10,
"status": "PENDING",
"type": "MESSAGE",
"sortBy": "createdAt",
"sortOrder": "desc"
}
Types de Signalements
| Type | Description |
|---|---|
TOPIC | Signalement d'un sujet |
MESSAGE | Signalement d'un message |
USER | Signalement d'un utilisateur |
Statuts de Signalement
| Statut | Description |
|---|---|
PENDING | En attente de traitement |
REVIEWED | Examiné par un modérateur |
RESOLVED | Résolu avec action |
DISMISSED | Rejeté sans action |
7. Traiter un Signalement
Pattern : forum.reports.handle
Payload
{
"id": "report-uuid",
"action": "resolve",
"resolution": "Message masqué pour contenu inapproprié",
"moderatorAction": {
"type": "hide_message",
"targetId": "message-uuid",
"reason": "Contenu inapproprié confirmé"
}
}
Actions de Résolution
| Action | Description |
|---|---|
resolve | Résoudre avec action |
dismiss | Rejeter sans action |
escalate | Escalader vers niveau supérieur |
8. Statistiques du Forum
Pattern : forum.stats
Payload
{
"period": "month"
}
Réponse
{
"success": true,
"message": "Forum statistics retrieved successfully",
"result": {
"overview": {
"totalCategories": 8,
"totalTopics": 245,
"totalMessages": 1850,
"totalReports": 12,
"pendingReports": 3
},
"activity": {
"newTopicsThisMonth": 45,
"newMessagesThisMonth": 320,
"activeUsersThisMonth": 89
},
"moderation": {
"lockedTopics": 5,
"hiddenMessages": 8,
"resolvedReports": 9,
"dismissedReports": 0
},
"topCategories": [
{
"id": 1,
"name": "Transport Routier",
"topicsCount": 85,
"messagesCount": 650
}
]
}
}
📊 Enums et Statuts
Statuts de Sujet (TopicStatus)
enum TopicStatus {
ACTIVE = 'ACTIVE', // Actif
LOCKED = 'LOCKED', // Verrouillé
DELETED = 'DELETED' // Supprimé
}
Statuts de Message (MessageStatus)
enum MessageStatus {
ACTIVE = 'ACTIVE', // Actif
HIDDEN = 'HIDDEN', // Masqué
DELETED = 'DELETED' // Supprimé
}
Types de Signalement (ReportType)
enum ReportType {
TOPIC = 'TOPIC', // Signalement de sujet
MESSAGE = 'MESSAGE', // Signalement de message
USER = 'USER' // Signalement d'utilisateur
}
🛡️ Outils de Modération
1. Modération Préventive
- Filtres automatiques : Détection de contenu inapproprié
- Mots-clés interdits : Liste configurable
- Limitation de fréquence : Anti-spam automatique
- Validation manuelle : Pour nouveaux utilisateurs
2. Actions de Modération
- Verrouillage de sujets : Empêche nouveaux messages
- Masquage de messages : Invisible pour utilisateurs
- Épinglage : Mise en avant de sujets importants
- Suppression logique : Préservation pour audit
3. Système de Signalement
- Signalement communautaire : Par les utilisateurs
- Catégorisation : Types de problèmes
- Workflow de traitement : Processus structuré
- Historique complet : Traçabilité des actions
🚀 Fonctionnalités Avancées
1. Analytics et Reporting
- Statistiques détaillées : Activité du forum
- Tendances : Évolution dans le temps
- Rapports de modération : Actions effectuées
- Métriques d'engagement : Participation utilisateurs
2. Gestion des Utilisateurs
- Profils utilisateurs : Historique d'activité
- Sanctions : Avertissements, suspensions
- Réputation : Système de points
- Badges : Reconnaissance communautaire
3. Configuration
- Règles du forum : Personnalisables
- Permissions : Par rôle utilisateur
- Notifications : Alertes modérateurs
- Intégrations : Avec autres services
💡 Exemples d'Utilisation
Verrouiller un Sujet Problématique
{
"id": "topic-123",
"action": "lock",
"reason": "Discussion devenue trop polémique, verrouillage temporaire"
}
Traiter un Signalement
{
"id": "report-456",
"action": "resolve",
"resolution": "Message masqué pour langage inapproprié",
"moderatorAction": {
"type": "hide_message",
"targetId": "message-789",
"reason": "Violation des règles de courtoisie"
}
}
Rechercher des Messages Suspects
{
"page": 1,
"limit": 50,
"search": "spam",
"status": "ACTIVE",
"sortBy": "createdAt",
"sortOrder": "desc"
}
🎯 Le module Forum Moderation fournit tous les outils nécessaires pour maintenir un environnement de discussion sain et constructif avec des fonctionnalités de modération complètes et un système de signalement efficace.