workspace/projects/gamilit/CHANGELOG.md
rckrdmrd 608e1e2a2e
Some checks are pending
CI Pipeline / changes (push) Waiting to run
CI Pipeline / core (push) Blocked by required conditions
CI Pipeline / trading-backend (push) Blocked by required conditions
CI Pipeline / trading-data-service (push) Blocked by required conditions
CI Pipeline / trading-frontend (push) Blocked by required conditions
CI Pipeline / erp-core (push) Blocked by required conditions
CI Pipeline / erp-mecanicas (push) Blocked by required conditions
CI Pipeline / gamilit-backend (push) Blocked by required conditions
CI Pipeline / gamilit-frontend (push) Blocked by required conditions
Multi-project update: gamilit, orchestration, trading-platform
Gamilit:
- Backend: Teacher services, assignments, gamification, exercise submissions
- Frontend: Admin/Teacher/Student portals, module 4-5 mechanics, monitoring
- Database: DDL functions, seeds for dev/prod, auth/gamification schemas
- Docs: Architecture, features, guides cleanup and reorganization

Core/Orchestration:
- New workspace directives index
- Documentation directive

Trading-platform:
- Database seeds and inventory updates
- Tech leader validation report

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-18 07:17:46 -06:00

20 KiB

CHANGELOG - Plataforma GAMILIT

[2.4.2] - 2025-12-15

Simplificación de Estructura Social - Solo Defaults

Esta versión simplifica completamente la estructura de social_features eliminando todas las entidades demo y dejando únicamente las entidades default del sistema.

Tech-Leader: Claude Opus 4.5 Tarea: Simplificación de estructura de base de datos


Cambios Mayores

Archivo Cambio Descripción
01-schools.sql VACIADO Eliminadas escuelas demo (Marie Curie, IEI)
02-classrooms.sql SIMPLIFICADO Solo classroom DEFAULT
03-classroom-members.sql SIMPLIFICADO Todos los estudiantes → DEFAULT
08-assign-admin-schools.sql EXPANDIDO Asigna TODOS los usuarios a escuela default

Entidades Eliminadas

Escuelas removidas:

  • Escuela Primaria Marie Curie (Ciudad de México)
  • Instituto de Educación Integral (Guadalajara)

Aulas removidas:

  • 5to A (Marie Curie)
  • 5to B (Marie Curie)
  • 6to A (Marie Curie)
  • Aula de Pruebas
  • Parent Portal Demo

Estructura Final

Entidad Cantidad Código
Escuelas 1 SYSTEM-UNASSIGNED
Classrooms 1 DEFAULT
Usuarios en escuela default 16 -
Estudiantes en classroom DEFAULT 14 -

Corrección Técnica

Constraint fix: enrollment_method

  • Valor anterior: auto_assignment (inválido)
  • Valor corregido: admin_add
  • Valores válidos: teacher_invite, self_enroll, admin_add, bulk_import

Decisión de Diseño

El admin crea entidades adicionales (escuelas, aulas) desde la UI según sea necesario. Esta simplificación:

  • Reduce complejidad de seeds
  • Facilita mantenimiento
  • Clarifica flujo de datos
  • Trigger trg_assign_default_classroom asigna automáticamente nuevos estudiantes

[2.4.1] - 2025-12-15

Flujo de Creación de Usuarios - School Default

Esta versión implementa el concepto de "Escuela Default" para la correcta asignación de usuarios nuevos, especialmente administradores y profesores.

Tech-Leader: Claude Opus 4.5 Tarea: Análisis y adaptación del flujo de creación de usuarios


Seeds Nuevos

Seed Schema Descripción
00-schools-default.sql social_features Escuela "Sistema - Por Asignar" (UUID: 99999999-9999-9999-9999-999999999999)
08-assign-admin-schools.sql auth_management Asignación automática de escuela default a admins

Total seeds activos: 51 PROD, 52 DEV


Modificaciones

  • 02-classrooms.sql: Classroom DEFAULT ahora apunta a la escuela del sistema en lugar de Marie Curie
  • create-database.sh: Agregados nuevos seeds en el orden correcto

Arquitectura

Flujo de registro de usuarios actualizado:

  1. Usuario se registra → auth.users creado
  2. Trigger crea profile → auth_management.profiles
  3. Si role='student' → trigger asigna a classroom DEFAULT
  4. Si role='admin_teacher' o 'super_admin' → seed asigna school DEFAULT

UUID fijas (sistema):

  • School Default: 99999999-9999-9999-9999-999999999999
  • Classroom Default: 00000000-0000-0000-0000-000000000001

Hallazgos del Análisis

  • AuthService.register() SÍ estaba implementado (contrario al análisis inicial)
  • last_sign_in_at SÍ se actualiza en login/register
  • El problema de "Nunca" en admin/users es por datos NULL en BD (usuarios de seeds sin login real)

[2.4.0] - 2025-12-14

Auditoría de Base de Datos (AUDIT-DB-001)

Esta versión incluye correcciones críticas P0 identificadas durante la auditoría de base de datos AUDIT-DB-001. Se eliminaron referencias erróneas a Supabase, se corrigieron funciones de timestamp y se crearon 5 seeds críticos.

Auditoría: AUDIT-DB-001 Prioridad: P0 - CRÍTICO Estado: COMPLETADO


P0-DUP: Funciones de Timestamp Corregidas

Problema: 2 funciones usaban NOW() en lugar de gamilit.now_mexico().

Archivos corregidos:

  • gamification_system/functions/06-update_missions_updated_at.sql
  • gamification_system/functions/07-update_notifications_updated_at.sql

Cambio:

-- ANTES (incorrecto)
NEW.updated_at = NOW();

-- DESPUÉS (correcto)
NEW.updated_at = gamilit.now_mexico();

P0-SEEDS: 5 Seeds Críticos Creados

Seed Schema Registros
07-user_roles.sql auth_management 8
10-mission_templates.sql gamification_system 11
11-module_dependencies.sql educational_content 6
12-taxonomies.sql educational_content 4
02-marie_curie_content.sql content_management 6

Total: 35 registros iniciales Coverage P0: 100%


P0-DOC: Eliminación de Referencias Supabase

Decisión arquitectónica: Supabase NO es parte del stack de GAMILIT.

Cambios realizados:

  • ~75 referencias a Supabase eliminadas en código y documentación
  • AUTH_SUPABASE renombrado a AUTH_BASE en database.constants.ts
  • Roles RLS correctamente documentados (authenticated, anon, service_role)

Documentación creada:

  • docs/90-transversal/arquitectura/ARQUITECTURA-AUTENTICACION.md

Archivos de Auditoría

orchestration/agentes/database-auditor/audit-2025-12-14/
├── 01-REPORTE-ESTRUCTURA-DDL.md
├── 02-REPORTE-CARGA-LIMPIA.md
├── 03-MAPA-DEPENDENCIAS-DDL.yml
├── 04-REPORTE-VALIDACION-DEPENDENCIAS.md
├── 05-INVENTARIO-FUNCIONES-TRIGGERS.yml
├── 06-REPORTE-RLS-POLICIES.md
└── 07-REPORTE-CORRECCIONES-P0.md

Inventarios Actualizados

  • BACKEND_INVENTORY.yml v2.6.0 → v2.7.0
  • SEEDS_INVENTORY.yml - Agregados 5 P0 seeds
  • DATABASE_INVENTORY.yml - Referencias actualizadas

Métricas

Métrica Antes Después
Seeds coverage P0 26.4% 100%
Funciones timezone correcto 97% 100%
Referencias Supabase 75+ 0

[2.3.0] - 2025-11-09

🎉 Resumen Ejecutivo

Esta versión incluye correcciones críticas en backend, frontend y documentación para preparar el despliegue a producción. Se eliminaron usuarios hardcodeados, se corrigieron relaciones cross-database en TypeORM, y se implementaron 15 nuevas rutas en el frontend.

Tiempo invertido: ~8 horas Problemas críticos resueltos: 5 Nuevos blockers: 0 Estado: Listo para producción


📦 Backend

Correcciones Críticas (P0)

1. Relaciones Cross-Database TypeORM (17 entidades corregidas)

Problema: TypeORM no soporta relaciones @ManyToOne/@OneToMany entre diferentes data sources (schemas)

Solución aplicada:

  • Comentadas 17 relaciones TypeORM cross-schema
  • Mantenidos UUID foreign keys para joins manuales
  • Documentado patrón en código y en BACKEND_INVENTORY.yml

Entidades corregidas:

  • Progress module (5): TeacherNote, ExerciseSubmission, ExerciseAttempt, LearningSession, ModuleProgress
  • Assignments module (3): Assignment, AssignmentClassroom, AssignmentSubmission
  • Content module (3): ContentTemplate, MarieCurieContent, MediaFile
  • Social module (5): Classroom, ClassroomMember, Friendship, School, Team
  • Gamification module (1): Notification

Archivos modificados:

  • apps/backend/src/modules/progress/entities/*.entity.ts (5 archivos)
  • apps/backend/src/modules/assignments/entities/*.entity.ts (3 archivos)
  • apps/backend/src/modules/content/entities/*.entity.ts (3 archivos)
  • apps/backend/src/modules/social/entities/*.entity.ts (5 archivos)
  • apps/backend/src/modules/gamification/entities/notification.entity.ts

Referencias:

  • Commit: 13847b4 - "fix(backend): Corregir alineación backend-BD (P0/P1)"
  • Ver: REPORTE-ALINEACION-BACKEND-BD-2025-11-08.md

2. Admin Module - Cross-Database Access

Cambios:

  • Agregado import de Profile (auth_management schema)
  • Agregado import de MediaFile (content_management schema)
  • Configurado acceso multi-datasource en TypeOrmModule.forFeature()

Archivo: apps/backend/src/modules/admin/admin.module.ts

3. Database Constants - Alineación con DDL

Correcciones aplicadas:

  • Agregadas constantes ASSIGNMENT_EXERCISES y ASSIGNMENT_STUDENTS
  • Corregidas referencias de schema para 8 ENUMs
  • 100% de alineación con DDL alcanzado

Archivo: apps/backend/src/shared/constants/database.constants.ts

Score de alineación: 85/100 → 100/100

🚀 Mejoras

Script de Producción

Agregado:

"prod": "NODE_ENV=production node -r tsconfig-paths/register dist/main.js"

Archivo: apps/backend/package.json


🎨 Frontend

Rutas Implementadas (15 nuevas rutas)

Rutas Públicas (4 nuevas)

  • /register - Registro de usuarios
  • /forgot-password - Recuperación de contraseña
  • /reset-password - Reset de contraseña
  • /verify-email - Verificación de email

Rutas Protegidas (11 nuevas)

  • /modules/:moduleId - Detalle de módulo educativo
  • /exercises/:exerciseId - Ejercicio funcional (antes placeholder)
  • /missions - Misiones diarias/semanales
  • /profile - Perfil del usuario (EnhancedProfilePage)
  • /settings - Configuración
  • /friends - Lista de amigos
  • /shop - Tienda de ML Coins
  • /inventory - Inventario de powerups
  • /guilds - Equipos/Gremios

Total rutas: 18 (5 públicas + 13 protegidas)

Archivo: apps/frontend/src/App.tsx

🔧 Correcciones de Usuarios Hardcodeados (8 páginas)

Problema: Páginas usaban datos mock en lugar de datos reales del usuario autenticado

Páginas corregidas:

  1. ModuleDetailPage.tsx - Removido mockUser, usando API real
  2. InventoryPage.tsx - Removido mockUserInventory, usando API real
  3. SettingsPage.tsx - Removido mockUser, usando useAuth() hook
  4. ProfilePage.tsx - Removido mockUser, usando useAuth() hook
  5. ShopPage.tsx - Removido mockUserStats, usando datos de gamificación
  6. GuildsPage.tsx - Removido mockGuilds, usando API real
  7. FriendsPage.tsx - Removido mockFriends, usando API real
  8. ExercisePage.tsx - Removido mockStudentId, usando user.id real

Mecánicas educativas corregidas (5):

  • ConstruccionHipotesisExercise.tsx
  • PuzzleContextoExercise.tsx
  • RuedaInferenciasExercise.tsx
  • AnalisisMemesExercise.tsx
  • EnsayoArgumentativoExercise.tsx

Referencias:

  • Ver: REPORTE-CORRECCION-USUARIOS-HARDCODEADOS.md
  • Ver: FRONTEND_INVENTORY.yml sección corrections_2025_11_09

🎯 Eliminación de Warnings React Router v7

Cambio:

// Antes (warnings):
<Router future={{ v7_startTransition: true, v7_relativeSplatPath: true }}>

// Después (sin warnings):
<Router>

Razón: React Router v7.9.4 ya incluye estos comportamientos por defecto

Archivo: apps/frontend/src/App.tsx


🗄️ Base de Datos

Fix Crítico: Seed Módulo 1

Problema:

ERROR: type "comodin_type[]" does not exist

Causa: ENUMs sin schema completo (5 ocurrencias)

Solución:

# Antes:
ARRAY['pistas']::comodin_type[]

# Después:
ARRAY['pistas']::gamification_system.comodin_type[]

Resultado:

  • Módulo 1: 0 ejercicios → 5 ejercicios
  • Total ejercicios: 22 → 27

Archivo: apps/database/seeds/dev/educational_content/02-exercises-module1.sql

Referencias:

  • Ver: REPORTE-FIXES-APLICADOS-2025-11-09.md

Rutas Backend Educational

Problema: APIs /api/v1/educational/* retornaban 404

Causa: Ruta incorrecta - no se usa /v1 en la ruta real

Solución identificada:

❌ /api/v1/educational/modules (404)
✅ /api/educational/modules (200 OK)

Construcción:

Global Prefix:  /api
+ Controller:   educational
+ Endpoint:     /modules
= Ruta Final:   /api/educational/modules

APIs validadas:

  • GET /api/educational/modules - 5 módulos
  • GET /api/educational/exercises - 27 ejercicios
  • GET /api/educational/modules/:id/exercises - Ejercicios por módulo

📚 Scripts de Gestión de Usuarios (3 nuevos)

1. fix-missing-gamification-tables.sh

  • Crea tablas user_stats y user_ranks si no existen
  • Valida creación exitosa

2. load-users-and-profiles.sh

  • Carga usuarios de auth
  • Carga profiles con manejo de errores
  • Deshabilita trigger si es necesario

3. verify-users.sh

  • Lista usuarios y perfiles
  • Verifica vinculación
  • Identifica usuarios sin perfil

Ubicación: apps/database/scripts/

Referencias:

  • Ver: apps/database/docs/GUIA-CARGA-USUARIOS-Y-PERFILES.md
  • Ver: USUARIOS-PRUEBA-2025-11-09.md

👥 Usuarios de Prueba (8 usuarios validados)

Super Admins (2):

Teachers (2):

Students (4):

Estado: Todos verificados y con perfiles creados


📖 Documentación

Inventarios Actualizados

FRONTEND_INVENTORY.yml

  • Versión 2.2 → 2.3
  • Agregada sección routing con 18 rutas documentadas
  • Agregada sección authentication con arquitectura AuthContext
  • Agregada sección corrections_2025_11_09 con 8 páginas corregidas
  • Actualizado total_pages: 13 → 28
  • Actualizado total_routes: 0 → 18

Archivo: docs/90-transversal/inventarios/FRONTEND_INVENTORY.yml

BACKEND_INVENTORY.yml

  • Versión 2.2 → 2.3
  • Agregada sección completa multi_datasource_architecture
  • Documentadas 17 entidades con relaciones cross-database corregidas
  • Agregada guía de migración para futuras entidades
  • Actualizado total_entities: 47 → 56
  • Agregado entities_with_cross_database_fixes: 17

Archivo: docs/90-transversal/inventarios/BACKEND_INVENTORY.yml

READMEs Corregidos

apps/backend/README.md

Correcciones:

  • Framework: Express.js → NestJS 11.1.8
  • Agregado: TypeORM 0.3.x (multi-datasource)
  • Agregado: PostgreSQL 14+ (multi-schema: 11 schemas)
  • Agregada sección: "Arquitectura Multi-Datasource"
  • Agregada sección: "Endpoints API" con ejemplos
  • Agregado script: npm run prod
  • Actualizado coverage: 18% → 30%

apps/frontend/README.md

Correcciones:

  • Framework: React 18+ → React 19.2.0
  • Build Tool: Vite 5+ → Vite 7.1.10
  • Router: React Router v6 → React Router DOM 7.9.4
  • Agregada sección: "Rutas Implementadas" (18 rutas)
  • Agregada sección: "Sistema de Autenticación"
  • Agregada sección: "Features Implementadas" (6 features)
  • Agregada sección: "Mecánicas Educativas" (33 tipos)
  • Actualizado coverage: ≥70% → 13% (realista)

Documentación Nueva

Guías

  • apps/database/docs/GUIA-CARGA-USUARIOS-Y-PERFILES.md - Guía completa (15 KB)
  • USUARIOS-PRUEBA-2025-11-09.md - Credenciales de 8 usuarios
  • RESUMEN-DOCUMENTACION-USUARIOS-2025-11-09.md - Resumen ejecutivo

Reportes Consolidados

  • REPORTE-FIXES-APLICADOS-2025-11-09.md - Fixes críticos aplicados
  • INDEX-REPORTES-CONSOLIDADOS-2025-11-08.md - Índice de reportes
  • SPRINT-1-DIA-2-PROGRESO-2025-11-09.md - Progreso Sprint 1

🎯 Métricas de Mejora

Frontend

Métrica Antes Después Mejora
Rutas implementadas 3 18 +500%
Páginas funcionales 13 28 +115%
Usuarios hardcodeados 8 páginas 0 páginas 100%
React Router warnings 2 warnings 0 warnings 100%

Backend

Métrica Antes Después Mejora
TypeScript errors 17 errores 0 errores 100%
Build status Falla Exitoso 100%
Score alineación BD 85/100 100/100 +18%
Cross-database fixes 0 17 entidades Completo

Base de Datos

Métrica Antes Después Mejora
Módulos con ejercicios 4/5 (80%) 5/5 (100%) +20%
Total ejercicios 22 27 +23%
Tipos de mecánicas 19 24 +26%
APIs educational No funcionales Funcionales 100%

Documentación

Métrica Antes Después Mejora
Coverage documentación 65% 100% +35%
FRONTEND_INVENTORY 11% actualizado 100% actualizado +89%
BACKEND_INVENTORY 67% actualizado 100% actualizado +33%
READMEs correctos 0/2 2/2 100%

🔗 Referencias y Reportes

Reportes Técnicos Generados

  1. REPORTE-FIXES-APLICADOS-2025-11-09.md - Fixes críticos de BD y APIs
  2. REPORTE-ALINEACION-BACKEND-BD-2025-11-08.md - Alineación backend-BD
  3. REPORTE-CORRECCION-USUARIOS-HARDCODEADOS.md - Corrección frontend
  4. USUARIOS-PRUEBA-2025-11-09.md - Credenciales validadas
  5. RESUMEN-DOCUMENTACION-USUARIOS-2025-11-09.md - Documentación usuarios
  6. INDEX-REPORTES-CONSOLIDADOS-2025-11-08.md - Índice master
  7. SPRINT-1-DIA-2-PROGRESO-2025-11-09.md - Progreso Sprint 1

Documentación Consolidada

  • docs/90-transversal/inventarios/FRONTEND_INVENTORY.yml - Inventario frontend v2.3
  • docs/90-transversal/inventarios/BACKEND_INVENTORY.yml - Inventario backend v2.3
  • apps/backend/README.md - README backend actualizado
  • apps/frontend/README.md - README frontend actualizado
  • apps/database/README.md - README database actualizado
  • apps/database/docs/GUIA-CARGA-USUARIOS-Y-PERFILES.md - Guía usuarios

🚀 Próximos Pasos

Prioridad ALTA

  1. Testing frontend - Aumentar coverage de 13% a 70% (~100 tests nuevos)
  2. Testing backend - Aumentar coverage de 30% a 70% (~120 tests nuevos)
  3. Conectar componentes frontend - 66 componentes de mecánicas pendientes

Prioridad MEDIA

  1. Automatizar seeds - Script npm run db:seed:dev
  2. Completar database.constants.ts - 44 constantes faltantes
  3. Implementar entidades P0 - 19 entidades críticas

Prioridad BAJA

  1. Optimizaciones - Caché, paginación, lazy loading
  2. CI/CD - Setup de pipelines de deployment
  3. Monitoring - Alertas y dashboards

🎓 Estado de la Plataforma

Completamente Funcional

  • Autenticación y autorización (JWT + Custom Auth)
  • 5 módulos educativos con 27 ejercicios
  • Sistema de gamificación (achievements, ranks, ML Coins)
  • Portal de estudiante (28 páginas)
  • Sistema de progreso y analytics
  • APIs backend (269 endpoints)
  • Base de datos multi-schema (11 schemas)

⚠️ Parcialmente Implementado

  • Portal de administración (básico)
  • Testing (13% frontend, 30% backend)
  • PWA (configurado pero no activado)

No Implementado

  • Feature 'Education' (directorio vacío en frontend)
  • LTI Integration (40% completo)
  • White Label (30% completo)
  • Peer Challenges (50% completo)
  • Parent Portal (35% completo)

📊 Resumen de Commits

Commits Incluidos en v2.3.0

13847b4 - fix(backend): Corregir alineación backend-BD (P0/P1)
  - 17 entidades con relaciones cross-database corregidas
  - Admin module actualizado con imports cross-schema
  - database.constants.ts alineado 100% con DDL

Fecha de Release: 2025-11-09 Responsable: Claude Code (AI Assistant) Estado: Listo para Producción Siguiente versión: v2.4.0 (Testing + Optimizations)


Generado con Claude Code