# 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` - **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` 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