From 2365b7f344926486aed7045ebd7fee31e79e62e8 Mon Sep 17 00:00:00 2001 From: jpgiannetti Date: Sun, 1 Feb 2026 21:10:35 +0100 Subject: [PATCH] =?UTF-8?q?feat(moderation):=20ajouter=20Gherkin=20mod?= =?UTF-8?q?=C3=A9ration=20communautaire?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Ajoute moderation-communautaire.feature couvrant la Règle 15/19 : - Système de badges (Bronze/Argent/Or) - Score de fiabilité et priorisation - Modal découverte au 1er signalement - Réduction Premium -50% pour badge Or - Limites anti-abus (10 signalements/24h) - Audit trimestriel automatique - Sanctions graduées (mineur/modéré/grave) Les 4 autres fichiers de modération existants (signalement, traitement, sanctions, préventive) sont déjà conformes à l'ADR-023 et à la Règle 14. --- .../moderation-communautaire.feature | 392 ++++++++++++++++++ 1 file changed, 392 insertions(+) create mode 100644 features/api/moderation/moderation-communautaire.feature diff --git a/features/api/moderation/moderation-communautaire.feature b/features/api/moderation/moderation-communautaire.feature new file mode 100644 index 0000000..163ef39 --- /dev/null +++ b/features/api/moderation/moderation-communautaire.feature @@ -0,0 +1,392 @@ +# language: fr + +@moderation @community +Fonctionnalité: Modération communautaire - Badges et récompenses + En tant que plateforme + Je veux gamifier les signalements pertinents + Afin d'améliorer la qualité des signalements et réduire la charge modérateurs + + # 19. Modération Communautaire - Badges et Récompenses + + Contexte: + Étant donné que le système de modération communautaire est actif + + # 19.1 - Système de badges + + Scénario: Trois niveaux de badges disponibles + Étant donné que je consulte le système de badges + Quand je vois les badges disponibles + Alors 3 niveaux de badges existent: + | badge | nom | critères | avantages | + | 🥉 | Contributeur Bronze | 5 validés + 70% pertinence | Signalements prioritaires (+10 points) | + | 🥈 | Contributeur Argent | 20 validés + 80% pertinence | +20 points + Badge visible profil | + | 🥇 | Contributeur Or | 50 validés + 90% pertinence | +30 points + Badge + Réduction Premium | + Et les badges valorisent la qualité plutôt que la quantité + + Scénario: Règles d'éligibilité aux badges + Étant donné que je veux obtenir un badge + Quand je consulte les règles d'éligibilité + Alors les critères suivants s'appliquent: + | règle | valeur | + | Minimum signalements envoyés pour éligibilité | 10 | + | Signalements "En cours" comptent dans le calcul | non | + | Signalements rejetés font baisser le taux | oui | + | Période de calcul (glissante) | 6 mois | + Et seuls les 6 derniers mois sont pris en compte + + Scénario: Calcul du taux de pertinence + Étant donné que j'ai envoyé 20 signalements + Et que 16 ont été validés par les modérateurs + Et que 4 ont été rejetés + Quand le système calcule mon taux de pertinence + Alors la formule appliquée est "Signalements validés / Total signalements × 100" + Et mon taux est de 80% (16 / 20 × 100) + Et ce taux détermine mon éligibilité aux badges + + Scénario: Obtention du badge Bronze + Étant donné que j'ai 10 signalements envoyés + Et que 7 signalements ont été validés + Et que mon taux de pertinence est de 70% + Quand le système évalue mon éligibilité + Alors j'obtiens le badge 🥉 Contributeur Bronze + Et je reçois une notification: + """ + 🎉 Félicitations ! Vous êtes désormais Contributeur Bronze. + Merci de rendre RoadWave meilleur ! + """ + Et mes futurs signalements gagnent +10 points de priorité + + Scénario: Obtention du badge Argent + Étant donné que j'ai déjà le badge Bronze + Et que j'ai 25 signalements envoyés + Et que 20 signalements ont été validés + Et que mon taux de pertinence est de 80% + Et que 30 jours se sont écoulés depuis l'obtention du badge Bronze + Quand le système évalue mon éligibilité + Alors j'obtiens le badge 🥈 Contributeur Argent + Et je reçois une notification: + """ + 🎉 Impressionnant ! Badge Contributeur Argent obtenu. + Votre engagement fait la différence ! + """ + Et le badge est visible sur mon profil public + Et mes futurs signalements gagnent +20 points de priorité + + Scénario: Obtention du badge Or + Étant donné que j'ai déjà le badge Argent + Et que j'ai 60 signalements envoyés + Et que 54 signalements ont été validés + Et que mon taux de pertinence est de 90% + Et que 60 jours se sont écoulés depuis l'obtention du badge Argent + Quand le système évalue mon éligibilité + Alors j'obtiens le badge 🥇 Contributeur Or + Et je reçois une notification: + """ + 🎉 Exceptionnel ! Vous êtes Contributeur Or. + La communauté vous remercie pour votre aide précieuse ! + """ + Et je bénéficie d'une réduction Premium -50% pendant 3 mois + Et mes futurs signalements gagnent +30 points de priorité + + Scénario: Délai minimum entre niveaux de badges + Étant donné que j'ai obtenu le badge Bronze il y a 15 jours + Et que je remplis les critères pour le badge Argent + Quand le système évalue mon éligibilité + Alors je ne peux pas encore obtenir le badge Argent + Et je dois attendre 15 jours supplémentaires (30 jours minimum) + Et cela évite la montée en badge trop rapide (anti-farming) + + # 19.1.3 - Découverte du système + + Scénario: Modal d'information au premier signalement + Étant donné que je viens d'envoyer mon tout premier signalement + Et que le toast de confirmation standard s'est affiché + Quand 2 secondes se sont écoulées + Alors une modal d'information s'affiche automatiquement + Et la modal explique le système de badges et récompenses + Et la modal contient: + """ + 🎯 Bravo ! Vous contribuez à une communauté plus saine + + En signalant ce contenu, vous participez activement à améliorer + l'expérience de tous les utilisateurs RoadWave. + + Vos contributions de qualité sont valorisées et récompensées : + + 🥉 Bronze : 5 signalements validés → Signalements prioritaires + 🥈 Argent : 20 signalements validés → Badge visible + priorité accrue + 🥇 Or : 50 signalements validés → Réduction Premium -50% pendant 3 mois + + 💡 Votre taux de pertinence compte ! + Signalements validés ÷ Total × 100 + + Continuez à nous aider, chaque signalement pertinent compte ! 🙏 + """ + Et la modal contient un bouton "En savoir plus" + Et la modal contient un bouton "J'ai compris" + Et la modal ne se réaffiche jamais + + # 19.1.4 - Affichage badges et statistiques + + Scénario: Statistiques personnelles visibles + Étant donné que j'ai un badge Bronze + Quand je consulte "Profil > Mes signalements" + Alors je vois mes statistiques de modération: + """ + 📊 Vos statistiques de modération + Signalements envoyés : 27 + Validés : 23 ✅ + Rejetés : 4 ❌ + Taux de pertinence : 85% + + Badge actuel : 🥉 Contributeur Bronze + Prochain palier : 🥈 Contributeur Argent (17 signalements validés restants) + """ + Et je vois ma progression vers le prochain badge + + Scénario: Toast après validation de signalement + Étant donné que j'ai un badge Bronze (3/5 signalements validés) + Et que j'envoie un nouveau signalement + Quand le modérateur valide mon signalement + Alors je reçois un toast: + """ + ✅ Bravo ! Votre signalement a aidé la communauté. + Progression : 4/5 pour badge Bronze 🥉 + """ + Et je vois ma progression vers le badge suivant + + Scénario: Toast après rejet de signalement + Étant donné que j'ai un taux de pertinence de 65% + Et que j'envoie un nouveau signalement + Quand le modérateur rejette mon signalement + Alors je reçois un toast: + """ + ❌ Signalement non retenu. + Taux de pertinence : 60%. + Continuez vos efforts ! + """ + Et je vois l'impact sur mon taux de pertinence + + # 19.2 - Score de fiabilité + + Scénario: Calcul du score de fiabilité + Étant donné que j'ai 15 signalements validés + Et que j'ai 3 signalements rejetés + Et que j'ai le badge Or actif + Quand le système calcule mon score de fiabilité + Alors la formule appliquée est: + """ + Score fiabilité = min(100, (Validés × 10 - Rejetés × 5 + Bonus_Or × 20)) + """ + Et mon score est: min(100, (15 × 10 - 3 × 5 + 1 × 20)) = 100 (plafonné) + Et ce score est utilisé dans l'algorithme de priorisation + + Scénario: Utilisation du score dans la priorisation + Étant donné que j'ai un score de fiabilité de 85/100 + Et qu'un autre utilisateur a un score de 30/100 + Quand nous signalons des contenus similaires + Alors mon signalement a un meilleur score de priorité + Et mon signalement est traité en premier + Et la formule de priorité inclut: + """ + Priorité = (Score_IA × 0.7) + (Signalements_cumulés × 0.2) + (Fiabilité_signaleur × 0.1) + """ + Et la fiabilité est normalisée : 85/100 = 0.85 + + # 19.3 - Statut "Utilisateur de confiance" + + Scénario: Obtention automatique du statut de confiance + Étant donné que j'obtiens le badge Argent + Quand mon statut est mis à jour + Alors je deviens automatiquement "Utilisateur de confiance" + Et mes signalements sont traités en priorité (même score IA) + Et je reçois des notifications sous 12h (au lieu de 24-48h) + Et le badge "Utilisateur de confiance" s'affiche sur mon profil + + Scénario: Révocation du statut de confiance + Étant donné que je suis "Utilisateur de confiance" + Et que je perds mon badge Argent après audit trimestriel + Quand mon statut est réévalué + Alors le statut "Utilisateur de confiance" est révoqué + Et je reviens au statut normal + Et aucune sanction supplémentaire n'est appliquée + + # 19.4 - Réduction Premium pour badge Or + + Scénario: Notification de réduction Premium au badge Or + Étant donné que j'obtiens le badge Contributeur Or + Quand la notification est envoyée + Alors je reçois un email + push + in-app: + """ + 🎉 Exceptionnel ! Vous avez obtenu le badge Contributeur Or + + Vous faites partie des meilleurs contributeurs de RoadWave. + Grâce à votre engagement et votre vigilance, vous aidez + des milliers d'utilisateurs à profiter d'une expérience audio de qualité. + + La communauté vous remercie ! 🙏 + + En reconnaissance de votre aide précieuse, vous bénéficiez de : + + ✨ 3 mois d'abonnement Premium à -50% + → 2.49€/mois au lieu de 4.99€ + + [Profiter de l'offre] + + Cette offre est valable pendant 30 jours. + """ + Et l'offre est valable pendant 30 jours + + Scénario: Activation de la réduction Premium Or + Étant donné que j'ai obtenu le badge Or + Et que j'ai reçu l'offre Premium -50% + Quand je clique sur "Profiter de l'offre" dans les 30 jours + Alors je souscris à Premium à 2.49€/mois + Et la réduction est valable pour 3 mois + Et après 3 mois, le renouvellement passe à 4.99€/mois + Et l'offre n'est pas cumulable avec l'offre annuelle + + Scénario: Expiration de l'offre Premium après 30 jours + Étant donné que j'ai obtenu le badge Or il y a 31 jours + Et que je n'ai pas activé l'offre Premium -50% + Quand j'essaie d'activer l'offre + Alors l'offre a expiré + Et je vois le message "Votre offre Premium -50% a expiré" + Et mon badge Or est conservé (seule l'offre expire) + Et je ne peux plus bénéficier de la réduction + + Scénario: Rappels avant expiration de l'offre + Étant donné que j'ai obtenu le badge Or + Et que je n'ai pas encore activé l'offre Premium + Quand il reste 7 jours avant l'expiration + Alors je reçois un email + push: + """ + Il vous reste 7 jours pour profiter de votre réduction Premium -50% + """ + Et quand il reste 1 jour, je reçois un dernier rappel: + """ + Dernière chance ! Votre réduction Premium -50% expire demain + """ + + Scénario: Perte du badge Or pendant l'abonnement Premium + Étant donné que j'ai le badge Or et l'abonnement Premium -50% actif + Et que je perds le badge Or après un audit trimestriel + Quand mon abonnement arrive à échéance + Alors l'abonnement en cours reste actif jusqu'à sa fin normale + Mais le renouvellement se fait à prix normal 4.99€/mois + Et je ne peux pas réobtenir l'offre -50% même si je récupère le badge Or + + # 19.5 - Anti-abus + + Scénario: Limite de 10 signalements par 24h + Étant donné que j'ai déjà envoyé 10 signalements aujourd'hui + Quand j'essaie d'envoyer un 11ème signalement + Alors le signalement est automatiquement rejeté + Et je vois le message: + """ + Limite quotidienne atteinte (10 signalements/24h). + Réessayez demain. + """ + Et une alerte modérateur automatique est déclenchée + + Scénario: Détection de signalement massif suspect + Étant donné que j'ai envoyé 35 signalements cette semaine + Quand l'audit automatique hebdomadaire s'exécute + Alors mon compte est détecté comme suspect (>30/semaine) + Et une enquête manuelle modérateur est déclenchée + Et le modérateur peut révoquer mon badge si abus confirmé + + Scénario: Patterns suspects détectés + Étant donné que le système analyse mes patterns de signalement + Quand des comportements suspects sont identifiés: + | pattern | seuil | + | Signalement massif | >30/semaine | + | Taux de pertinence très faible | <50% | + | Tous signalements rejetés sur 7 jours | 100% rejet | + | Signalements ciblant toujours même créateur | Harcèlement | + Alors une enquête manuelle est déclenchée + Et le modérateur examine les signalements en détail + + Scénario: Audit trimestriel automatique des badges + Étant donné que le système effectue l'audit trimestriel + Quand mon badge est audité + Alors le système recalcule mon taux de pertinence sur 6 mois glissants + Et vérifie les critères: + | badge | taux minimum | + | Bronze | 70% | + | Argent | 80% | + | Or | 90% | + Et si mon taux est insuffisant, mon badge est révoqué + + Scénario: Email de prévention 7 jours avant audit + Étant donné que l'audit trimestriel arrive dans 7 jours + Et que mon taux de pertinence est de 78% + Et que j'ai un badge Argent (minimum 80% requis) + Quand le système envoie les notifications préventives + Alors je reçois un email: + """ + Votre badge Contributeur Argent sera audité dans 7 jours. + Taux de pertinence actuel : 78% + Minimum requis : 80% + + Continuez à signaler du contenu pertinent pour conserver votre badge ! + """ + Et je suis informé à l'avance pour améliorer mes signalements + + Scénario: Résultat d'audit - Badge conservé + Étant donné que l'audit trimestriel vient d'être effectué + Et que mon taux de pertinence est de 85% + Et que j'ai un badge Argent (minimum 80% requis) + Quand je reçois le résultat + Alors je reçois un email: "Badge conservé ✓" + Et mon badge reste actif pour 3 mois supplémentaires + + Scénario: Résultat d'audit - Badge révoqué + Étant donné que l'audit trimestriel vient d'être effectué + Et que mon taux de pertinence est de 75% + Et que j'ai un badge Argent (minimum 80% requis) + Quand je reçois le résultat + Alors je reçois un email: "Badge révoqué ✗" + Et mon badge Argent est révoqué immédiatement + Mais je peux réobtenir un badge ultérieurement (pas de ban) + + Scénario: Sanctions pour abus détecté - Mineur + Étant donné que j'ai envoyé >10 signalements/jour pendant 1 jour + Quand l'abus mineur est détecté + Alors je reçois un avertissement + Et ma limite est réduite à 5 signalements/jour pendant 7 jours + Et je reçois une notification explicative + + Scénario: Sanctions pour abus détecté - Modéré + Étant donné que j'ai envoyé >30 signalements/semaine + Et que mon taux de pertinence est <50% + Quand l'abus modéré est confirmé + Alors tous mes badges sont révoqués + Et je suis interdit de signalement pendant 30 jours + Et je reçois une notification de sanction + + Scénario: Sanctions pour abus détecté - Grave + Étant donné que j'ai participé à un farming coordonné de signalements + Quand l'abus grave est confirmé par modérateur + Alors je reçois un ban permanent de la fonctionnalité signalement + Et tous mes badges sont révoqués définitivement + Et il n'y a pas de recours possible pour farming confirmé + + # ROI et justification + + Scénario: ROI positif de la modération communautaire + Étant donné que 10 utilisateurs Or sont actifs + Quand on calcule le ROI + Alors chaque utilisateur Or économise 5-10h de modération/mois + Et cela représente 75-150€ économisés par utilisateur (taux 15€/h) + Et le total est de 750-1500€ économisés/mois + Et le coût des réductions Premium est maximum 200€/mois (50 utilisateurs Or) + Et le ROI est positif dès 2-3 utilisateurs Or actifs + + Scénario: Coût total du système + Étant donné que le système de modération communautaire est en place + Quand on calcule le coût total + Alors en phase MVP, le coût est de 0€ + Et en phase Post-MVP avec réductions Premium, le coût est de 0-200€/mois + Et le système est entièrement automatique (0€ développement continu) + Et le ROI est largement positif