## Backend - fix(ranks): Reordenar rutas en RanksController para evitar conflictos 404 - feat(gamification): Agregar MayaRankEntity al modulo - feat(ml-coins): Expandir funcionalidad del servicio - feat(teacher): Mejoras en dashboard, mensajes y reportes - feat(entities): Nuevas entidades admin, educational, progress, social ## Frontend - feat(gamificationAPI): API completa para ranks con endpoints - feat(RubricEvaluator): Nuevo componente para evaluacion docente - refactor(admin): Mejoras en hooks y paginas - refactor(teacher): Mejoras en paginas del portal ## Database - fix(initialize_user_stats): Agregar is_current y achieved_at a user_ranks - fix(notifications-policies): Corregir RLS con JOIN correcto - feat(friendships): Agregar columna status con estados - sync(seeds): Homologacion completa DEV <-> PROD ## Docs & Orchestration - docs(api): Actualizar API-TEACHER-MODULE.md - docs(frontend): COMPONENTES-INVENTARIO.md - docs(database): VIEWS-INVENTARIO.md, VALIDACION-DDL-SEEDS - Reportes de analisis y validacion 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
10 KiB
CASOS DE PRUEBA E2E - MÓDULOS 4 Y 5
Gamilit Platform - Test Plan
Fecha: 2025-12-23 Versión: 1.0 Estado: DOCUMENTADO
RESUMEN
Este documento define los casos de prueba E2E para validar el flujo completo de los módulos 4 (Lectura Digital) y 5 (Producción Creativa), incluyendo:
- Envío de respuestas
- Validación de estructura
- Integración con gamificación (XP, ML Coins)
- Revisión docente
- Otorgamiento de recompensas
FLUJO COMPLETO A PROBAR
Estudiante completa ejercicio M4/M5
↓
Frontend: useExerciseSubmission.submit()
↓
Backend: exercises.controller.submit()
↓
Backend: validate_module4_module5_answer() [SQL]
↓
Backend: exercise-attempt.service.create()
↓
Database: progress_tracking.exercise_attempts
↓
Triggers: XP, ML Coins (auto-calificable) o pendiente (manual)
↓
[Si manual] Docente: ReviewPanel → RubricEvaluator → grade()
↓
Backend: grading.service.grade()
↓
Triggers: Otorgar rewards finales
↓
Estudiante ve feedback en dashboard
CASOS DE PRUEBA - MÓDULO 4
E2E-M4-01: Verificador Fake News - Respuesta Válida
Precondiciones:
- Usuario autenticado como estudiante
- Ejercicio 4.1 desbloqueado
- Usuario en rango Nacom (500+ XP)
Pasos:
- Navegar a Módulo 4 > Ejercicio 4.1 (Verificador Fake News)
- Completar 3 afirmaciones con veredictos (verdadero/falso/parcial)
- Agregar evidencia para cada afirmación (≥10 caracteres)
- Citar al menos 1 fuente
- Enviar respuesta
Datos de prueba:
{
"claims_verified": [
{
"claim_id": "claim-1",
"verdict": "verdadero",
"evidence": "Según biografía oficial de Marie Curie"
},
{
"claim_id": "claim-2",
"verdict": "falso",
"evidence": "No hay registros históricos de esto"
},
{
"claim_id": "claim-3",
"verdict": "parcial",
"evidence": "Parcialmente correcto pero exagerado"
}
],
"is_fake": false,
"evidence": "Fuente: Wikipedia + Enciclopedia Britannica"
}
Resultado esperado:
- ✅ Respuesta guardada exitosamente
- ✅ Estado: "pending_review"
- ✅ No se otorgan XP/ML Coins hasta revisión docente
- ✅ Aparece en lista de pendientes del Teacher Portal
E2E-M4-02: Quiz TikTok - 3/3 Correctas (Auto-calificable)
Precondiciones:
- Usuario autenticado como estudiante
- Ejercicio 4.3 desbloqueado
- Es el PRIMER intento del usuario
Pasos:
- Navegar a Módulo 4 > Ejercicio 4.3 (Quiz TikTok)
- Responder 3 preguntas correctamente en <30s cada una
- Enviar respuestas
Datos de prueba:
{
"answers": [0, 1, 1],
"swipeHistory": [0, 1, 2],
"score": 95
}
Resultado esperado:
- ✅ Score: 100 puntos (o cercano con penalización tiempo)
- ✅ XP otorgado: 150 XP base × 1.10 (Nacom) = 165 XP
- ✅ ML Coins otorgados: 50 base × 1.10 = 55 coins
- ✅ Bonus firstAttempt aplicado
- ✅ Estado: "completed" (no requiere revisión)
E2E-M4-03: Quiz TikTok - Segundo Intento (Anti-farming)
Precondiciones:
- Usuario ya completó E2E-M4-02 previamente
Pasos:
- Intentar hacer el ejercicio 4.3 nuevamente
- Responder todas correctamente
Resultado esperado:
- ✅ Score calculado correctamente
- ❌ XP NO otorgado (anti-farming)
- ❌ ML Coins NO otorgados (anti-farming)
- ✅ Mensaje: "Ya completaste este ejercicio"
E2E-M4-04: Análisis Memes - Estructura Inválida
Precondiciones:
- Usuario autenticado como estudiante
Pasos:
- Navegar a ejercicio 4.5
- Intentar enviar respuesta con estructura incorrecta
Datos de prueba (inválidos):
{
"annotations": [],
"analysis": {
"message": ""
}
}
Resultado esperado:
- ❌ Error de validación
- ✅ Mensaje: "annotations debe tener al menos 1 elemento"
- ✅ Mensaje: "message no puede estar vacío"
- ✅ No se crea attempt
E2E-M4-05: Infografía Interactiva - Flujo Completo
Precondiciones:
- Usuario en rango Ah K'in (1,000+ XP)
Pasos:
- Explorar al menos 3 secciones de la infografía
- Responder preguntas de síntesis
- Enviar respuesta
Datos de prueba:
{
"answers": {
"q1": "Polonia y Francia",
"q2": "Física y Química"
},
"sections_explored": ["biografia", "descubrimientos", "premios"]
}
Resultado esperado:
- ✅ Respuesta guardada
- ✅ Estado: "pending_review"
- ✅ sections_explored validado (≥1)
CASOS DE PRUEBA - MÓDULO 5
E2E-M5-01: Diario Multimedia - 3 Entradas
Precondiciones:
- Usuario autenticado como estudiante
- Módulos 1-4 completados
Pasos:
- Navegar a Módulo 5 > Ejercicio 5.1 (Diario Multimedia)
- Crear 3 entradas de diario
- Cada entrada con fecha, contenido (≥50 chars), y mood
Datos de prueba:
{
"entries": [
{
"date": "1898-12-21",
"content": "Hoy hemos aislado un nuevo elemento. Lo llamaremos polonio en honor a mi amada Polonia...",
"mood": "esperanzada"
},
{
"date": "1903-11-10",
"content": "El Premio Nobel ha llegado. Pierre y yo compartimos este honor con Becquerel...",
"mood": "orgullosa"
},
{
"date": "1911-11-04",
"content": "Un segundo Premio Nobel, esta vez de Química. Pero Pierre ya no está aquí...",
"mood": "melancólica"
}
]
}
Resultado esperado:
- ✅ Respuesta guardada
- ✅ Estado: "pending_review"
- ✅ XP pendiente: 500 XP (se otorga al calificar)
- ✅ Validación: 1-5 entradas, ≥50 chars cada una
E2E-M5-02: Video Carta - Solo Script (sin video)
Precondiciones:
- Usuario autenticado como estudiante
Pasos:
- Navegar a ejercicio 5.3
- Escribir script (≥100 caracteres)
- NO subir video (opción válida)
- Enviar
Datos de prueba:
{
"video_url": null,
"script": "Querida Marie Curie, te escribo desde el año 2025 para agradecerte por tu valentía al enfrentar los prejuicios de tu época. Tu dedicación a la ciencia inspiró a generaciones de mujeres científicas. Gracias por demostrar que el conocimiento no tiene género.",
"duration": null
}
Resultado esperado:
- ✅ Respuesta guardada (script válido como alternativa)
- ✅ Estado: "pending_review"
- ✅ Validación: script ≥100 caracteres
E2E-M5-03: Comic Digital - Validación Paneles
Precondiciones:
- Usuario autenticado como estudiante
Pasos:
- Navegar a ejercicio 5.2
- Crear 5 paneles de cómic
- Cada panel con diálogo y narración
Datos de prueba:
{
"panels": [
{ "dialogue": "Marie: ¡Pierre, mira esto!", "narration": "En el laboratorio de París, 1898" },
{ "dialogue": "Pierre: ¿Es... radiactivo?", "narration": "Los esposos examinan el mineral" },
{ "dialogue": "Marie: Lo llamaremos Radio.", "narration": "El descubrimiento que cambiaría el mundo" },
{ "dialogue": "Narrador: Años después...", "narration": "Estocolmo, 1903" },
{ "dialogue": "Marie: Este premio es para la ciencia.", "narration": "Primera mujer en ganar un Nobel" }
]
}
Resultado esperado:
- ✅ Respuesta guardada
- ✅ Estado: "pending_review"
- ✅ Validación: 4-6 paneles
E2E-M5-04: Calificación por Docente
Precondiciones:
- Usuario autenticado como docente
- Existe submission pendiente de E2E-M5-01
Pasos:
- Navegar a Teacher Portal > Review Panel
- Seleccionar submission de Diario Multimedia
- Evaluar con RubricEvaluator:
- Precisión histórica: 4/5
- Profundidad emocional: 5/5
- Creatividad: 4/5
- Voz auténtica: 4/5
- Agregar feedback general
- Guardar calificación
Datos de entrada:
{
"scores": [
{ "criterionId": "precision_historica", "selectedLevel": 4 },
{ "criterionId": "profundidad_emocional", "selectedLevel": 5 },
{ "criterionId": "creatividad", "selectedLevel": 4 },
{ "criterionId": "voz_autentica", "selectedLevel": 4 }
],
"feedback": "Excelente trabajo. Las entradas reflejan una comprensión profunda de los sentimientos de Marie Curie."
}
Resultado esperado:
- ✅ Score final: 85% (calculado con pesos)
- ✅ XP otorgado al estudiante: 500 XP × (85/100) = 425 XP
- ✅ ML Coins otorgados: proporcional al score
- ✅ Estado cambia a "graded"
- ✅ Estudiante recibe notificación
CASOS DE PRUEBA - GAMIFICACIÓN
E2E-GAM-01: Promoción de Rango
Precondiciones:
- Usuario en rango Halach Uinic con 1,850 XP
- Necesita 50 XP más para K'uk'ulkan (1,900 XP)
Pasos:
- Completar ejercicio que otorgue ≥50 XP
Resultado esperado:
- ✅ Total XP: 1,900+
- ✅ Trigger: promote_to_next_rank() ejecutado
- ✅ Nuevo rango: K'uk'ulkan
- ✅ ML Coins bonus: +1,000 coins
- ✅ Achievement: "Ascenso a K'uk'ulkan" desbloqueado
- ✅ Multiplicador actualizado: 1.25x
- ✅ Notificación enviada al usuario
E2E-GAM-02: Multiplicador ML Coins por Rango
Precondiciones:
- Usuario en rango Nacom (multiplicador 1.10x)
Pasos:
- Completar ejercicio con recompensa base 50 ML Coins
Resultado esperado:
- ✅ ML Coins finales: 50 × 1.10 = 55 coins
- ✅ Transacción registrada con multiplicador
MATRIZ DE COBERTURA
| Ejercicio | Envío | Validación | Revisión | XP | ML Coins | Anti-farming |
|---|---|---|---|---|---|---|
| 4.1 Verificador FN | ✅ | ✅ | ✅ | ✅ | ✅ | N/A |
| 4.2 Infografía | ✅ | ✅ | ✅ | ✅ | ✅ | N/A |
| 4.3 Quiz TikTok | ✅ | ✅ | N/A | ✅ | ✅ | ✅ |
| 4.4 Nav Hipertextual | ✅ | ✅ | ✅ | ✅ | ✅ | N/A |
| 4.5 Análisis Memes | ✅ | ✅ | ✅ | ✅ | ✅ | N/A |
| 5.1 Diario Multi | ✅ | ✅ | ✅ | ✅ | ✅ | N/A |
| 5.2 Cómic Digital | ✅ | ✅ | ✅ | ✅ | ✅ | N/A |
| 5.3 Video-Carta | ✅ | ✅ | ✅ | ✅ | ✅ | N/A |
HERRAMIENTAS DE PRUEBA RECOMENDADAS
- Cypress - E2E testing frontend
- Jest + Supertest - Integration testing backend
- pgTAP - Database function testing
- Postman/Newman - API testing
PRIORIDAD DE EJECUCIÓN
- P0 - Crítico: E2E-M4-02, E2E-M4-03 (Quiz TikTok + anti-farming)
- P1 - Alto: E2E-M5-04, E2E-GAM-01 (Calificación + Promoción)
- P2 - Medio: Resto de casos M4-M5
Documento generado: 2025-12-23 Estado: LISTO PARA IMPLEMENTACIÓN DE TESTS