refactor(docs): réorganiser la documentation selon principes DDD
Réorganise la documentation du projet selon les principes du Domain-Driven Design (DDD) pour améliorer la cohésion, la maintenabilité et l'alignement avec l'architecture modulaire du backend. **Structure cible:** ``` docs/domains/ ├── README.md (Context Map) ├── _shared/ (Core Domain) ├── recommendation/ (Supporting Subdomain) ├── content/ (Supporting Subdomain) ├── moderation/ (Supporting Subdomain) ├── advertising/ (Generic Subdomain) ├── premium/ (Generic Subdomain) └── monetization/ (Generic Subdomain) ``` **Changements effectués:** Phase 1: Création de l'arborescence des 7 bounded contexts Phase 2: Déplacement des règles métier (01-19) vers domains/*/rules/ Phase 3: Déplacement des diagrammes d'entités vers domains/*/entities/ Phase 4: Déplacement des diagrammes flux/états/séquences vers domains/*/ Phase 5: Création des README.md pour chaque domaine Phase 6: Déplacement des features Gherkin vers domains/*/features/ Phase 7: Création du Context Map (domains/README.md) Phase 8: Mise à jour de mkdocs.yml pour la nouvelle navigation Phase 9: Correction automatique des liens internes (script fix-markdown-links.sh) Phase 10: Nettoyage de l'ancienne structure (regles-metier/, diagrammes/, features/) **Configuration des tests:** - Makefile: godog run docs/domains/*/features/ - scripts/generate-bdd-docs.py: features_dir → docs/domains **Avantages:** ✅ Cohésion forte: toute la doc d'un domaine au même endroit ✅ Couplage faible: domaines indépendants, dépendances explicites ✅ Navigabilité améliorée: README par domaine = entrée claire ✅ Alignement code/docs: miroir de backend/internal/ ✅ Onboarding facilité: exploration domaine par domaine ✅ Tests BDD intégrés: features au plus près des règles métier Voir docs/REFACTOR-DDD.md pour le plan complet.
This commit is contained in:
@@ -0,0 +1,397 @@
|
||||
# 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 exactement 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 le titre "🎯 Bravo ! Vous contribuez à une communauté plus saine"
|
||||
Et la modal contient le message suivant:
|
||||
"""
|
||||
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 (+10 points)
|
||||
|
||||
🥈 Argent : 20 signalements validés
|
||||
→ Badge visible + priorité accrue (+20 points)
|
||||
|
||||
🥇 Or : 50 signalements validés
|
||||
→ Réduction Premium -50% pendant 3 mois
|
||||
|
||||
💡 Votre taux de pertinence compte !
|
||||
Formule : Signalements validés ÷ Total × 100
|
||||
|
||||
Continuez à nous aider, chaque signalement pertinent compte ! 🙏
|
||||
"""
|
||||
Et la modal contient un bouton "En savoir plus" qui redirige vers la page dédiée badges
|
||||
Et la modal contient un bouton "J'ai compris" qui ferme la modal
|
||||
Et la modal ne se réaffiche jamais (flag "badge_modal_seen" en base de données)
|
||||
Et le délai de 2 secondes permet de laisser l'utilisateur lire le toast de confirmation d'abord
|
||||
|
||||
# 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
|
||||
Reference in New Issue
Block a user