Pular para o conteúdo

Quiz Engine: configuracao, integridade e analytics psicometricas

Quiz engine completo: 8+ tipos de questao, maxAttempts, timeLimit, shuffle de questoes e opcoes, accessCode, scoring policies (highest/latest/average), review modes. Integridade academica (tab switch, time anomalies). Analytics psicometricas (Cronbach alpha, point-biserial discrimination, distractor analysis).

2026-05-23 10 min
Resposta curta

Quiz Engine do Studeia: 8+ tipos de questao auto-corrigidas (multiple_choice, true_false, fill_blank, matching, ordering, numeric, short_answer, essay). Configuracao com maxAttempts, timeLimitMinutes, shuffleQuestions/Options, accessCode, scoringPolicy (highest/latest/average), reviewMode. Integridade academica (tab switch, time anomalies). Analytics psicometricas (Cronbach alpha, point-biserial discrimination, item difficulty, distractor analysis). Question bank reusavel.

Tipos de questao

TipoAuto-correcaoCasos de uso
multiple_choiceSimConhecimento factual, conceitos
true_falseSimVerificacao rapida
fill_blankSim (normalizacao)Vocabulario, formulas
matchingSimAssociacoes (palavra-definicao)
orderingSimSequencia logica/cronologica
numericSim (com tolerance)Calculos matematicos/fisicos
short_answerSim (normalizacao + sinonimos)Respostas curtas
essayManual (ou LLM opcional)Redacao, dissertacao

Configuracao do quiz

QuizConfiguration em content JSON:

{
  "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  // se false, aluno nao volta para questoes anteriores
}

Fluxo de submissao

POST /api/courses/[courseId]/lessons/[lessonId]/quiz/start
  ↓
- Valida matricula + lesson availability (checkLessonAvailability)
- Valida maxAttempts nao excedido
- Valida accessCode se configurado
- Cria QuizAttempt com optionOrders (shuffles persistidos)
- Retorna questoes SEM correctIndex (regra critica 66)
  ↓
Aluno responde (cliente envia tab switch events em background)
  ↓
POST /api/courses/[courseId]/lessons/[lessonId]/quiz/submit
  ↓
- remapStudentAnswer (revere shuffle via optionOrders)
- Auto-correcao por tipo
- Calcula score
- Cria/atualiza LessonCompletion (scoringPolicy decide)
- Dispara QuizEvaluationService:
  - Atualiza ConceptMastery por concepts[] da questao
  - Detecta misconceptions (Haiku, ~$0.001)
- Cria Grade no gradebook (se GradeItem associada)
- Dispara automacao quiz_submitted
- Dispara handleGamificationEvent (XP, badges, contests)

Integridade academica

QuizAttempt rastreia em background:

  • tabSwitchCount — quantas vezes aluno saiu da aba
  • copyPasteCount — eventos paste detectados
  • blurEvents — viewport blur
  • avgTimePerQuestionSec — tempo medio por questao
  • flagged: boolean — true se algum sinal exceder threshold

Gradebook exibe icone ShieldAlert + tooltip "Tab switches: 8, time per question: 1.2s avg". Professor decide se anula ou ignora.

Analytics psicometricas

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

Item difficulty (p-value)

difficulty = total_corretas / total_tentativas
  • < 0.3: muito dificil (rever questao)
  • 0.3-0.7: ideal
  • 0.85: muito facil

Point-biserial discrimination

Correlacao entre acertar item e score total. Identifica questoes que NAO discriminam bons de maus alunos.

  • 0.4: excelente

  • 0.2-0.4: aceitavel
  • < 0.2: ruim (remove/reformule)

Distractor analysis (MC e TF)

% de alunos que escolheram cada alternativa errada. Pista de misconceptions comuns:

Q: "Capital da Australia?"
  A) Sydney (40% — misconception popular)  ← FLAG
  B) Canberra (45% — correta)
  C) Melbourne (10%)
  D) Brisbane (5%)

Cronbach's alpha (consistencia interna)

Mede se as questoes do quiz estao medindo o mesmo construto.

  • 0.7: aceitavel

  • 0.6-0.7: questionavel
  • < 0.6: redesenhar quiz

Requer ≥ 30 tentativas para confiabilidade estatistica.

Score distribution

10 buckets de 0-100%. Ajuda detectar quizzes com ceiling/floor effect.

Question bank

QuestionBank reutiliza questoes em multiplos quizzes:

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

Quiz editor tem picker que filtra por banco, tipo, dificuldade, tags. Import seleciona N questoes aleatorias do banco.

Exporters:

  • GIFT format (compativel Moodle, Canvas, Blackboard)
  • CSV (para edicao em planilha)

Question bank pode ser ingerido no RAG para o tutor IA tambem acessar:

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

Limites e quotas

  • Maximo 200 questoes por quiz (UX)
  • Maximo 1000 questoes por question bank (performance)
  • Time limit minimo 1 minuto, maximo 360 minutos (6h)
  • Max attempts: 1-99 ou null (ilimitado)

Honestidade tecnica

O que Studeia faz bem:

  • Multi-provider IA para misconception detection
  • Analytics psicometricas em UI (raros LMS oferecem)
  • Question bank com RAG ingestion
  • Integridade academica passive (sem proctoring intrusivo)

O que Studeia NAO faz (ainda):

  • Proctoring com webcam/microfone (privacy concerns)
  • Lockdown browser
  • IP whitelist por quiz
  • Question pooling avancado (Canvas Quizzes 2.0 tem isso melhor)
  • Adaptive testing (CAT) — roadmap

Veja tambem

FAQ

Quantos tipos de questao Studeia suporta?

8+ tipos: multiple_choice, true_false, fill_blank, matching (pares), ordering (sequencia), numeric (com tolerancia), short_answer (com normalizacao), essay. 7 sao auto-corrigidos (essay e manual ou via LLM se habilitado).

Como detectar copia/cola em quiz?

Integridade academica built-in: tab switch detection (incrementa QuizAttempt.tabSwitchCount), time anomalies (resposta em <2s indica adivinhacao ou cola), copy/paste detection, viewport blur events. Flags exibidos no gradebook com icone ShieldAlert + tooltip explicativo.

Como evitar que alunos compartilhem respostas?

Combine varias estrategias: shuffleQuestions=true (ordem diferente por aluno), shuffleOptions=true (alternativas embaralhadas), accessCode (codigo que o professor da no horario do quiz), timeLimitMinutes (auto-submit ao expirar), maxAttempts=1 (1 tentativa unica). Questoes randomizadas via question bank com tags.

Que analytics o Studeia oferece para quiz?

Analytics psicometricas: item difficulty (% acerto), point-biserial discrimination (correlacao item-total), distractor analysis (qual alternativa errada e mais popular = pista de misconception), Cronbach's alpha (consistencia interna), score distribution (10 buckets), flags para questoes problematicas. Comparable ao que Canvas Quizzes oferece + algumas extensoes.

Quiz tem analise individual por aluno?

Sim. QuizAttempt grava cada tentativa com timestamp, answers, score, timeSpent, integrity flags. Aluno ve historico em /grades/. Professor ve detail em /institution/courses/[id]/lessons/[lid]/attempts. Inclui pegada de tempo por questao.

Veja tambem

Quiz Engine: configuracao, integridade e analytics psicometricas | Studeia Docs