Aller au contenu principal

Modèle XP et gamification

Objectif du modèle

Encourager l’activité utile : complétion de profil, publications, participation locale et engagement, sans transformer DMV en réseau social généraliste.

Responsabilités

  • Suivre les points ou niveaux liés à des actions produit.
  • Récompenser des comportements utiles.
  • Éviter les abus et manipulations.
  • Alimenter éventuellement badges, progression ou visibilité non intrusive.

Relations principales

  • Un utilisateur peut accumuler de l’XP.
  • Un acteur peut avoir une progression de complétion ou qualité.
  • Des actions comme publication, profil complet ou participation peuvent déclencher des événements.

Cycle de vie

  1. Action éligible.
  2. Validation backend.
  3. Attribution de points ou progression.
  4. Agrégation éventuelle.
  5. Correction ou retrait en cas d’abus.

Permissions/RBAC liées

  • L’attribution doit être calculée côté Laravel.
  • Les admins peuvent corriger les abus.
  • Les frontends ne doivent pas déclarer seuls une récompense acquise.

Contraintes métier

  • Gamification sobre et utile.
  • Pas de mécanique addictive.
  • Pas de classement social agressif.
  • Valoriser la qualité plutôt que le volume brut.

Données sensibles éventuelles

  • Historique d’activité utilisateur.
  • Scores ou progression.
  • Signaux anti-abus.

Cache/offline éventuel

  • Scores affichables en cache.
  • Attribution réelle revalidée côté backend.

Stratégie d’indexation

  • Index par utilisateur/acteur, type d’événement, date.
  • Agrégats possibles pour performance.

Partitionnement si concerné

Possible à long terme pour journal d’événements XP volumineux ; agrégats séparés à envisager.

État actuel — V1 implémentée

NiveauDescription
ImplémentéJournal acteur_xp_events opérationnel.
ImplémentéActorXpService avec whitelist, barème, déduplication.
ImplémentéDéclencheurs automatiques sur description et publications.
Cible futureBadges, niveaux, tableaux de progression, affichage frontend.

Tables effectives

acteur_xp_events

ColonneTypeDescription
iduuidPK
acteur_iduuidFK acteurs
event_typevarcharType d’événement (whitelist)
pointsintPoints attribués (fixés côté serveur)
metajsonbMétadonnées libres optionnelles
created_attimestampDate d’attribution

Barème V1

ÉvénementPointsDéclenchement unique
onboarding_completed50oui
assistant_onboarding_used30oui
profile_description_added20oui
first_publication_created30oui
publication_created10non

Règles anti-abus V1

  • Whitelist PHP exhaustive : tout événement non listé est refusé sans erreur.
  • Déduplication sur les événements unique : un deuxième insert est ignoré.
  • Points fixés côté ActorXpService uniquement — non envoyables par le client.
  • Route throttlée à 10 requêtes/minute.
  • Policy ActeurPolicy::addXp requiert d’être propriétaire ou admin.

Points restants à définir

  • Badges et niveaux associés aux totaux XP.
  • Affichage frontend (jauge, historique).
  • Correction ou retrait par admin (actuellement non exposé).

Diagramme Mermaid ER