workspace-v1/orchestration/analisis/C1-BACKLOG-DISCREPANCIAS-NEXUS-2026-01-10.md
rckrdmrd e56e927a4d [MAINT-001] docs(orchestration): Actualizacion directivas SIMCO, perfiles y documentacion
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
2026-01-10 04:51:28 -06:00

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