- Configure workspace Git repository with comprehensive .gitignore - Add Odoo as submodule for ERP reference code - Include documentation: SETUP.md, GIT-STRUCTURE.md - Add gitignore templates for projects (backend, frontend, database) - Structure supports independent repos per project/subproject level Workspace includes: - core/ - Reusable patterns, modules, orchestration system - projects/ - Active projects (erp-suite, gamilit, trading-platform, etc.) - knowledge-base/ - Reference code and patterns (includes Odoo submodule) - devtools/ - Development tools and templates - customers/ - Client implementations template 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
34 KiB
REPORTE DE ANÁLISIS: Portal Students → Impacto en Portal Teacher
Fecha: 2025-11-29 Analista: Architecture-Analyst Versión: 1.0.0 Tarea: Análisis de requerimientos del portal Students que afectan al portal Teacher
📋 RESUMEN EJECUTIVO
Este documento identifica los requerimientos y funcionalidades del Portal de Students que impactan directamente al Portal de Teacher, con el objetivo de garantizar la coherencia y correcta sincronización de datos entre ambos portales.
Hallazgos Principales
| Área | Estado Actual | Requerimientos Identificados |
|---|---|---|
| Progreso de Estudiantes | ⚠️ Parcial | 8 requerimientos |
| Gamificación | ⚠️ Parcial | 6 requerimientos |
| Misiones | ⚠️ Parcial | 4 requerimientos |
| Ejercicios | ✅ Funcional | 3 requerimientos de mejora |
| Estadísticas | ⚠️ Parcial | 5 requerimientos |
| Alertas de Intervención | ⚠️ Parcial | 4 requerimientos |
Total: 30 requerimientos identificados para sincronización Student↔Teacher
🎯 OBJETIVO DEL ANÁLISIS
Pregunta principal: ¿Qué información genera el portal de Students que el portal de Teacher necesita visualizar, monitorear o actuar sobre ella?
Flujo de Datos Student → Teacher
┌─────────────────────────────────────────────────────────────────┐
│ STUDENT PORTAL │
│ (Genera datos de progreso, gamificación, actividad) │
└─────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────┐
│ BACKEND │
│ - Progress Module (ModuleProgress, ExerciseSubmission) │
│ - Gamification Module (UserStats, Achievements, MLCoins) │
│ - Social Module (Classrooms, Teams) │
│ - Assignments Module (Submissions) │
└─────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────┐
│ TEACHER PORTAL │
│ (Consume, visualiza, califica, genera reportes) │
└─────────────────────────────────────────────────────────────────┘
1️⃣ MÓDULOS DEL STUDENT PORTAL ANALIZADOS
1.1 Estructura del Portal Students
| Categoría | Cantidad | Descripción |
|---|---|---|
| Páginas | 32 | Incluye Dashboard, Ejercicios, Logros, Leaderboard, Misiones, Perfil |
| Componentes | 30+ | Dashboard (14), Ejercicios (6), Gamificación (6), Logros (6), Notificaciones (3) |
| Hooks | 11 | useDashboardData, useExerciseState, useGamificationData, useUserModules, etc. |
| Stores | 9 | Auth, Economy, Achievements, Leaderboards, Friends, Guilds, PowerUps, Ranks, Missions |
| APIs Consumidas | 15+ | Educational, Gamification, Missions, Progress, Social, Notifications, Assignments |
1.2 Funcionalidades Principales del Student
| # | Funcionalidad | Datos Generados | Relevancia para Teacher |
|---|---|---|---|
| 1 | Módulos y Educación | ModuleProgress, completion_percentage | 🔴 CRÍTICA |
| 2 | Sistema de Ejercicios | ExerciseAttempt, ExerciseSubmission, score | 🔴 CRÍTICA |
| 3 | Sistema de Gamificación Maya | UserRank, XP, rank_progress | 🟡 ALTA |
| 4 | Logros/Achievements | UserAchievement, unlock_date | 🟡 ALTA |
| 5 | Economía Virtual (ML Coins) | MLCoinsTransaction, balance | 🟡 ALTA |
| 6 | Sistema de Misiones | MissionProgress, completion_status | 🟡 ALTA |
| 7 | Leaderboards | Position, score ranking | 🟢 MEDIA |
| 8 | Sistema Social | Friendships, Teams, Challenges | 🟢 MEDIA |
| 9 | Progreso y Analytics | LearningSession, time_spent, streak | 🔴 CRÍTICA |
| 10 | Asignaciones Escolares | AssignmentSubmission, grade | 🔴 CRÍTICA |
2️⃣ REQUERIMIENTOS IDENTIFICADOS PARA EL PORTAL TEACHER
2.1 PROGRESO DE ESTUDIANTES (8 Requerimientos)
REQ-ST-001: Visualización de Progreso por Módulo en Tiempo Real
Origen Student: useDashboardData() → GET /progress/users/:userId/summary
| Campo | Student Portal | Teacher Portal | Estado |
|---|---|---|---|
totalModules |
✅ Mostrado | ⚠️ Verificar | Sincronizar |
completedModules |
✅ Mostrado | ⚠️ Verificar | Sincronizar |
progress_percentage |
✅ Mostrado | ⚠️ Verificar | Sincronizar |
current_streak |
✅ Mostrado | ⚠️ Verificar | Sincronizar |
last_activity_at |
✅ Mostrado | ⚠️ Verificar | Sincronizar |
Requerimiento: El Teacher debe poder ver el mismo resumen de progreso que el estudiante ve en su dashboard, en tiempo real.
Endpoint a consumir: GET /progress/users/:userId/summary
Página Teacher afectada: TeacherStudentsPage.tsx, TeacherProgressPage.tsx
REQ-ST-002: Historial de Intentos de Ejercicios
Origen Student: useExerciseState() → ExerciseAttempt
| Campo | Student Portal | Teacher Portal | Estado |
|---|---|---|---|
attempt_number |
✅ Registrado | ⚠️ Verificar | Sincronizar |
score |
✅ Registrado | ⚠️ Verificar | Sincronizar |
time_spent |
✅ Registrado | ⚠️ Verificar | Sincronizar |
hints_used |
✅ Registrado | ⚠️ Verificar | Sincronizar |
powerups_used |
✅ Registrado | ⚠️ Verificar | Sincronizar |
answers |
✅ Registrado | ⚠️ Verificar | Sincronizar |
Requerimiento: El Teacher debe poder ver todos los intentos de un estudiante en un ejercicio, incluyendo respuestas detalladas y uso de ayudas.
Endpoint necesario: GET /progress/attempts/users/:userId/exercises/:exerciseId
Página Teacher afectada: TeacherExerciseResponsesPage.tsx
REQ-ST-003: Estadísticas de Sesiones de Aprendizaje
Origen Student: LearningSession entity
| Campo | Student Portal | Teacher Portal | Estado |
|---|---|---|---|
session_duration |
✅ Tracked | ⚠️ Verificar | Sincronizar |
activities_count |
✅ Tracked | ⚠️ Verificar | Sincronizar |
modules_visited |
✅ Tracked | ⚠️ Verificar | Sincronizar |
exercises_completed |
✅ Tracked | ⚠️ Verificar | Sincronizar |
Requerimiento: El Teacher debe poder ver las sesiones de aprendizaje de sus estudiantes para entender patrones de estudio.
Endpoint necesario: GET /progress/sessions/users/:userId
Página Teacher afectada: TeacherAnalyticsPage.tsx
REQ-ST-004: Actividades Pendientes del Estudiante
Origen Student: useDashboardData() → PendingActivities
| Campo | Descripción | Teacher Visibility |
|---|---|---|
pending_exercises |
Ejercicios no completados | ⚠️ Necesario |
pending_missions |
Misiones activas no completadas | ⚠️ Necesario |
pending_assignments |
Asignaciones por entregar | ⚠️ Necesario |
deadline |
Fechas límite | ⚠️ Necesario |
Requerimiento: El Teacher debe ver qué actividades tiene pendientes cada estudiante para identificar quienes necesitan seguimiento.
Endpoint necesario: GET /progress/users/:userId/pending-activities
Página Teacher afectada: TeacherStudentsPage.tsx, TeacherAlertsPage.tsx
REQ-ST-005: Actividades Recientes del Estudiante
Origen Student: useRecentActivities(limit)
| Campo | Descripción | Teacher Visibility |
|---|---|---|
activity_type |
Tipo de actividad (ejercicio, logro, misión) | ⚠️ Necesario |
activity_description |
Descripción de la actividad | ⚠️ Necesario |
timestamp |
Fecha/hora de la actividad | ⚠️ Necesario |
score |
Puntuación si aplica | ⚠️ Necesario |
rewards |
Recompensas obtenidas | ⚠️ Necesario |
Requerimiento: El Teacher debe ver un feed de actividad reciente de sus estudiantes (últimas 24-48 horas).
Endpoint necesario: GET /progress/users/:userId/recent-activities
Página Teacher afectada: TeacherDashboardPage.tsx
REQ-ST-006: Ruta de Aprendizaje Personalizada
Origen Student: useDashboardData() → LearningPath
| Campo | Descripción | Teacher Visibility |
|---|---|---|
recommended_modules |
Módulos sugeridos por IA | ⚠️ Útil |
completion_order |
Orden óptimo de completación | ⚠️ Útil |
skill_gaps |
Brechas de habilidades detectadas | ⚠️ Útil |
Requerimiento: El Teacher debe poder ver la ruta de aprendizaje sugerida para cada estudiante y poder ajustarla.
Endpoint necesario: GET /progress/users/:userId/learning-path
Página Teacher afectada: TeacherStudentsPage.tsx
REQ-ST-007: Dominio de Habilidades (Mastery)
Origen Student: MasteryTracking entity
| Campo | Descripción | Teacher Visibility |
|---|---|---|
skill_id |
Habilidad evaluada | ⚠️ Necesario |
mastery_level |
Nivel de dominio (0-100%) | ⚠️ Necesario |
assessments_count |
Evaluaciones realizadas | ⚠️ Necesario |
last_assessment_date |
Última evaluación | ⚠️ Necesario |
Requerimiento: El Teacher debe ver el nivel de dominio de cada habilidad por estudiante para identificar áreas de mejora.
Endpoint necesario: GET /progress/users/:userId/mastery
Página Teacher afectada: TeacherProgressPage.tsx, TeacherAnalyticsPage.tsx
REQ-ST-008: Snapshots de Progreso Histórico
Origen Student: ProgressSnapshot entity
| Campo | Descripción | Teacher Visibility |
|---|---|---|
snapshot_date |
Fecha del snapshot | ⚠️ Necesario |
modules_completed |
Módulos completados a esa fecha | ⚠️ Necesario |
total_xp |
XP acumulado | ⚠️ Necesario |
rank |
Rango a esa fecha | ⚠️ Necesario |
Requerimiento: El Teacher debe poder ver la evolución histórica del progreso de cada estudiante.
Endpoint necesario: GET /progress/users/:userId/snapshots
Página Teacher afectada: TeacherAnalyticsPage.tsx
2.2 GAMIFICACIÓN (6 Requerimientos)
REQ-GAM-001: Estadísticas de Gamificación del Estudiante
Origen Student: useGamificationData() → UserStats
| Campo Student | Campo Teacher | Estado |
|---|---|---|
level |
✅ Mostrado | Verificar mapping |
total_xp |
✅ Mostrado | Verificar mapping |
xp_to_next_level |
⚠️ No mostrado | Agregar |
ml_coins |
✅ Mostrado | Verificar mapping |
current_streak |
✅ Mostrado | Verificar mapping |
max_streak |
⚠️ No mostrado | Agregar |
exercises_completed |
✅ Mostrado | Verificar mapping |
modules_completed |
✅ Mostrado | Verificar mapping |
perfect_scores |
⚠️ No mostrado | Agregar |
Requerimiento: El Teacher debe ver TODAS las estadísticas de gamificación que el estudiante ve, más métricas adicionales para análisis.
Endpoint necesario: GET /gamification/users/:userId/stats
Página Teacher afectada: TeacherGamificationPage.tsx, TeacherStudentsPage.tsx
REQ-GAM-002: Progreso de Rango Maya
Origen Student: ranksStore → UserRank
| Campo | Descripción | Teacher Visibility |
|---|---|---|
current_rank |
Rango actual (Ajaw, Nacom, etc.) | ⚠️ Necesario |
rank_progress |
Progreso al siguiente rango (0-100%) | ⚠️ Necesario |
xp_multiplier |
Multiplicador de XP del rango | ⚠️ Útil |
rank_history |
Historial de promociones | ⚠️ Útil |
Requerimiento: El Teacher debe ver el rango Maya de cada estudiante y su progreso hacia el siguiente nivel.
Endpoint necesario: GET /gamification/ranks/users/:userId/rank-progress
Página Teacher afectada: TeacherGamificationPage.tsx
REQ-GAM-003: Logros Desbloqueados
Origen Student: achievementsStore → UserAchievement
| Campo | Descripción | Teacher Visibility |
|---|---|---|
achievements_unlocked |
Lista de logros | ⚠️ Necesario |
unlock_date |
Fecha de desbloqueo | ⚠️ Necesario |
rarity |
Rareza del logro | ⚠️ Útil |
total_achievements |
Total disponibles | ⚠️ Necesario |
achievements_progress |
Progreso en logros parciales | ⚠️ Útil |
Requerimiento: El Teacher debe ver los logros de sus estudiantes y poder otorgar logros manualmente.
Endpoint necesario: GET /gamification/users/:userId/achievements
Página Teacher afectada: TeacherGamificationPage.tsx
REQ-GAM-004: Balance y Transacciones de ML Coins
Origen Student: economyStore → MLCoinsTransaction
| Campo | Descripción | Teacher Visibility |
|---|---|---|
current_balance |
Balance actual | ⚠️ Necesario |
transactions_history |
Historial de transacciones | ⚠️ Necesario |
coins_earned_today |
Ganados hoy | ⚠️ Útil |
coins_spent_total |
Total gastado | ⚠️ Útil |
Requerimiento: El Teacher debe ver el balance de ML Coins de sus estudiantes y poder otorgar bonificaciones.
Endpoint necesario: GET /gamification/users/:userId/ml-coins
Página Teacher afectada: TeacherGamificationPage.tsx
Funcionalidad adicional: POST /teacher/gamification/bonus (ya existe)
REQ-GAM-005: Inventario de Comodines/Power-ups
Origen Student: powerUpsStore → ComodinesInventory
| Campo | Descripción | Teacher Visibility |
|---|---|---|
comodines_available |
Comodines en inventario | ⚠️ Útil |
comodines_used |
Comodines usados (total) | ⚠️ Útil |
usage_history |
Historial de uso | ⚠️ Útil |
Requerimiento: El Teacher debe poder ver el uso de comodines de sus estudiantes para evaluar si dependen demasiado de ayudas.
Endpoint necesario: GET /gamification/comodines/users/:userId/inventory
Página Teacher afectada: TeacherGamificationPage.tsx, TeacherAnalyticsPage.tsx
REQ-GAM-006: Posición en Leaderboard
Origen Student: leaderboardsStore
| Campo | Descripción | Teacher Visibility |
|---|---|---|
global_position |
Posición global | ⚠️ Útil |
classroom_position |
Posición en el aula | ⚠️ Necesario |
school_position |
Posición en la escuela | ⚠️ Útil |
rank_change |
Cambio de posición | ⚠️ Útil |
Requerimiento: El Teacher debe ver las posiciones de sus estudiantes en los diferentes leaderboards.
Endpoint necesario: GET /gamification/leaderboards/classrooms/:classroomId
Página Teacher afectada: TeacherGamificationPage.tsx, TeacherDashboardPage.tsx
2.3 MISIONES (4 Requerimientos)
REQ-MIS-001: Misiones Activas del Estudiante
Origen Student: missionsStore → Mission
| Campo | Descripción | Teacher Visibility |
|---|---|---|
daily_missions |
Misiones diarias activas | ⚠️ Necesario |
weekly_missions |
Misiones semanales activas | ⚠️ Necesario |
special_missions |
Misiones especiales/eventos | ⚠️ Necesario |
mission_progress |
Progreso en cada misión | ⚠️ Necesario |
Requerimiento: El Teacher debe ver qué misiones tienen activas sus estudiantes y su progreso.
Endpoint necesario: GET /gamification/missions/users/:userId/active
Página Teacher afectada: TeacherStudentsPage.tsx
REQ-MIS-002: Historial de Misiones Completadas
Origen Student: Mission entity con status='completed'
| Campo | Descripción | Teacher Visibility |
|---|---|---|
missions_completed |
Total de misiones completadas | ⚠️ Necesario |
missions_by_type |
Completadas por tipo (daily/weekly) | ⚠️ Necesario |
completion_rate |
Tasa de completación | ⚠️ Necesario |
rewards_claimed |
Recompensas reclamadas | ⚠️ Útil |
Requerimiento: El Teacher debe ver estadísticas de misiones completadas para evaluar compromiso.
Endpoint necesario: GET /gamification/missions/users/:userId/history
Página Teacher afectada: TeacherAnalyticsPage.tsx
REQ-MIS-003: Estadísticas de Misiones del Aula
Origen Student: MissionStats agregado
| Campo | Descripción | Teacher Visibility |
|---|---|---|
classroom_avg_completion |
Promedio de completación del aula | ⚠️ Necesario |
top_mission_completers |
Estudiantes con más misiones | ⚠️ Necesario |
struggling_students |
Estudiantes con pocas misiones | ⚠️ Necesario |
Requerimiento: El Teacher debe ver métricas agregadas de misiones a nivel de aula.
Endpoint necesario: GET /gamification/missions/classrooms/:classroomId/stats
Página Teacher afectada: TeacherDashboardPage.tsx, TeacherAnalyticsPage.tsx
REQ-MIS-004: Misiones Programadas por el Teacher
Origen Student: ScheduledMission entity
| Campo | Descripción | Teacher Action |
|---|---|---|
scheduled_missions |
Misiones asignadas al aula | ✅ Crear |
participant_progress |
Progreso de participantes | ⚠️ Visualizar |
deadline |
Fecha límite | ✅ Definir |
rewards |
Recompensas configuradas | ✅ Definir |
Requerimiento: El Teacher debe poder crear misiones específicas para su aula y monitorear el progreso.
Endpoint necesario:
- POST
/progress/scheduled-missions(crear) - GET
/progress/scheduled-missions/:missionId/progress(monitorear)
Página Teacher afectada: TeacherAssignmentsPage.tsx o nueva página de misiones
2.4 EJERCICIOS (3 Requerimientos)
REQ-EXE-001: Respuestas Detalladas de Ejercicios
Origen Student: ExerciseSubmission entity
| Campo | Descripción | Teacher Visibility |
|---|---|---|
student_answers |
Respuestas del estudiante | 🔴 CRÍTICO |
correct_answers |
Respuestas correctas | 🔴 CRÍTICO |
partial_scores |
Puntuación por pregunta | ⚠️ Necesario |
feedback_needed |
Si requiere revisión manual | 🔴 CRÍTICO |
auto_graded |
Si fue calificado automáticamente | ⚠️ Necesario |
Requerimiento: El Teacher debe poder ver las respuestas exactas de cada estudiante, comparar con las correctas, y poder agregar feedback.
Endpoint necesario: GET /progress/submissions/:submissionId/details
Página Teacher afectada: TeacherExerciseResponsesPage.tsx
REQ-EXE-002: Estadísticas por Tipo de Ejercicio
Origen Student: ExerciseAttempt agregado por mechanic_type
| Campo | Descripción | Teacher Visibility |
|---|---|---|
mechanic_type |
Tipo de mecánica (crucigrama, timeline, etc.) | ⚠️ Necesario |
avg_score_by_type |
Promedio de puntuación por tipo | ⚠️ Necesario |
completion_rate_by_type |
Tasa de completación por tipo | ⚠️ Necesario |
time_spent_by_type |
Tiempo promedio por tipo | ⚠️ Necesario |
Requerimiento: El Teacher debe ver qué tipos de ejercicios le cuestan más a sus estudiantes.
Endpoint necesario: GET /progress/classrooms/:classroomId/exercise-stats
Página Teacher afectada: TeacherAnalyticsPage.tsx
REQ-EXE-003: Ejercicios con Más Fallos
Origen Student: ExerciseAttempt con score < passing
| Campo | Descripción | Teacher Visibility |
|---|---|---|
exercise_id |
Ejercicio problemático | ⚠️ Necesario |
failure_count |
Cantidad de fallos | ⚠️ Necesario |
avg_score |
Puntuación promedio | ⚠️ Necesario |
common_mistakes |
Errores más comunes | ⚠️ Necesario |
Requerimiento: El Teacher debe identificar qué ejercicios específicos causan más problemas para revisar contenido o dar apoyo adicional.
Endpoint necesario: GET /progress/classrooms/:classroomId/problematic-exercises
Página Teacher afectada: TeacherAnalyticsPage.tsx, TeacherAlertsPage.tsx
2.5 ESTADÍSTICAS CONSOLIDADAS (5 Requerimientos)
REQ-STAT-001: Resumen de Estadísticas del Estudiante
Origen Student: useUserStatistics() → GAP-008 implementado
| Campo | Descripción | Teacher Must See |
|---|---|---|
totalTimeSpent |
Tiempo total de estudio | ✅ CRÍTICO |
averageScore |
Puntuación promedio | ✅ CRÍTICO |
exercisesCompleted |
Ejercicios completados | ✅ CRÍTICO |
modulesCompleted |
Módulos completados | ✅ CRÍTICO |
currentStreak |
Racha actual | ✅ CRÍTICO |
longestStreak |
Mejor racha | ⚠️ Útil |
perfectScores |
Puntuaciones perfectas | ⚠️ Útil |
achievementsUnlocked |
Logros desbloqueados | ⚠️ Útil |
Requerimiento: El Teacher debe ver el mismo resumen de estadísticas que el estudiante ve en su perfil.
Endpoint existente: GET /auth/profile/statistics (implementado en GAP-008)
Página Teacher afectada: TeacherStudentsPage.tsx, TeacherProgressPage.tsx
REQ-STAT-002: Comparativa del Estudiante vs Clase
Origen: Calculado
| Campo | Descripción | Teacher Visibility |
|---|---|---|
score_percentile |
Percentil en la clase | ⚠️ Necesario |
completion_percentile |
Percentil de completación | ⚠️ Necesario |
above_avg_skills |
Habilidades sobre el promedio | ⚠️ Necesario |
below_avg_skills |
Habilidades bajo el promedio | ⚠️ Necesario |
Requerimiento: El Teacher debe ver cómo se compara cada estudiante con el promedio de la clase.
Endpoint necesario: GET /teacher/students/:studentId/insights
Página Teacher afectada: TeacherStudentsPage.tsx
REQ-STAT-003: Métricas de Engagement
Origen Student: EngagementMetrics entity
| Campo | Descripción | Teacher Visibility |
|---|---|---|
daily_active_time |
Tiempo activo diario | ⚠️ Necesario |
sessions_per_week |
Sesiones por semana | ⚠️ Necesario |
activity_pattern |
Patrón de actividad (días/horas) | ⚠️ Útil |
engagement_score |
Puntuación de engagement | ⚠️ Necesario |
Requerimiento: El Teacher debe ver métricas de engagement para identificar estudiantes desenganchados.
Endpoint necesario: GET /progress/users/:userId/engagement
Página Teacher afectada: TeacherAnalyticsPage.tsx
REQ-STAT-004: Tendencias de Rendimiento
Origen: Calculado desde ProgressSnapshot
| Campo | Descripción | Teacher Visibility |
|---|---|---|
score_trend |
Tendencia de puntuación (subiendo/bajando) | ⚠️ Necesario |
completion_trend |
Tendencia de completación | ⚠️ Necesario |
activity_trend |
Tendencia de actividad | ⚠️ Necesario |
risk_level |
Nivel de riesgo de deserción | ⚠️ CRÍTICO |
Requerimiento: El Teacher debe ver tendencias para identificar estudiantes que están mejorando o empeorando.
Endpoint necesario: GET /teacher/students/:studentId/trends
Página Teacher afectada: TeacherAnalyticsPage.tsx, TeacherAlertsPage.tsx
REQ-STAT-005: Exportación de Datos del Estudiante
Origen: Múltiples fuentes
Requerimiento: El Teacher debe poder exportar un reporte completo de cada estudiante con todas sus estadísticas para reuniones con padres.
Formato de exportación:
- PDF: Reporte visual con gráficos
- Excel: Datos crudos para análisis
Endpoint necesario: POST /teacher/students/:studentId/export
Página Teacher afectada: TeacherReportsPage.tsx
2.6 ALERTAS DE INTERVENCIÓN (4 Requerimientos)
REQ-ALT-001: Alertas por Inactividad
Origen Student: LearningSession con gaps
| Trigger | Descripción | Teacher Alert |
|---|---|---|
3+ días sin actividad |
Estudiante no ha entrado | 🔴 CRÍTICO |
7+ días sin actividad |
Riesgo de abandono | 🔴 CRÍTICO |
0 ejercicios en semana |
Sin progreso semanal | ⚠️ ALTA |
Requerimiento: El sistema debe generar alertas automáticas cuando un estudiante deja de ser activo.
Implementación: Trigger en BD o CRON job que detecte inactividad y cree StudentInterventionAlert
Página Teacher afectada: TeacherAlertsPage.tsx, TeacherDashboardPage.tsx
REQ-ALT-002: Alertas por Bajo Rendimiento
Origen Student: ExerciseSubmission con scores bajos
| Trigger | Descripción | Teacher Alert |
|---|---|---|
score < 50% promedio |
Rendimiento bajo general | 🔴 CRÍTICO |
3+ ejercicios fallidos seguidos |
Frustración detectada | 🔴 CRÍTICO |
declining_trend |
Tendencia negativa | ⚠️ ALTA |
Requerimiento: El sistema debe alertar cuando un estudiante muestra bajo rendimiento consistente.
Implementación: Trigger después de cada submission que evalúe patrón
Página Teacher afectada: TeacherAlertsPage.tsx
REQ-ALT-003: Alertas por Misiones Expiradas
Origen Student: Mission con status='expired'
| Trigger | Descripción | Teacher Alert |
|---|---|---|
daily_missions_missed |
No completó misiones diarias | ⚠️ MEDIA |
weekly_missions_missed |
No completó misiones semanales | ⚠️ ALTA |
scheduled_mission_missed |
No completó misión asignada | 🔴 CRÍTICO |
Requerimiento: El sistema debe notificar cuando estudiantes no completan misiones asignadas.
Implementación: CRON job de verificación de misiones expiradas
Página Teacher afectada: TeacherAlertsPage.tsx
REQ-ALT-004: Alertas por Asignaciones Vencidas
Origen Student: AssignmentStudent con deadline < now y status != 'completed'
| Trigger | Descripción | Teacher Alert |
|---|---|---|
assignment_overdue |
Asignación no entregada | 🔴 CRÍTICO |
assignment_due_soon |
Asignación próxima a vencer | ⚠️ ALTA |
assignment_no_progress |
Asignación sin progreso | ⚠️ ALTA |
Requerimiento: El sistema debe alertar sobre asignaciones no entregadas o próximas a vencer.
Implementación: CRON job de verificación de deadlines
Página Teacher afectada: TeacherAlertsPage.tsx, TeacherAssignmentsPage.tsx
3️⃣ MATRIZ DE DEPENDENCIAS STUDENT → TEACHER
3.1 Flujo de Datos Principal
┌─────────────────────────────────────────────────────────────────────────────┐
│ FLUJO DE DATOS │
└─────────────────────────────────────────────────────────────────────────────┘
STUDENT GENERA BACKEND PROCESA TEACHER CONSUME
──────────────────────────────────────────────────────────────────────────────
1. Completa Ejercicio
└── ExerciseAttempt ──────────► progress_tracking.exercise_attempts
└── ExerciseSubmission ───────► progress_tracking.exercise_submissions
└── Score + Time ─────────────► Actualiza ModuleProgress ──────► Ver progreso
└── Distribuye XP/Coins ────────► Ver stats
└── Verifica Achievements ──────► Ver logros
└── Actualiza Misiones ─────────► Ver misiones
2. Sesión de Aprendizaje
└── LearningSession ──────────► progress_tracking.learning_sessions
└── Duration + Activities ────► Métricas engagement ──────────► Ver analytics
3. Actividad de Gamificación
└── Rank Progress ────────────► gamification_system.user_ranks ──► Ver ranking
└── Achievement Unlock ───────► gamification_system.user_achievements ──► Ver
└── ML Coins Transaction ─────► gamification_system.ml_coins_transactions ──► Ver
4. Misión Completada
└── Mission Progress ─────────► Calcula recompensas
└── Mission Claimed ──────────► Distribuye rewards ────────────► Ver balance
5. Asignación Enviada
└── AssignmentSubmission ─────► Notifica teacher ──────────────► Calificar
3.2 Endpoints Críticos que Teacher Debe Consumir del Student
| # | Endpoint | Módulo Backend | Datos | Prioridad |
|---|---|---|---|---|
| 1 | GET /progress/users/:id/summary |
Progress | Resumen de progreso | 🔴 P0 |
| 2 | GET /progress/users/:id/modules/:moduleId |
Progress | Progreso específico | 🔴 P0 |
| 3 | GET /gamification/users/:id/stats |
Gamification | Stats completas | 🔴 P0 |
| 4 | GET /gamification/users/:id/achievements |
Gamification | Logros | 🟡 P1 |
| 5 | GET /gamification/ranks/users/:id/rank-progress |
Gamification | Rango Maya | 🟡 P1 |
| 6 | GET /gamification/users/:id/ml-coins |
Gamification | Balance ML Coins | 🟡 P1 |
| 7 | GET /progress/submissions/:id |
Progress | Detalle submission | 🔴 P0 |
| 8 | GET /progress/attempts/users/:id/exercises/:exId |
Progress | Intentos | 🟡 P1 |
| 9 | GET /progress/users/:id/pending-activities |
Progress | Pendientes | 🟡 P1 |
| 10 | GET /progress/users/:id/recent-activities |
Progress | Recientes | 🟡 P1 |
| 11 | GET /gamification/missions/users/:id/active |
Gamification | Misiones activas | 🟡 P1 |
| 12 | GET /gamification/leaderboards/classrooms/:id |
Gamification | Leaderboard aula | 🟢 P2 |
4️⃣ RECOMENDACIONES DE IMPLEMENTACIÓN
4.1 Priorización de Requerimientos
P0 - CRÍTICO (Implementar inmediatamente)
| ID | Requerimiento | Impacto |
|---|---|---|
| REQ-ST-001 | Progreso por módulo en tiempo real | Dashboard funcional |
| REQ-ST-002 | Historial de intentos de ejercicios | Calificación correcta |
| REQ-EXE-001 | Respuestas detalladas de ejercicios | Core del Teacher |
| REQ-STAT-001 | Resumen de estadísticas | Visión del estudiante |
| REQ-ALT-001 | Alertas por inactividad | Intervención temprana |
| REQ-ALT-002 | Alertas por bajo rendimiento | Intervención temprana |
P1 - ALTA (Implementar en siguiente sprint)
| ID | Requerimiento | Impacto |
|---|---|---|
| REQ-GAM-001 | Estadísticas de gamificación | Gamification insights |
| REQ-GAM-002 | Progreso de rango Maya | Engagement tracking |
| REQ-GAM-003 | Logros desbloqueados | Reconocimiento |
| REQ-MIS-001 | Misiones activas | Monitoreo engagement |
| REQ-EXE-002 | Estadísticas por tipo de ejercicio | Analytics |
| REQ-STAT-002 | Comparativa estudiante vs clase | Insights |
P2 - MEDIA (Backlog)
| ID | Requerimiento | Impacto |
|---|---|---|
| REQ-ST-006 | Ruta de aprendizaje | Personalización |
| REQ-GAM-005 | Inventario de comodines | Análisis de ayudas |
| REQ-MIS-004 | Misiones programadas | Feature avanzado |
| REQ-STAT-005 | Exportación de datos | Reportes padres |
4.2 Tareas Técnicas Necesarias
Backend
- Verificar endpoints existentes - Confirmar que todos los endpoints listados existen y devuelven los campos correctos
- Agregar campos faltantes - Algunos DTOs pueden necesitar campos adicionales
- Implementar agregaciones - Endpoints de estadísticas del aula
- Crear triggers de alertas - Automatizar detección de problemas
Frontend (Teacher Portal)
- Revisar hooks existentes - Verificar que consumen correctamente los endpoints
- Agregar visualizaciones - Gráficos de tendencias y comparativas
- Implementar drill-down - Del resumen al detalle del estudiante
- Sistema de alertas - Notificaciones en tiempo real
5️⃣ CONCLUSIONES
Hallazgos Principales
-
El Portal de Students genera datos críticos que el Portal de Teacher debe consumir para funcionar correctamente (progreso, gamificación, misiones, estadísticas).
-
Existe infraestructura backend para la mayoría de los datos, pero es necesario verificar que los endpoints expongan todos los campos necesarios.
-
Las alertas de intervención son un área crítica que requiere automatización mediante triggers o CRON jobs.
-
30 requerimientos identificados distribuidos en 6 categorías, con 12 marcados como críticos (P0).
Próximos Pasos Recomendados
- FASE 2 - PLANEACIÓN: Diseñar tareas específicas para cada requerimiento
- VALIDACIÓN: Verificar endpoints existentes vs requeridos
- ORQUESTACIÓN: Delegar implementaciones a agentes especializados
- TESTING: Validar flujo completo Student → Backend → Teacher
Documento generado por: Architecture-Analyst Fecha: 2025-11-29 Versión: 1.0.0 Estado: FASE 1 - ANÁLISIS COMPLETADO