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).

2026-05-31 10 min
Resposta curta

Quiz Engine de Studeia : 12 types de questions (10 auto-corrigés). Configuration avec maxAttempts, timeLimit, shuffle, accessCode, IP whitelist, verrouillage Safe Exam Browser/StudeiaMobile, question pooling depuis la banque, scoringPolicy et modes de publication. Compteurs d'intégrité (changement d'onglet, copier-coller, perte de focus, temps). Analytics psychométriques (alpha de Cronbach, point-biserial, difficulté des items, analyse des distracteurs). Banque de questions réutilisable.

Types de questions

12 types au total — 10 auto-corrigés, essay manuel/LLM, calculated comme type avancé à 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 tolérance)Calculs mathématiques/physiques
short_answerOui (normalisation + synonymes)Réponses courtes
clozeOuiPlusieurs lacunes dans un même texte
hotspotOuiCliquer sur une 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'étudiant 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 accessCode si configuré
- Crée QuizAttempt avec optionOrders (mélanges persistés)
- Retourne les questions SANS correctIndex (règle critique 66)
  ↓
L'étudiant 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 (inverse 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 un 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'étudiant a quitté l'onglet
  • copyPasteCount — tentatives de copier-coller/couper 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 la limite configurée

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

Le gradebook affiche une icône ShieldAlert + une info-bulle 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 étudiant reçoit un ensemble différent, sélectionné côté serveur — les bonnes réponses 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 : trop difficile (revoir la question)
  • 0.3-0.7 : idéal
  • 0.85 : trop 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 étudiants.

  • 0.4 : excellent

  • 0.2-0.4 : acceptable
  • < 0.2 : médiocre (supprimer/reformuler)

Analyse des distracteurs (MC et TF)

% d'étudiants ayant choisi chaque option incorrecte. Indice de misconceptions communes :

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 : questionnable
  • < 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 qui filtre par banque, type, difficulté et tags. L'import sélectionne N questions aléatoires dans la banque.

Exporteurs :

  • Format GIFT (compatible Moodle, Canvas, Blackboard)
  • CSV (pour l'é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 1 000 questions par banque de questions (performance)
  • Durée limite minimale 1 minute, maximale 360 minutes (6h)
  • Max attempts : 1-99 ou null (illimité)

Honnêteté technique

Ce que Studeia fait bien :

  • IA multi-fournisseurs pour la détection des misconceptions
  • Analytics psychométriques dans l'interface (rares LMS les proposent)
  • Banque de questions avec ingestion RAG
  • Compteurs d'intégrité passifs (changement d'onglet, copier-coller, perte de focus, temps)
  • Verrouillage via Safe Exam Browser / StudeiaMobile
  • IP whitelist par quiz + accessCode
  • Question pooling depuis la banque

Ce que Studeia NE fait PAS (encore) :

  • Surveillance par webcam/microphone (utilisez Examity/ProctorU via LTI)
  • Tests adaptatifs (CAT) — feuille de route
  • L'auto-correction des essays assistée par LLM est optionnelle (pas un correcteur garanti)

Voir aussi

FAQ

Combien de types de questions Studeia prend-il en charge ?

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 des formules.

Comment détecter le copier-coller dans un quiz ?

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

Comment éviter que les étudiants partagent leurs réponses ?

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

Quels analytics Studeia propose-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 mauvaise option est la plus choisie = 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 propose-t-il une analyse individuelle par étudiant ?

Oui. QuizAttempt enregistre chaque tentative avec horodatage, ordre mélangé des questions/options, réponses, score brut et final, temps total passé et compteurs d'intégrité. L'étudiant consulte son historique dans /grades/. L'enseignant accède au détail 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