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
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>
3.2 KiB
3.2 KiB
Historial de Cambios - Database
Diciembre 2025
Proyecto: Gamilit Tipo: Documentación de Planeación - Historial de Cambios
2025-12-18
Trigger: Aseguramiento de Nombres en Profiles
Problema identificado:
- 31 usuarios registrados sin
first_name/last_name - UI mostraba "Unknown Student" y valores "NaNh"
- El DTO de registro tiene estos campos como opcionales
- Backend usa
full_nameseparadamente (no se computaba automáticamente)
Solución implementada:
- Creado trigger
trg_ensure_profile_name(BEFORE INSERT) - Creado trigger
trg_ensure_profile_name_update(BEFORE UPDATE) - Creada función
auth_management.ensure_profile_name() - Trigger computa
full_nameautomáticamente comofirst_name + ' ' + last_name
Archivos creados:
apps/database/ddl/schemas/auth_management/triggers/03b-trg_ensure_profile_name.sql
Lógica del trigger:
-- Si first_name está vacío, extraer del email
IF NEW.first_name IS NULL OR TRIM(NEW.first_name) = '' THEN
NEW.first_name := INITCAP(SPLIT_PART(NEW.email, '@', 1));
END IF;
-- Si last_name está vacío, poner valor por defecto
IF NEW.last_name IS NULL OR TRIM(NEW.last_name) = '' THEN
NEW.last_name := 'Usuario';
END IF;
-- Siempre computar full_name como concatenación
NEW.full_name := TRIM(COALESCE(NEW.first_name, '') || ' ' || COALESCE(NEW.last_name, ''));
Validación de coherencia BD-Backend-Frontend:
- Backend: DTOs opcionales, AuthService asigna NULL si no se proporciona
- Trigger DB: Garantiza valores automáticamente
- Frontend: Puede usar
full_namedirectamente sin fallbacks complejos
Ejercicios Módulo 4
Cambios realizados:
- Agregados 4 nuevos valores a ENUM
exercise_type:chat_literarioemail_formalensayo_argumentativoresena_critica
- Agregados 4 ejercicios nuevos en seeds (ejercicios 6-9)
- Total ejercicios M4: 9 (5 originales + 4 nuevos)
2025-12-15
Correcciones de Coherencia BD-Backend-Frontend
Correcciones realizadas:
-
update_leaderboard_streaks.sql- Referencias a columnas corregidas:last_activity_date→last_activity_atlongest_streak→max_streak
-
00-prerequisites.sql- ENUMachievement_category:- Agregados valores
collectionyhidden
- Agregados valores
-
calculate_user_rank.sql- Referencias corregidas:missions_completed→modules_completedname→rank_name
Documentación generada:
COHERENCE-ANALYSIS-BD-BACKEND-FRONTEND-2025-12-15.mdFASE-2-CONSOLIDADO-HALLAZGOS.md(26 discrepancias)FASE-3-PLAN-CORRECCIONES.md
2025-11-29
Correcciones de Seeds
user_achievements:
- UUIDs de
achievement_idcorregidos (patrón incorrecto) - UUIDs de
user_idmapeados a profiles existentes ARRAY[]→ARRAY[]::text[]
Trigger fn_on_achievement_unlocked:
- Corregido cálculo de
balance_before/balance_after
Resultado: 43 user_achievements insertados correctamente
Notas de Validación
Conteos BD Real (2025-12-14)
| Objeto | Cantidad |
|---|---|
| Schemas | 16 |
| Tables | 123 |
| Views | 11 |
| Functions | 213 |
| Triggers | 92 |
| Policies | 185 |
| Foreign Keys | 208 |
Documento de planeación para trazabilidad de cambios.