Aller au contenu principal

Gamification

Statut

Document de cadrage produit — version initiale — v1.0 — relu le 2026-05-11.

Objectif

La gamification DMV doit encourager l'activité utile, l'engagement local et la qualité des profils.

Elle ne doit pas transformer le produit en jeu, ni pousser à publier pour publier. Son rôle est d'aider les utilisateurs et acteurs à mieux compléter, animer et maintenir leur présence locale.

Comportements encouragés

La gamification peut encourager :

  • complétion d'un profil acteur ;
  • ajout d'informations utiles ;
  • publication régulière et pertinente ;
  • participation locale ;
  • suivi de favoris ;
  • contribution à des groupes ;
  • qualité et fraîcheur des contenus ;
  • engagement responsable dans la commune.

Mécaniques possibles

MécaniqueUsage ciblePrécaution
Points d'activitéValoriser une action utile.Éviter la course au volume.
BadgesSignaler un statut ou une progression.Ne pas confondre badge produit et validation officielle.
Progression de profilInciter à compléter les informations essentielles.Garder une lecture simple pour les acteurs.
Indicateurs de régularitéEncourager les publications pertinentes.Ne pas pénaliser les petits acteurs moins actifs.
Suggestions d'actionsAider à améliorer une fiche ou une publication.Ne pas devenir intrusif.

État actuel — Gamification V1 (implémentée)

Le système XP V1 est opérationnel côté backend Laravel.

Événements XP implémentés

ÉvénementPointsUnique
onboarding_completed50oui
assistant_onboarding_used30oui
profile_description_added20oui
first_publication_created30oui
publication_created10non

Déclencheurs automatiques

  • Ajout d'une description pour la première fois → profile_description_added (20 pts)
  • Création d'une publication avec acteur_idpublication_created + first_publication_created si c'est la première

Sécurité

  • Les points sont fixés côté serveur (ActorXpService) — le frontend ne peut pas en déclarer.
  • La liste des événements autorisés est une whitelist PHP ; tout événement non listé est silencieusement ignoré.
  • La déduplication empêche de déclencher deux fois un événement marqué unique.
  • La route /acteurs/{id}/xp est throttlée à 10 requêtes par minute.
  • L'attribution est protégée par une Policy Laravel (isOwnerOrAdmin).

Architecture

ActorXpService::award(acteurId, eventType)
→ vérifie whitelist
→ vérifie déduplication si unique
→ insert acteur_xp_events

Les points ne sont jamais écrits directement sur acteurs ; la somme est toujours calculée depuis le journal acteur_xp_events.

Récompenses associées

RewardEngineService::recordEvent est déclenché en parallèle pour les événements description_added et profile_completed.

Vision cible

La cible est une gamification sobre et utile.

Elle doit aider :

  • un acteur à comprendre ce qu'il peut améliorer ;
  • une commune à repérer les contenus actifs ;
  • un contributeur à participer positivement ;
  • un administrateur à identifier les profils incomplets ou inactifs.

Ce que la gamification ne doit pas faire

La gamification ne doit pas :

  • favoriser les contenus peu utiles mais fréquents ;
  • créer une compétition artificielle entre acteurs ;
  • rendre les petites structures invisibles ;
  • manipuler les habitants par des mécanismes addictifs ;
  • remplacer la qualité éditoriale ou la modération.

Principes de conception

  • Récompenser la qualité avant la quantité.
  • Rendre les indicateurs compréhensibles.
  • Distinguer activité, fiabilité et statut officiel.
  • Permettre aux acteurs peu disponibles de rester bien présentés.
  • Relier la progression à des actions concrètes et utiles.

Vision d'évolution

La gamification peut évoluer vers des tableaux de progression, conseils personnalisés, badges de complétion ou indicateurs d'activité.

Toute évolution doit rester au service de l'utilité locale et de la confiance.