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

Quiz Engine: configuración, integridad y analytics psicométricos

Quiz engine: 12 tipos de pregunta, maxAttempts, time limit, shuffle, lockdown browser, IP whitelist, question pooling, scoring policies y analytics psicométricos (Cronbach alpha, point-biserial).

2026-05-31 10 min
Resposta curta

Quiz Engine de Studeia: 12 tipos de pregunta (10 auto-corregidos). Configuración con maxAttempts, timeLimit, shuffle, accessCode, IP whitelist, lockdown Safe Exam Browser/StudeiaMobile, question pooling del banco, scoringPolicy y modos de release. Contadores de integridad (tab switch, copy/paste, blur, tiempo). Analytics psicométricos (Cronbach alpha, point-biserial, item difficulty, distractor analysis). Question bank reutilizable.

Tipos de pregunta

12 tipos en total — 10 auto-corregidos, essay manual/LLM, calculated como tipo avanzado de fórmula:

TipoAuto-correcciónCasos de uso
multiple_choiceConocimiento factual, conceptos
true_falseVerificación rápida
multiple_selectMúltiples respuestas correctas
fill_blankSí (normalización)Vocabulario, fórmulas
matchingAsociaciones (palabra-definición)
orderingSecuencia lógica/cronológica
numericSí (con tolerance)Cálculos matemáticos/físicos
short_answerSí (normalización + sinónimos)Respuestas cortas
clozeMúltiples espacios en un mismo texto
hotspotHacer clic en la región de una imagen
essayManual (o LLM opcional)Redacción, ensayo
calculatedAvanzado (basado en fórmula)Problemas numéricos parametrizados

Configuración del quiz

QuizConfiguration en 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  // si false, el alumno no puede volver a preguntas anteriores
}

Flujo de envío

POST /api/courses/[courseId]/lessons/[lessonId]/quiz/start
  ↓
- Valida matrícula + lesson availability (checkLessonAvailability)
- Valida que maxAttempts no haya sido superado
- Valida accessCode si está configurado
- Crea QuizAttempt con optionOrders (shuffles persistidos)
- Retorna preguntas SIN correctIndex (regla crítica 66)
  ↓
El alumno responde (el cliente envía tab switch events en segundo plano)
  ↓
POST /api/courses/[courseId]/lessons/[lessonId]/quiz/submit
  ↓
- remapStudentAnswer (revierte shuffle vía optionOrders)
- Auto-corrección por tipo
- Calcula score
- Crea/actualiza LessonCompletion (scoringPolicy decide)
- Dispara QuizEvaluationService:
  - Actualiza ConceptMastery por concepts[] de la pregunta
  - Detecta misconceptions (Haiku, ~$0.001)
- Crea Grade en el gradebook (si hay GradeItem asociada)
- Dispara automatización quiz_submitted
- Dispara handleGamificationEvent (XP, badges, contests)

Integridad académica

QuizAttempt persiste:

  • tabSwitchCount — cuántas veces el alumno salió de la pestaña
  • copyPasteCount — intentos de copy/paste/cut detectados
  • blurCount — eventos de blur de la ventana
  • timeSpentSec — tiempo total (el tiempo promedio por pregunta se deriva de este)
  • ipAddress, userAgent
  • flagged / flagReason — true cuando alguna señal supera el límite configurado

Controles configurables en QuizConfiguration: accessCode, ipWhitelist (coincidencia exacta, validada server-side en quiz/start), requireLockdownBrowser (Safe Exam Browser o la app StudeiaMobile), requireFullscreen, preventTabSwitch con maxTabSwitches, y disableCopyPaste.

El gradebook muestra el ícono ShieldAlert + tooltip con el motivo del flag. El profesor decide si anula o ignora.

Question pooling (banco de preguntas)

Un quiz puede sortear un subconjunto aleatorio de uno o más bancos: useQuestionPool, questionPoolBankIds, questionPoolCount y questionPoolFilters (dificultad, etiquetas, tipos). Cada alumno recibe un conjunto diferente, seleccionado en el servidor — las respuestas correctas nunca se envían al cliente antes del envío.

Analytics psicométricos

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

Item difficulty (p-value)

difficulty = total_correctas / total_intentos
  • < 0.3: muy difícil (revisar pregunta)
  • 0.3-0.7: ideal
  • 0.85: muy fácil

Point-biserial discrimination

Correlación entre acertar el ítem y el score total. Identifica preguntas que NO discriminan entre buenos y malos alumnos.

  • 0.4: excelente

  • 0.2-0.4: aceptable
  • < 0.2: deficiente (eliminar/reformular)

Distractor analysis (MC y TF)

% de alumnos que eligieron cada alternativa incorrecta. Pista de misconceptions comunes:

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

Cronbach's alpha (consistencia interna)

Mide si las preguntas del quiz están evaluando el mismo constructo.

  • 0.7: aceptable

  • 0.6-0.7: cuestionable
  • < 0.6: rediseñar el quiz

Requiere ≥ 30 intentos para confiabilidad estadística.

Score distribution

10 buckets de 0-100%. Ayuda a detectar quizzes con efecto techo/suelo (ceiling/floor effect).

Question bank

QuestionBank reutiliza preguntas en múltiples quizzes:

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

El editor de quizzes tiene un picker que filtra por banco, tipo, dificultad, etiquetas. La importación selecciona N preguntas aleatorias del banco.

Exportadores:

  • Formato GIFT (compatible con Moodle, Canvas, Blackboard)
  • CSV (para edición en hoja de cálculo)

El question bank puede ser incorporado al RAG para que el tutor IA también acceda:

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

Límites y cuotas

  • Máximo 200 preguntas por quiz (UX)
  • Máximo 1000 preguntas por question bank (rendimiento)
  • Tiempo límite mínimo 1 minuto, máximo 360 minutos (6h)
  • Max attempts: 1-99 o null (ilimitado)

Honestidad técnica

Lo que Studeia hace bien:

  • IA multi-proveedor para detección de misconceptions
  • Analytics psicométricos en UI (pocos LMS los ofrecen)
  • Question bank con RAG ingestion
  • Contadores de integridad pasivos (tab switch, copy/paste, blur, tiempo)
  • Lockdown vía Safe Exam Browser / StudeiaMobile
  • IP whitelist por quiz + accessCode
  • Question pooling a partir del banco

Lo que Studeia NO hace (aún):

  • Proctoring con webcam/micrófono (usa Examity/ProctorU vía LTI)
  • Adaptive testing (CAT) — roadmap
  • La auto-corrección de essay con LLM es opcional (no es un corrector garantizado)

Ver también

FAQ

¿Cuántos tipos de pregunta soporta Studeia?

12 tipos: multiple_choice, true_false, multiple_select, fill_blank, matching (pares), ordering (secuencia), numeric (con tolerancia), short_answer (con normalización), cloze, hotspot, essay, calculated. 10 son auto-corregidos; essay es manual o vía LLM; calculated es un tipo avanzado basado en fórmula.

¿Cómo detectar copia/pegado en un quiz?

Integridad académica integrada: cambio de pestaña (QuizAttempt.tabSwitchCount), intentos de copy/paste (copyPasteCount), eventos de blur de la ventana (blurCount), tiempo total y anomalías de tiempo, IP y user-agent. Opcional: lockdown vía Safe Exam Browser / app StudeiaMobile, IP whitelist por quiz y accessCode. Los flags se muestran en el gradebook con ícono ShieldAlert + tooltip explicativo.

¿Cómo evitar que los alumnos compartan respuestas?

Combina varias estrategias: shuffleQuestions=true (orden diferente por alumno), shuffleOptions=true (alternativas mezcladas), accessCode (código que el profesor comparte en el horario del quiz), timeLimitMinutes (auto-submit al expirar), maxAttempts=1 (1 intento único). Preguntas aleatorizadas vía question bank con etiquetas.

¿Qué analytics ofrece Studeia para los quizzes?

Analytics psicométricos: item difficulty (% de acierto), point-biserial discrimination (correlación ítem-total), distractor analysis (qué alternativa incorrecta es más popular = pista de misconception), Cronbach's alpha (consistencia interna), score distribution (10 buckets), flags para preguntas problemáticas. Comparable a lo que ofrece Canvas Quizzes + algunas extensiones.

¿El quiz tiene análisis individual por alumno?

Sí. QuizAttempt registra cada intento con timestamp, orden mezclado de preguntas/opciones, answers, score raw y final, timeSpent total y contadores de integridad. El alumno ve el historial en /grades/. El profesor ve el detalle en /institution/courses/[id]/lessons/[lid]/attempts. El tiempo promedio por pregunta se deriva del tiempo total ÷ nº de preguntas.

Veja tambem

Quiz Engine: configuración, integridad y analytics psicométricos