Cambios incluidos: - INDICE-DIRECTIVAS-WORKSPACE.yml actualizado - Perfiles de agentes: PERFIL-ML.md, PERFIL-SECURITY.md - Directivas SIMCO actualizadas: - SIMCO-ASIGNACION-PERFILES.md - SIMCO-CCA-SUBAGENTE.md - SIMCO-CONTEXT-ENGINEERING.md - SIMCO-CONTEXT-RESOLUTION.md - SIMCO-DELEGACION-PARALELA.md - Inventarios actualizados: DEVENV-MASTER, DEVENV-PORTS - Documentos de analisis agregados: - Analisis y planes de fix student portal - Analisis scripts BD - Analisis achievements, duplicados, gamification - Auditoria documentacion gamilit - Backlog discrepancias NEXUS - Planes maestros de resolucion - Reportes de ejecucion agregados - Knowledge base gamilit README actualizado - Referencia submodulo gamilit actualizada (commit beb94f7) Validaciones: - Plan validado contra directivas SIMCO-GIT - Dependencias verificadas - Build gamilit: EXITOSO
332 lines
10 KiB
Markdown
332 lines
10 KiB
Markdown
# ANÁLISIS PRE-EJECUCIÓN: FIX-STUDENT-PORTAL-001 - Corrección Portal Estudiantes
|
|
|
|
**Agente:** Orquestador (Tech Lead)
|
|
**Tipo de tarea:** Corrección | Validación
|
|
**Prioridad:** P1
|
|
**Fecha análisis:** 2026-01-10
|
|
**Relacionado con:** [REQ-STUDENT-PORTAL], [DB-GAMIFICATION], [BE-GAMIFICATION], [FE-STUDENT]
|
|
|
|
---
|
|
|
|
## CONTEXTO DE LA TAREA
|
|
|
|
### Solicitud Original
|
|
Corregir 3 páginas problemáticas del portal de estudiantes en el proyecto GAMILIT:
|
|
1. **Leaderboard:** Muestra usuarios genéricos en lugar de usuarios reales
|
|
2. **Achievements:** No encuentra datos asociados al usuario
|
|
3. **ModuleDetail:** Error al cargar datos de ejercicios
|
|
|
|
Además, realizar validación integral de:
|
|
- Mecánicas de gamificación
|
|
- Integraciones con portales admin/teacher
|
|
- Seeds correctos
|
|
- Duplicidad de funcionalidades
|
|
- Dependencias de objetos en BD, backend y frontend
|
|
|
|
### Objetivo Final
|
|
- Todas las páginas del portal de estudiantes funcionando correctamente
|
|
- Datos reales de usuarios mostrados en leaderboard
|
|
- Achievements visibles (disponibles/desbloqueados)
|
|
- Ejercicios de módulos cargando correctamente
|
|
- Validación de integridad de datos y dependencias
|
|
|
|
### Módulo Relacionado
|
|
**Módulo MVP:** Portal de Estudiantes (Gamificación)
|
|
**Sección en MVP-APP.md:** Módulo de Gamificación - Student Portal
|
|
|
|
### Justificación
|
|
Las páginas del portal de estudiantes son core para la experiencia de usuario. Los problemas identificados afectan:
|
|
- La motivación del estudiante (no ve su progreso real)
|
|
- La funcionalidad educativa (no puede ver ejercicios)
|
|
- La experiencia de gamificación (no ve logros)
|
|
|
|
---
|
|
|
|
## INVENTARIO ACTUAL
|
|
|
|
### Consultas Realizadas
|
|
|
|
**Inventarios revisados:**
|
|
- [x] Estructura del proyecto gamilit
|
|
- [x] Seeds de gamification_system
|
|
- [x] Seeds de educational_content
|
|
- [x] Configuración de API frontend
|
|
- [x] Scripts de create-database.sh
|
|
|
|
**Comandos ejecutados:**
|
|
```bash
|
|
# Búsqueda de archivos relacionados
|
|
find apps/frontend/src/apps/student -name "*.tsx" | wc -l
|
|
# Resultado: 15+ páginas en portal student
|
|
|
|
grep -rn "VITE_USE_MOCK_DATA" apps/frontend/
|
|
# Resultado: Solo definido en api.config.ts, no en .env
|
|
|
|
ls apps/database/seeds/prod/gamification_system/
|
|
# Resultado: 14 archivos de seeds
|
|
```
|
|
|
|
### Objetos Existentes Relacionados
|
|
|
|
**Base de Datos:**
|
|
|
|
| Objeto | Estado | Ubicación |
|
|
|--------|--------|-----------|
|
|
| Schema: gamification_system | ✅ Existe | ddl/schemas/gamification_system/ |
|
|
| Tabla: user_stats | ✅ Existe | Seeds actualizados |
|
|
| Tabla: achievements | ✅ Existe | 20 achievements demo |
|
|
| Tabla: user_achievements | ✅ Existe | Solo usuarios demo tienen datos |
|
|
| Schema: educational_content | ✅ Existe | ddl/schemas/educational_content/ |
|
|
| Tabla: modules | ✅ Existe | 5 módulos definidos |
|
|
| Tabla: exercises | ✅ Existe | Ejercicios por módulo |
|
|
| Tabla: classroom_students | ⚠️ Verificar | Relación usuario-aula |
|
|
|
|
**Backend:**
|
|
|
|
| Objeto | Estado | Ubicación |
|
|
|--------|--------|-----------|
|
|
| Module: gamification | ✅ Existe | modules/gamification/ |
|
|
| Service: leaderboard.service | ✅ Correcto | getGlobalLeaderboard() implementado |
|
|
| Service: achievements.service | ✅ Correcto | getAllUserAchievements() implementado |
|
|
| Controller: leaderboard.controller | ✅ Correcto | Endpoints definidos |
|
|
| Controller: achievements.controller | ✅ Correcto | Endpoints definidos |
|
|
| Module: educational | ✅ Existe | modules/educational/ |
|
|
| Controller: modules.controller | ✅ Correcto | findByModule() implementado |
|
|
|
|
**Frontend:**
|
|
|
|
| Objeto | Estado | Ubicación |
|
|
|--------|--------|-----------|
|
|
| Página: LeaderboardPage | ✅ Existe | apps/student/pages/ |
|
|
| Página: GamificationPage | ✅ Existe | apps/student/pages/ |
|
|
| Página: ModuleDetailPage | ✅ Existe | apps/student/pages/ |
|
|
| Store: leaderboardsStore | ✅ Existe | features/gamification/social/store/ |
|
|
| Store: achievementsStore | ✅ Existe | features/gamification/social/store/ |
|
|
| Hook: useModuleDetail | ✅ Existe | shared/hooks/useModules.ts |
|
|
| API: socialAPI | ⚠️ Revisar | Retorna [] cuando mock activo |
|
|
|
|
### Objetos a Crear/Modificar
|
|
|
|
**No se requiere crear nuevos objetos.**
|
|
|
|
**Objetos a verificar/corregir:**
|
|
- [ ] Variable VITE_USE_MOCK_DATA (verificar no esté activa)
|
|
- [ ] Relación classroom_students para usuario student@
|
|
- [ ] Seeds de assignments para ejercicios
|
|
|
|
---
|
|
|
|
## ANÁLISIS DE RIESGOS
|
|
|
|
### Riesgo de Duplicación
|
|
|
|
**Verificación:**
|
|
- [x] NO existe schema similar
|
|
- [x] NO existe tabla similar
|
|
- [x] NO existe módulo/entity similar
|
|
- [x] NO existe componente similar
|
|
|
|
**Decisión:**
|
|
- [x] No crear nuevos objetos - solo verificar/corregir existentes
|
|
|
|
### Otros Riesgos Identificados
|
|
|
|
| Riesgo | Probabilidad | Impacto | Mitigación |
|
|
|--------|-------------|---------|------------|
|
|
| Seeds no ejecutados | Media | Alto | Ejecutar drop-and-recreate-database.sh |
|
|
| Backend no corriendo | Baja | Alto | Verificar proceso antes de pruebas |
|
|
| Relaciones faltantes | Media | Alto | Agregar datos de relación en seeds |
|
|
| Token JWT inválido | Baja | Medio | Verificar autenticación |
|
|
|
|
---
|
|
|
|
## ANÁLISIS DE IMPACTO
|
|
|
|
### Archivos Afectados
|
|
|
|
**A verificar (no modificar código):**
|
|
- `apps/frontend/src/features/gamification/social/api/socialAPI.ts` - Líneas 390-392
|
|
- `apps/frontend/.env` y `.env.local` - Variable VITE_USE_MOCK_DATA
|
|
- `apps/database/seeds/prod/gamification_system/05-user_stats.sql`
|
|
- `apps/database/seeds/prod/educational_content/05-assignments.sql`
|
|
|
|
**A ejecutar:**
|
|
- `apps/database/drop-and-recreate-database.sh` - Recrear BD limpia
|
|
|
|
**Total archivos:**
|
|
- Verificar: 4
|
|
- Ejecutar: 1 script
|
|
|
|
### Dependencias
|
|
|
|
**Esta tarea depende de:**
|
|
- [DB-SEEDS]: Seeds de gamification_system → Estado: ✅ Existentes
|
|
- [DB-SEEDS]: Seeds de educational_content → Estado: ✅ Existentes
|
|
- [DB-DDL]: Estructura de tablas → Estado: ✅ Completa
|
|
|
|
**Bloqueadores actuales:**
|
|
- Ninguno identificado (código está correcto)
|
|
|
|
**Esta tarea bloquea:**
|
|
- Validación integral del portal de estudiantes
|
|
|
|
### Módulos Afectados
|
|
|
|
**Impacto directo:**
|
|
- Módulo: Gamification (leaderboard, achievements)
|
|
- Módulo: Educational (modules, exercises)
|
|
- Stack: Database, Backend, Frontend
|
|
|
|
**Impacto indirecto:**
|
|
- Portal Admin (visualización de estadísticas)
|
|
- Portal Teacher (asignación de ejercicios)
|
|
|
|
---
|
|
|
|
## DECISIÓN DE APPROACH
|
|
|
|
### Approach Seleccionado
|
|
|
|
**Verificación y recreación de ambiente**, no modificación de código.
|
|
|
|
El análisis reveló que:
|
|
1. El código está correctamente implementado
|
|
2. Los problemas son de datos/ambiente, no de código
|
|
3. Se requiere verificar que seeds estén ejecutados y relaciones correctas
|
|
|
|
**Razones:**
|
|
1. El código de frontend, backend y BD está correcto
|
|
2. Los endpoints devuelven datos cuando la BD tiene información
|
|
3. La variable VITE_USE_MOCK_DATA no está activa en .env
|
|
|
|
### Alternativas Consideradas
|
|
|
|
**Alternativa 1:** Modificar código para hardcodear datos
|
|
- **Pros:** Solución rápida para demo
|
|
- **Contras:** No resuelve problema real, crea deuda técnica
|
|
- **Razón de descarte:** Viola principio de datos reales
|
|
|
|
**Alternativa 2:** Crear nuevos seeds específicos para usuarios testing
|
|
- **Pros:** Datos específicos para pruebas
|
|
- **Contras:** Duplicación de información
|
|
- **Razón de descarte:** Seeds ya existen, solo falta ejecutarlos
|
|
|
|
---
|
|
|
|
## NECESIDAD DE SUBAGENTES
|
|
|
|
### Análisis de Complejidad
|
|
|
|
**Criterios:**
|
|
- Número de pasos: 5 → Media (3-5)
|
|
- Módulos afectados: 3 → Media (2-3)
|
|
- Archivos a crear: 0 → Simple (<5)
|
|
- Coordinación entre capas: Sí (BD + verificación)
|
|
|
|
**Decisión:**
|
|
- [x] **SÍ usar subagentes** - Para análisis paralelo de dependencias
|
|
|
|
### Plan de Subagentes
|
|
|
|
**Subagente 1: Database-Validator**
|
|
- **Tarea:** Verificar integridad de datos en BD
|
|
- **Artefactos:** Reporte de validación SQL
|
|
|
|
**Subagente 2: Integration-Validator**
|
|
- **Tarea:** Verificar dependencias entre objetos
|
|
- **Artefactos:** Mapa de dependencias
|
|
|
|
---
|
|
|
|
## ESTIMACIÓN PRELIMINAR
|
|
|
|
### Tiempo Estimado por Fase
|
|
|
|
| Fase | Duración Estimada | Notas |
|
|
|------|-------------------|-------|
|
|
| Análisis | 30 min | Este documento - COMPLETADO |
|
|
| Planificación | 20 min | Crear plan detallado |
|
|
| Ejecución | 45 min | Recrear BD + verificar |
|
|
| Validación | 30 min | Probar endpoints + UI |
|
|
| Documentación | 15 min | Actualizar inventarios |
|
|
| **TOTAL** | **~2.5 horas** | |
|
|
|
|
### Recursos Necesarios
|
|
|
|
**Agentes:**
|
|
- Agente principal: Orquestador
|
|
- Subagentes: Database-Validator, Integration-Validator
|
|
|
|
**Herramientas:**
|
|
- PostgreSQL CLI (psql)
|
|
- curl (verificar endpoints)
|
|
- Browser DevTools (verificar UI)
|
|
|
|
**Información adicional requerida:**
|
|
- Credenciales de BD (DATABASE_URL)
|
|
- Token JWT válido para pruebas
|
|
|
|
---
|
|
|
|
## REFERENCIAS CONSULTADAS
|
|
|
|
### Documentación del Proyecto
|
|
- [x] CONTRIBUTING.md (Estándares de código)
|
|
- [x] apps/backend/migrations/README.md (Política de carga limpia)
|
|
- [x] orchestration/templates/TEMPLATE-ANALISIS.md
|
|
|
|
### Código Existente
|
|
**Archivos de referencia:**
|
|
- `apps/database/create-database.sh` - Script maestro de creación
|
|
- `apps/database/drop-and-recreate-database.sh` - Script de recreación
|
|
- `apps/database/seeds/prod/gamification_system/*.sql` - Seeds de gamificación
|
|
|
|
### Inventarios y Trazas
|
|
- [x] Estructura de proyecto gamilit
|
|
- [x] Scripts de base de datos
|
|
|
|
---
|
|
|
|
## CONCLUSIÓN DEL ANÁLISIS
|
|
|
|
### Resumen
|
|
El análisis exhaustivo revela que **el código está correctamente implementado** en las 3 capas (BD, Backend, Frontend). Los problemas reportados se deben a:
|
|
|
|
1. **Leaderboard:** Backend no retorna datos porque user_stats puede estar vacío o backend no corriendo
|
|
2. **Achievements:** Comportamiento intencional - usuarios testing no tienen achievements por diseño
|
|
3. **ModuleDetail:** Posible falta de relación classroom-student-assignment
|
|
|
|
### Decisiones Clave
|
|
1. **Approach:** Verificar y recrear ambiente, no modificar código
|
|
2. **Subagentes:** Usar para validación paralela
|
|
3. **Objetos a crear:** Ninguno nuevo
|
|
4. **Duración estimada:** ~2.5 horas
|
|
|
|
### Recomendaciones
|
|
1. Ejecutar `drop-and-recreate-database.sh` para tener BD limpia con seeds
|
|
2. Verificar que backend está corriendo en puerto 3006
|
|
3. Verificar relación student@gamilit.com → classroom → assignments
|
|
4. Considerar mejora UX para achievements (mostrar todos como locked)
|
|
|
|
### Aprobación para Proceder
|
|
- [x] Análisis completo y documentado
|
|
- [x] Sin bloqueadores identificados
|
|
- [x] Recursos disponibles
|
|
- [x] Estimaciones validadas
|
|
- [x] **APROBADO PARA PLANIFICACIÓN**
|
|
|
|
---
|
|
|
|
## PRÓXIMO PASO
|
|
|
|
**Acción:** Crear documento de planificación (02-PLAN.md)
|
|
|
|
**Template:** TEMPLATE-PLAN.md
|
|
|
|
---
|
|
|
|
**Analizado por:** Orquestador (Tech Lead)
|
|
**Fecha:** 2026-01-10
|
|
**Versión:** 1.0
|
|
**Estado:** Aprobado
|