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

Quiz Engine : configuration, intégrité et analytics psychométriques

Quiz engine : 12 types de questions, maxAttempts, time limit, shuffle, lockdown browser, IP whitelist, question pooling, scoring policies et analytics psychométriques (alpha de Cronbach, point-biserial).

Par Équipe Studeia 2026-05-31 10 min
Resposta curta

Le Quiz Engine de Studeia couvre de l'évaluation simple à l'examen à enjeux élevés : 12 types de questions (10 avec correction automatique), contrôle des tentatives, du temps, mélange aléatoire, code d'accès, banque de questions réutilisable et signaux d'intégrité (changement d'onglet, copy/paste, temps). Il propose également des analytics psychométriques (alpha de Cronbach, discrimination, difficulté des items) pour évaluer équitablement et améliorer les épreuves sur la base des données.

Types de questions

12 types au total — 10 auto-corrigés, essay manuel/LLM, calculated comme type avancé de formule :

TypeAuto-correctionCas d'usage
multiple_choiceOuiConnaissances factuelles, concepts
true_falseOuiVérification rapide
multiple_selectOuiPlusieurs réponses correctes
fill_blankOui (normalisation)Vocabulaire, formules
matchingOuiAssociations (mot-définition)
orderingOuiSéquence logique/chronologique
numericOui (avec tolerance)Calculs mathématiques/physiques
short_answerOui (normalisation + synonymes)Réponses courtes
clozeOuiPlusieurs lacunes dans un même texte
hotspotOuiCliquer sur la zone d'une image
essayManuel (ou LLM optionnel)Rédaction, dissertation
calculatedAvancé (basé sur une formule)Problèmes numériques paramétrés

Configuration du quiz

QuizConfiguration en JSON de contenu :

{
  "maxAttempts": 3,
  "timeLimitMinutes": 30,
  "shuffleQuestions": true,
  "shuffleOptions": true,
  "accessCode": "ENEM2026",
  "scoringPolicy": "highest",  // highest | latest | average
  "reviewMode": "after_submit",  // after_submit | after_due_date | never
  "passingScore": 70,
  "showResultsToStudent": true,
  "allowGoBack": false  // si false, l'apprenant ne peut pas revenir aux questions précédentes
}

Flux de soumission

POST /api/courses/[courseId]/lessons/[lessonId]/quiz/start
  ↓
- Valide l'inscription + disponibilité de la leçon (checkLessonAvailability)
- Valide que maxAttempts n'est pas dépassé
- Valide l'accessCode si configuré
- Crée QuizAttempt avec optionOrders (mélanges persistés)
- Retourne les questions SANS correctIndex (règle critique 66)
  ↓
L'apprenant répond (le client envoie les événements de changement d'onglet en arrière-plan)
  ↓
POST /api/courses/[courseId]/lessons/[lessonId]/quiz/submit
  ↓
- remapStudentAnswer (annule le mélange via optionOrders)
- Auto-correction par type
- Calcule le score
- Crée/met à jour LessonCompletion (scoringPolicy décide)
- Déclenche QuizEvaluationService :
  - Met à jour ConceptMastery par concepts[] de la question
  - Détecte les misconceptions (Haiku, ~$0.001)
- Crée une Grade dans le gradebook (si GradeItem associée)
- Déclenche l'automatisation quiz_submitted
- Déclenche handleGamificationEvent (XP, badges, concours)

Intégrité académique

QuizAttempt persiste :

  • tabSwitchCount — nombre de fois que l'apprenant a quitté l'onglet
  • copyPasteCount — tentatives de copy/paste/cut détectées
  • blurCount — événements de perte de focus de la fenêtre
  • timeSpentSec — temps total (le temps moyen par question est dérivé de cette valeur)
  • ipAddress, userAgent
  • flagged / flagReason — true lorsqu'un signal dépasse le seuil configuré

Contrôles configurables dans QuizConfiguration : accessCode, ipWhitelist (correspondance exacte, validée côté serveur dans quiz/start), requireLockdownBrowser (Safe Exam Browser ou l'application StudeiaMobile), requireFullscreen, preventTabSwitch avec maxTabSwitches, et disableCopyPaste.

Le gradebook affiche l'icône ShieldAlert avec une infobulle indiquant le motif du signalement. L'enseignant décide d'annuler ou d'ignorer.

Question pooling (banque de questions)

Un quiz peut tirer aléatoirement un sous-ensemble d'une ou plusieurs banques : useQuestionPool, questionPoolBankIds, questionPoolCount et questionPoolFilters (difficulté, tags, types). Chaque apprenant reçoit un ensemble différent, sélectionné côté serveur — les réponses correctes ne sont jamais envoyées au client avant la soumission.

Analytics psychométriques

/api/institution/courses/[id]/lessons/[lid]/quiz-analytics retourne :

Difficulté des items (p-value)

difficulty = total_correctes / total_tentatives
  • < 0.3 : très difficile (revoir la question)
  • 0.3-0.7 : idéal
  • 0.85 : très facile

Discrimination point-biserial

Corrélation entre la réussite d'un item et le score total. Identifie les questions qui ne discriminent PAS les bons des mauvais apprenants.

  • 0.4 : excellent

  • 0.2-0.4 : acceptable
  • < 0.2 : mauvais (supprimer/reformuler)

Analyse des distracteurs (MC et TF)

% d'apprenants ayant choisi chaque option incorrecte. Indice de misconceptions courantes :

Q: "Capitale de l'Australie ?"
  A) Sydney (40% — misconception populaire)  ← FLAG
  B) Canberra (45% — correcte)
  C) Melbourne (10%)
  D) Brisbane (5%)

Alpha de Cronbach (cohérence interne)

Mesure si les questions du quiz évaluent le même construit.

  • 0.7 : acceptable

  • 0.6-0.7 : discutable
  • < 0.6 : repenser le quiz

Nécessite ≥ 30 tentatives pour une fiabilité statistique.

Distribution des scores

10 intervalles de 0-100 %. Aide à détecter les quiz avec effet plafond/plancher.

Banque de questions

QuestionBank réutilise les questions dans plusieurs quiz :

POST /api/institution/question-banks
POST /api/institution/question-banks/[id]/items

L'éditeur de quiz dispose d'un sélecteur permettant de filtrer par banque, type, difficulté, tags. L'import sélectionne N questions aléatoires de la banque.

Exportateurs :

  • Format GIFT (compatible Moodle, Canvas, Blackboard)
  • CSV (pour édition dans un tableur)

La banque de questions peut être intégrée dans le RAG pour que le tuteur IA y accède également :

POST /api/institution/question-banks/[id]/rag-ingest

Limites et quotas

  • Maximum 200 questions par quiz (UX)
  • Maximum 1000 questions par banque de questions (performance)
  • Durée minimale 1 minute, maximale 360 minutes (6h)
  • Max attempts : 1-99 ou null (illimité)

Honnêteté technique

Ce que Studeia fait bien :

  • IA multi-fournisseur pour la détection de misconceptions
  • Analytics psychométriques dans l'interface (rares dans les LMS)
  • Banque de questions avec ingestion RAG
  • Compteurs d'intégrité passifs (changement d'onglet, copy/paste, blur, temps)
  • Verrouillage via Safe Exam Browser / StudeiaMobile
  • IP whitelist par quiz + accessCode
  • Question pooling à partir de la banque

Ce que Studeia ne fait PAS (encore) :

  • Surveillance par webcam/microphone (utilisez Examity/ProctorU via LTI)
  • Tests adaptatifs (CAT) — feuille de route
  • La correction automatique des essays via LLM est optionnelle (pas un correcteur garanti)

Voir aussi

FAQ

Combien de types de questions Studeia supporte-t-il ?

12 types : multiple_choice, true_false, multiple_select, fill_blank, matching (paires), ordering (séquence), numeric (avec tolérance), short_answer (avec normalisation), cloze, hotspot, essay, calculated. 10 sont auto-corrigés ; essay est manuel ou via LLM ; calculated est un type avancé basé sur une formule.

Comment détecter la copie/colle lors d'un quiz ?

Intégrité académique intégrée : changement d'onglet (QuizAttempt.tabSwitchCount), tentatives de copy/paste (copyPasteCount), événements de perte de focus de la fenêtre (blurCount), temps total et anomalies de temps, IP et user-agent. Optionnel : verrouillage via Safe Exam Browser / l'application StudeiaMobile, IP whitelist par quiz et accessCode. Les signalements s'affichent dans le gradebook avec l'icône ShieldAlert et une infobulle explicative.

Comment empêcher les apprenants de partager les réponses ?

Combinez plusieurs stratégies : shuffleQuestions=true (ordre différent par apprenant), shuffleOptions=true (options mélangées), accessCode (code que l'enseignant communique au moment du quiz), timeLimitMinutes (soumission automatique à l'expiration), maxAttempts=1 (tentative unique). Questions aléatoires via la banque de questions avec des tags.

Quelles analytics Studeia offre-t-il pour les quiz ?

Analytics psychométriques : difficulté des items (% de bonnes réponses), discrimination point-biserial (corrélation item-total), analyse des distracteurs (quelle option incorrecte est la plus populaire = indice de misconception), alpha de Cronbach (cohérence interne), distribution des scores (10 intervalles), signalements pour les questions problématiques. Comparable à ce que Canvas Quizzes propose, avec quelques extensions.

Le quiz dispose-t-il d'une analyse individuelle par apprenant ?

Oui. QuizAttempt enregistre chaque tentative avec horodatage, ordre mélangé des questions/options, réponses, score brut et final, timeSpent total et compteurs d'intégrité. L'apprenant consulte l'historique dans /grades/. L'enseignant accède aux détails dans /institution/courses/[id]/lessons/[lid]/attempts. Le temps moyen par question est calculé à partir du temps total ÷ nombre de questions.

Veja tambem

Quiz Engine : configuration, intégrité et analytics psychométriques