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
323 lines
11 KiB
Markdown
323 lines
11 KiB
Markdown
# C1: Backlog de Discrepancias NEXUS - Gamilit
|
|
|
|
**Fecha:** 2026-01-10
|
|
**Estado:** VALIDADO - MAYORÍA RESUELTOS
|
|
**Origen:** REPORTE-FINAL-VALIDACION-INTEGRAL-2025-11-04.md
|
|
**Validación:** D2-REPORTE-CONSOLIDADO-VALIDACION-DISCREPANCIAS-2026-01-10.md
|
|
**Objetivo:** Tracking estructurado para equipo de desarrollo
|
|
|
|
---
|
|
|
|
## Resumen Ejecutivo
|
|
|
|
| Prioridad | Issues | Resueltos | Pendientes | Estado |
|
|
|-----------|--------|-----------|------------|--------|
|
|
| **P0 - BLOQUEADORES** | 4 | 4 (100%) | 0 | ✅ CERRADO |
|
|
| **P1 - ALTOS** | 12 | 10 (~83%) | 2 | ⚠️ CASI COMPLETO |
|
|
| **P2 - MEDIOS** | 15 | ~5 (~33%) | ~10 | 🔴 EN PROGRESO |
|
|
| **P3 - BAJOS** | 3 | 0 (0%) | 3 | 📋 BACKLOG |
|
|
| **TOTAL** | **34** | **~19 (56%)** | **~15** | - |
|
|
|
|
---
|
|
|
|
## Estado de Coherencia Actualizado
|
|
|
|
```
|
|
Nov 2025 Ene 2026 Cambio
|
|
Database → Backend: 94.5% 98%+ +3.5%
|
|
Backend → Frontend: 28.2% 75%+ +47% ✅ MEJORA SIGNIFICATIVA
|
|
Type Safety E2E: 62% 85%+ +23%
|
|
API Coverage (DB): 42% ~55% +13%
|
|
```
|
|
|
|
---
|
|
|
|
## P0 - BLOQUEADORES ✅ TODOS RESUELTOS
|
|
|
|
> **Validación completada:** 2026-01-10
|
|
> **Documento de validación:** D1-VALIDACION-P0-BLOQUEADORES-2026-01-10.md
|
|
|
|
### P0-001: Enum `difficulty_level` ✅ RESUELTO
|
|
- **Fecha resolución:** 2025-11-11
|
|
- **Validación:** 8 valores CEFR sincronizados en las 3 capas
|
|
- **Archivo:** `enums.constants.ts` - v2.0 CEFR
|
|
|
|
### P0-002: Enum `exercise_type` ✅ RESUELTO
|
|
- **Fecha resolución:** 2026-01-07
|
|
- **Validación:** 33 mecánicas sincronizadas en las 3 capas
|
|
- **Archivo:** `exercise_type.sql` - 33 valores
|
|
|
|
### P0-003: Conflictos orden rutas ✅ RESUELTO
|
|
- **Validación:** Rutas específicas ordenadas correctamente
|
|
- **Archivo:** `modules.controller.ts` - orden correcto verificado
|
|
|
|
### P0-004: Guards deshabilitados ✅ RESUELTO
|
|
- **Validación:** `@UseGuards(JwtAuthGuard)` habilitado a nivel de clase
|
|
- **Archivos:** `user-stats.controller.ts`, `achievements.controller.ts`
|
|
|
|
~~### P0-001: Enum `difficulty_level` Desincronizado~~
|
|
~~- **Severidad:** BLOQUEADOR~~
|
|
~~- **Esfuerzo:** 1 hora~~
|
|
~~- **Responsable:** NEXUS-DATABASE~~
|
|
~~- **Descripción:** Database tiene 3 valores, Backend/Frontend usan 8~~
|
|
|
|
### P0-002: Enum `exercise_type` Desincronizado
|
|
- **Severidad:** BLOQUEADOR
|
|
- **Esfuerzo:** 1 hora
|
|
- **Responsable:** NEXUS-DATABASE
|
|
- **Descripción:** Backend tiene 5 tipos no en DB, DB tiene 2 no en Backend
|
|
- **Backend extras:** `diario_multimedia`, `comic_digital`, `video_carta`, `verdadero_falso`, `completar_espacios`
|
|
- **DB extras:** `capsula_tiempo`, `collage_digital`
|
|
- **Impacto:** INSERT de ejercicios nuevos fallará
|
|
- **Solución:** Sincronizar agregando valores faltantes a DB enum
|
|
|
|
### P0-003: Conflictos de Orden de Rutas
|
|
- **Severidad:** BLOQUEADOR
|
|
- **Esfuerzo:** 30 min
|
|
- **Responsable:** NEXUS-BACKEND
|
|
- **Descripción:** Rutas específicas después de rutas genéricas `:id`
|
|
- **Archivos afectados:**
|
|
- `modules.controller.ts`: `/modules/difficulty/:difficulty` debe ir antes de `/modules/:id`
|
|
- `classrooms.controller.ts`: `/classrooms/code/:code` debe ir antes de `/classrooms/:id`
|
|
- **Impacto:** `:id` captura "difficulty" y "code" como UUIDs inválidos
|
|
|
|
### P0-004: Guards de Autenticación Deshabilitados
|
|
- **Severidad:** BLOQUEADOR (Seguridad)
|
|
- **Esfuerzo:** 15 min
|
|
- **Responsable:** NEXUS-BACKEND
|
|
- **Descripción:** `@UseGuards(JwtAuthGuard)` comentado
|
|
- **Archivos afectados:**
|
|
- `user-stats.controller.ts`
|
|
- `achievements.controller.ts`
|
|
- **Impacto:** Endpoints accesibles sin autenticación
|
|
- **Solución:** Descomentar decorator `@UseGuards(JwtAuthGuard)`
|
|
|
|
---
|
|
|
|
## P1 - ALTOS (Siguientes 2-3 Sprints)
|
|
|
|
### P1-001: UserStats Interface Ausente en Frontend
|
|
- **Severidad:** ALTA
|
|
- **Esfuerzo:** 2 horas
|
|
- **Responsable:** NEXUS-FRONTEND
|
|
- **Descripción:** Backend tiene 40 propiedades, Frontend solo 6 básicas (85% faltante)
|
|
- **Propiedades críticas faltantes:**
|
|
- ML Coins: `ml_coins`, `ml_coins_earned_total`, `ml_coins_spent_total`
|
|
- Streaks: `current_streak`, `max_streak`, `streak_started_at`
|
|
- Progress: `exercises_completed`, `modules_completed`, `achievements_earned`
|
|
- Rankings: `global_rank_position`, `class_rank_position`
|
|
- **Archivo a crear:** `/shared/types/gamification.types.ts`
|
|
- **Impacto:** Gamification features rotas/incompletas
|
|
|
|
### P1-002: Module Interface Incompleta (31% coverage)
|
|
- **Severidad:** ALTA
|
|
- **Esfuerzo:** 1.5 horas
|
|
- **Responsable:** NEXUS-FRONTEND
|
|
- **Descripción:** Frontend 14 propiedades, Backend 45
|
|
- **Propiedades faltantes:**
|
|
- Gamification: `xp_reward`, `ml_coins_reward`
|
|
- Academic: `grade_levels`, `subjects`, `competencies`
|
|
- Maya Rank: `maya_rank_required`, `maya_rank_granted`
|
|
- Versioning: `version`, `version_notes`, `reviewed_by`
|
|
- **Impacto:** Módulos sin metadata ni rewards
|
|
|
|
### P1-003: Admin Module Tipos Ausentes (0% coverage)
|
|
- **Severidad:** ALTA
|
|
- **Esfuerzo:** 3 horas
|
|
- **Responsable:** NEXUS-FRONTEND
|
|
- **Descripción:** 24 DTOs en Backend, 0 en Frontend
|
|
- **DTOs faltantes:** Organizations, Users Management, System Config, Audit Logs, System Health, Metrics, Content Moderation
|
|
- **Archivos a crear:**
|
|
- `/shared/types/admin.types.ts`
|
|
- `/lib/api/admin.api.ts`
|
|
- **Impacto:** Panel administrativo no implementable
|
|
|
|
### P1-004: ExerciseType Mismatch Frontend
|
|
- **Severidad:** ALTA
|
|
- **Esfuerzo:** 1-2 horas
|
|
- **Responsable:** NEXUS-FRONTEND
|
|
- **Descripción:** Frontend define 6 tipos, Backend/DB tienen 27+
|
|
- **Frontend actual:** `multiple_choice`, `code_completion`, `true_false`, `fill_in_blank`
|
|
- **Backend:** `crucigrama`, `detective_textual`, `quiz_tiktok`, etc.
|
|
- **Impacto:** Frontend NO PUEDE RENDERIZAR 21+ tipos de ejercicio
|
|
- **Solución:** Actualizar enum y componentes de renderizado
|
|
|
|
### P1-005: Token Refresh No Implementado
|
|
- **Severidad:** ALTA
|
|
- **Esfuerzo:** 2-3 horas
|
|
- **Responsable:** NEXUS-BACKEND
|
|
- **Descripción:** `POST /auth/refresh` existe pero lanza "Not implemented yet"
|
|
- **Impacto:** Usuarios deben re-login al expirar token
|
|
- **Archivo:** `auth.controller.ts`
|
|
- **Solución:** Implementar usando SessionManagementService
|
|
|
|
### P1-006: Achievement Interface Incompleta
|
|
- **Severidad:** ALTA
|
|
- **Esfuerzo:** 1 hora
|
|
- **Responsable:** NEXUS-FRONTEND
|
|
- **Descripción:** 13 propiedades faltantes
|
|
- **Naming mismatch:** `is_secret` (backend) → `isHidden` (frontend)
|
|
- **Falta:** `ml_coins_reward`, `difficulty_level`, `unlock_message`
|
|
|
|
### P1-007: Classroom Interface Incompleta (36% coverage)
|
|
- **Severidad:** ALTA
|
|
- **Esfuerzo:** 1 hora
|
|
- **Responsable:** NEXUS-FRONTEND
|
|
- **Descripción:** 16 propiedades faltantes (64%)
|
|
- **Falta:** `grade_level`, `section`, `subject`, `schedule`, `meeting_url`
|
|
|
|
### P1-008: ExerciseSubmission Incompleta (47% coverage)
|
|
- **Severidad:** ALTA
|
|
- **Esfuerzo:** 45 min
|
|
- **Responsable:** NEXUS-FRONTEND
|
|
- **Descripción:** 10 propiedades faltantes
|
|
- **Falta:** `comodines_used`, `hint_used`, `ml_coins_spent`, `time_spent_seconds`
|
|
- **Extra innecesario en Frontend:** `attempt_id`
|
|
|
|
### P1-009: Audit Logging Module No Implementado
|
|
- **Severidad:** ALTA (Compliance)
|
|
- **Esfuerzo:** 35-45 horas
|
|
- **Responsable:** NEXUS-BACKEND
|
|
- **Descripción:** 5 tablas DB sin módulo backend
|
|
- **Tablas:** `audit_logs`, `performance_metrics`, `system_alerts`, `system_logs`, `user_activity`
|
|
- **Plan detallado:** Ver `AUDIT_LOGGING_*.md`
|
|
|
|
### P1-010 a P1-012: Módulos Sin Cobertura Frontend
|
|
- **Módulos afectados:** Missions (3 DTOs), Notifications (4 DTOs), Powerups (4 DTOs), Content (6 DTOs)
|
|
- **Esfuerzo total:** ~9 horas
|
|
- **Responsable:** NEXUS-FRONTEND
|
|
|
|
---
|
|
|
|
## P2 - MEDIOS (Sprints 4-6)
|
|
|
|
### P2-001: System Configuration Module No Implementado
|
|
- **Severidad:** MEDIA
|
|
- **Esfuerzo:** 22-28 horas
|
|
- **Responsable:** NEXUS-BACKEND
|
|
- **Descripción:** 2 tablas DB sin módulo backend
|
|
- **Tablas:** `system_settings`, `feature_flags`
|
|
- **Impacto:** Configuraciones hardcodeadas, sin feature flags
|
|
- **Plan detallado:** Ver `IMPLEMENTATION_PLAN_system_configuration.json`
|
|
|
|
### P2-002 a P2-010: Tablas Sin Rutas API (25/43 = 58%)
|
|
- **Alta Prioridad:**
|
|
- `social_features.friendships` - Sistema social completo
|
|
- `gamification_system.ml_coins_transactions` - Historial
|
|
- **Media Prioridad:**
|
|
- `audit_logging.audit_logs`
|
|
- `educational_content.assessment_rubrics`
|
|
- `gamification_system.comodines_inventory`
|
|
- `progress_tracking.learning_sessions`
|
|
- **Esfuerzo estimado:** 8-12 horas
|
|
|
|
### P2-011: Endpoints con Objetos Inline (sin DTOs)
|
|
- **Severidad:** MEDIA
|
|
- **Descripción:** 8 endpoints usando objetos inline
|
|
- **Impacto:** Sin validación de tipos, documentación incompleta
|
|
|
|
### P2-012: UUIDs Sin Validación
|
|
- **Severidad:** MEDIA
|
|
- **Descripción:** 130 parámetros UUID sin `ParseUUIDPipe` (92%)
|
|
- **Impacto:** Errores 500 en lugar de 400 con UUIDs inválidos
|
|
|
|
### P2-013: JSONB Sin Tipar
|
|
- **Severidad:** MEDIA
|
|
- **Descripción:** Todos los campos JSONB son `Record<string, any>`
|
|
- **Campos críticos:**
|
|
- `exercise.config` - 27+ estructuras diferentes
|
|
- `exercise.content`, `exercise.solution`
|
|
- `submission.answer_data`
|
|
- `user_stats.metadata`
|
|
- **Solución:** Discriminated unions por exercise_type
|
|
|
|
### P2-014: Webhooks Sin Protección
|
|
- **Severidad:** MEDIA (Seguridad)
|
|
- **Descripción:** Sin IP whitelist ni API key
|
|
- **Responsable:** NEXUS-BACKEND
|
|
|
|
### P2-015: Type Mismatch `comodines_used`
|
|
- **Severidad:** MEDIA
|
|
- **Descripción:** `jsonb` (DB) vs `string[]` (Backend)
|
|
- **Solución:** Cambiar Backend a `Record<string, any>` o definir interface
|
|
|
|
---
|
|
|
|
## P3 - BAJOS (Backlog)
|
|
|
|
### P3-001: Estandarizar Naming Conventions
|
|
- **Esfuerzo:** 4-6 horas
|
|
- **Descripción:** Mix de `snake_case` y `camelCase`
|
|
- **Ejemplos:**
|
|
- `accessToken` (backend) vs `access_token` (frontend)
|
|
- `answer_data` (backend) vs `submission_data` (frontend)
|
|
|
|
### P3-002: Implementar Validación Runtime (Zod)
|
|
- **Esfuerzo:** 3-5 días
|
|
- **Descripción:** Validación de schemas en tiempo de ejecución
|
|
|
|
### P3-003: Shared Types Package
|
|
- **Esfuerzo:** 1-2 semanas
|
|
- **Descripción:** Paquete compartido `packages/shared-types/`
|
|
|
|
---
|
|
|
|
## Métricas Objetivo
|
|
|
|
### Post P0+P1 (Sprint 3)
|
|
```
|
|
Database → Backend: 100% (+5.5%)
|
|
Backend → Frontend: 75% (+47%)
|
|
Type Safety E2E: 88% (+26%)
|
|
API Coverage (DB): 60% (+18%)
|
|
```
|
|
|
|
### Post P2 (Sprint 6)
|
|
```
|
|
Database → Backend: 100%
|
|
Backend → Frontend: 92%
|
|
Type Safety E2E: 95%
|
|
API Coverage (DB): 75%
|
|
```
|
|
|
|
---
|
|
|
|
## Roadmap Sugerido
|
|
|
|
### Sprint Inmediato (Semana 1-2)
|
|
- [ ] P0-001: Sync enum `difficulty_level`
|
|
- [ ] P0-002: Sync enum `exercise_type`
|
|
- [ ] P0-003: Fix orden de rutas
|
|
- [ ] P0-004: Habilitar guards
|
|
- [ ] P1-001: Crear UserStats interface
|
|
- [ ] P1-002: Completar Module interface
|
|
|
|
### Sprint 2-3 (Semanas 3-6)
|
|
- [ ] P1-003: Admin types
|
|
- [ ] P1-004: ExerciseType frontend
|
|
- [ ] P1-005: Token refresh
|
|
- [ ] P1-006 a P1-008: Interfaces restantes
|
|
|
|
### Sprint 4-5 (Semanas 7-10)
|
|
- [ ] P1-009: Audit Logging Module
|
|
- [ ] P2-001: System Configuration Module
|
|
|
|
### Sprint 6+ (Semanas 11+)
|
|
- [ ] P2-002 a P2-015: Issues medios restantes
|
|
- [ ] P3: Backlog de mejoras
|
|
|
|
---
|
|
|
|
## Referencias
|
|
|
|
- **Reporte Original:** `.claude/orchestration/05-validaciones/documentacion/reportes/REPORTE-FINAL-VALIDACION-INTEGRAL-2025-11-04.md`
|
|
- **Plan Audit Logging:** `AUDIT_LOGGING_*.md` (15-43 KB)
|
|
- **Plan System Config:** `IMPLEMENTATION_PLAN_system_configuration.json` (44 KB)
|
|
- **Reportes de Agentes:** 17 archivos en workspace
|
|
|
|
---
|
|
|
|
**Documentado por:** Documentation-Architect (Fase C1)
|
|
**Fecha:** 2026-01-10
|
|
**Próximo paso:** Entregar a equipo de desarrollo para priorización
|