Aller au contenu
Studeia Docs
AI-assisted translation — last updated 2026-06-03. For original (pt-BR or en-US), use the language switcher.

Gamification native : XP, badges, leaderboards, contests, rewards

Gamification Studeia : moteur XP hiérarchique, 11 critères de badge AND/OR, OB 3.0, leaderboards Redis (cours/groupe, weekly/monthly), contests 7 métriques, rewards shop avec coins et agent IA

2026-06-03 7 min
Resposta curta

Studeia dispose d'une gamification native complète : moteur XP avec config hiérarchique (tenant→cours), 11 critères de badge avec logique booléenne AND/OR, badges exportables en JSON-LD compatible Open Badges 3.0 (modèle W3C VC ; signature cryptographique en roadmap), leaderboards Redis ZSET (portée cours/groupe, fenêtres alltime/weekly/monthly), contests avec 7 métriques (cycle de vie draft→active→ended), rewards shop avec monnaie virtuelle et agent IA dédié permettant à l'admin de créer sa stratégie via chat naturel.

Modèle

TenantGamificationConfig (XP rules, level thresholds, features)
  └── CourseGamificationConfig (override per-course)

UserGamificationProfile (totalXp, currentLevel, currentStreakDays, coins)
  ├── XpLog (chaque XP earned avec source)
  ├── UserBadge[]
  ├── ContestParticipant[]
  └── RewardRedemption[]

Moteur XP

XP gagné par activité. Config dans xpRules JSON :

{
  "lessonComplete": 50,
  "quizPass": 30,
  "quizPassFirstTry": 50,
  "assignmentSubmit": 40,
  "forumPostCreate": 10,
  "forumReplyCreate": 5,
  "chatTutorMessage": 2,
  "liveClassJoin": 20,
  "dailyLogin": 5,
  "streakBonus": [
    { "days": 7, "bonus": 100 },
    { "days": 30, "bonus": 500 }
  ]
}

handleGamificationEvent() intégré dans 7 routes (lesson complete, quiz, chat tutor, forum post/reply, live class join, assignment submit).

Niveaux

Seuils configurables (défaut : niveau N = 100 × N²) :

Niveau 1 : 0 XP
Niveau 2 : 100 XP
Niveau 3 : 400 XP
Niveau 4 : 900 XP
Niveau 5 : 1600 XP
...

Le passage de niveau déclenche l'événement level_up (automatisation) + notification push (mobile). L'événement badge_earned est émis lorsqu'un badge est attribué.

Badges

11 types de critères avec logique booléenne AND/OR :

CritèreDéclencheur
lesson_countN leçons complétées
module_countN modules complétés
course_countN cours complétés
xp_thresholdXP >= N
streak_daysstreak de N jours
mastery_avgmoyenne de mastery >= X
quiz_perfect_countN quiz à 100 %
forum_post_countN posts dans le forum
study_minutesN minutes étudiées
badge_collectionensemble de badges obtenu
compoundrègles AND/OR imbriquées

Critères composés (AND/OR, profondeur max 3) :

{
  "logic": "AND",
  "rules": [
    { "type": "quiz_perfect_count", "value": 3 },
    {
      "logic": "OR",
      "rules": [
        { "type": "streak_days", "value": 7 },
        { "type": "mastery_avg", "value": 0.9 }
      ]
    }
  ]
}

Les badges manuels utilisent criteriaType=manual et peuvent être attribués par des enseignants/admins autorisés ; manual n'est pas un type de critère automatique.

Open Badges 3.0

L'obtention d'un badge crée un UserBadge avec une page publique :

  • /badges/verify/[userBadgeId] (sans authentification)
  • /api/badges/verify/[userBadgeId] retourne du JSON-LD compatible Open Badges 3.0 (modèle de données W3C VC)
  • Schema.org EducationalOccupationalCredential pour la découverte sur Google/LinkedIn
  • Authenticité vérifiée par l'URL/API publique + enregistrement de la plateforme. Signature/proof cryptographique et bouton natif LinkedIn non encore implémentés (roadmap) ; partage manuel via URL

Leaderboards

Redis ZSET (sorted sets) pour les performances :

ZADD leaderboard:tenant:{tenantId}:scope:course:{courseId}:window:weekly {xp} {userId}
ZADD leaderboard:tenant:{tenantId}:scope:class:{classId}:window:alltime {xp} {userId}

Portées : course, class_group. Fenêtres : alltime, weekly, monthly.

Mode anonyme : l'apprenant apparaît comme « Apprenant #42 » (config par tenant).

Contests

Cycle de vie : draft → active → ended (cron auto-start/end).

7 métriques :

  1. xp_earned (XP total sur la période)
  2. lessons_completed
  3. quizzes_passed
  4. avg_quiz_score
  5. study_minutes
  6. forum_posts
  7. badges_earned

Configurable : portée (course/class/tenant), date début/fin, prix (rewards).

Rewards shop

Catalogue de récompenses virtuelles. L'apprenant dépense des coins (accumulés via XP) :

  • certificate_template — diplôme stylisé
  • profile_customization — avatar/bordure
  • badge_special — badge unique
  • virtual_item — sticker, couleur de pseudo, etc.

Rachat atomique (anti-race condition). Remboursement automatique si l'admin refuse.

Agent IA de gamification

L'admin peut créer/gérer la gamification via chat :

"Crée 5 badges pour mon cours de Mathématiques en mettant l'accent sur
la régularité (streaks) et la maîtrise (>= 80% de réussite). Bonus
pour les apprenants qui aident dans le forum."

19 outils (CRUD badges/contests/rewards, config XP, analytics, attribution manuelle). Boucle tool_use max 15 itérations.

Le Gamification Agent (IA) permet de creer badges, contests et rewards via chat.

Rapports parentaux

Gamification intégrée dans packages/core/src/monitoring/advanced-reports.ts :

  • StudentReport inclut XP, niveau, badges récents, streak
  • Le portail parents affiche une section « Réussites » avec grille de badges + compteur de streak
  • Le rapport LLM mentionne les réussites : « Marie a complété 3 cours et obtenu 5 badges ce mois-ci »

Voir aussi

FAQ

Studeia dispose-t-il d'une gamification native ?

Oui, complète. XP par activité (config hiérarchique tenant→cours), niveaux configurables, badges avec 11 critères automatiques (composés AND/OR), leaderboards Redis ZSET avec portée cours ou groupe et fenêtres weekly/monthly/alltime, contests avec 7 métriques, rewards shop avec monnaie virtuelle. Plus un agent IA dédié permettant à l'admin de créer sa stratégie via chat.

Les badges suivent-ils la norme Open Badges ?

Oui. Les badges s'exportent en JSON-LD compatible Open Badges 3.0 (modèle de données W3C Verifiable Credential). Chaque UserBadge dispose d'une page publique sur /badges/verify/[userBadgeId] et d'une API JSON-LD sur /api/badges/verify/[userBadgeId], avec schema.org EducationalOccupationalCredential pour la découverte sur Google/LinkedIn. L'authenticité est vérifiée par l'URL/API publique et par l'enregistrement de la plateforme. La signature/proof cryptographique et le bouton natif LinkedIn « Add to Profile » sont en roadmap ; aujourd'hui le partage sur LinkedIn est manuel via l'URL publique.

Comment configurer les XP par leçon complétée ?

Tenant Settings > Gamification > XP Rules. Chaque activité a un XP de base (lessonComplete : 50, quizPass : 30, etc.). Le cours peut l'écraser (CourseGamificationConfig). Bonus pour streak quotidien, première fois, difficulté, etc.

Puis-je désactiver la gamification sur un cours ?

Oui. CourseGamificationConfig.enabled=false. La barre latérale de l'apprenant masque « Gamification » si l'apprenant n'a aucun cours actif avec la gamification activée. Le sous-menu du cours masque l'onglet « Gamification » pour les cours spécifiques avec le flag désactivé.

Veja tambem

Gamification native : XP, badges, leaderboards, contests, rewards