workspace/projects/gamilit/orchestration/reportes/HISTORIAL-CAMBIOS-DATABASE-2025-12.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

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_name separadamente (no se computaba automáticamente)

Solución implementada:

  1. Creado trigger trg_ensure_profile_name (BEFORE INSERT)
  2. Creado trigger trg_ensure_profile_name_update (BEFORE UPDATE)
  3. Creada función auth_management.ensure_profile_name()
  4. Trigger computa full_name automáticamente como first_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_name directamente sin fallbacks complejos

Ejercicios Módulo 4

Cambios realizados:

  • Agregados 4 nuevos valores a ENUM exercise_type:
    • chat_literario
    • email_formal
    • ensayo_argumentativo
    • resena_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:

  1. update_leaderboard_streaks.sql - Referencias a columnas corregidas:

    • last_activity_datelast_activity_at
    • longest_streakmax_streak
  2. 00-prerequisites.sql - ENUM achievement_category:

    • Agregados valores collection y hidden
  3. calculate_user_rank.sql - Referencias corregidas:

    • missions_completedmodules_completed
    • namerank_name

Documentación generada:

  • COHERENCE-ANALYSIS-BD-BACKEND-FRONTEND-2025-12-15.md
  • FASE-2-CONSOLIDADO-HALLAZGOS.md (26 discrepancias)
  • FASE-3-PLAN-CORRECCIONES.md

2025-11-29

Correcciones de Seeds

user_achievements:

  • UUIDs de achievement_id corregidos (patrón incorrecto)
  • UUIDs de user_id mapeados 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.