- Configure workspace Git repository with comprehensive .gitignore - Add Odoo as submodule for ERP reference code - Include documentation: SETUP.md, GIT-STRUCTURE.md - Add gitignore templates for projects (backend, frontend, database) - Structure supports independent repos per project/subproject level Workspace includes: - core/ - Reusable patterns, modules, orchestration system - projects/ - Active projects (erp-suite, gamilit, trading-platform, etc.) - knowledge-base/ - Reference code and patterns (includes Odoo submodule) - devtools/ - Development tools and templates - customers/ - Client implementations template 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
18 KiB
Inventario de ENUMs - Base de Datos GAMILIT
Fecha generación: 2025-11-07 Última actualización: 2025-11-07 (Post-validación) Versión: 1.1 Total ENUMs: 35 (✅ 2 duplicados eliminados) Estado: 🚨 REQUIERE CORRECCIÓN URGENTE (31 ENUMs mal ubicados) Método: Análisis de archivos DDL
⚠️ ADVERTENCIA - Estado Actual Problemático
PROBLEMA CRÍTICO: 31 de 35 ENUMs (89%) están incorrectamente ubicados en el schema public.
✅ PROGRESO: 2 ENUMs duplicados eliminados exitosamente (2025-11-07):
→ Eliminado (duplicado depublic.maya_rankgamification_system.maya_rank)→ Eliminado (duplicado legacy)public.rango_maya
Marcadores de problemas en este documento:
- 🚨 [CRÍTICO] - Requiere corrección inmediata
- ⚠️ [MAL-UBICADO] - Objeto en schema incorrecto
- ❌ [DUPLICADO] - Objeto duplicado que debe consolidarse
- ✅ [CORRECTO] - Objeto correctamente ubicado
- 📝 [FALTA-DOC] - Requiere documentación
📊 Resumen Estadístico
Distribución por Schema
| Schema | ENUMs | % | Estado |
|---|---|---|---|
| public | 31 | 89% | 🚨 [MAL-UBICADO] (✅ 2 eliminados) |
| auth | 2 | 6% | ✅ [CORRECTO] |
| gamification_system | 1 | 3% | ✅ [CORRECTO] |
| storage | 1 | 3% | ✅ [CORRECTO] |
Ubicación Correcta vs Actual
Estado Actual (después de eliminar 2 duplicados):
public ███████████████████████████████ 31 (89%) 🚨
auth ██ 2 (6%) ✅
gamification █ 1 (3%) ✅
storage █ 1 (3%) ✅
TOTAL: 35 ENUMs
Estado Esperado (después de correcciones completas):
gamification ████████████ 12 (34%)
educational ████████ 8 (23%)
auth_mgmt ██████ 6 (17%)
content_mgmt ████ 4 (11%)
audit ███ 3 (9%)
auth ██ 2 (6%)
TOTAL: 35 ENUMs
📋 Inventario Detallado de ENUMs
Schema: auth (2 ENUMs) ✅ [CORRECTO]
Ubicación: apps/database/ddl/schemas/auth/enums/
Estado: ✅ Correctamente ubicado
| # | ENUM | Valores | Uso | Estado |
|---|---|---|---|---|
| 1 | aal_level |
aal1, aal2, aal3 |
Niveles de autenticación (AAL = Authenticator Assurance Level) | ✅ [CORRECTO] |
| 2 | code_challenge_method |
s256, plain |
Métodos PKCE para OAuth | ✅ [CORRECTO] |
Referencias SIMCO:
- Backend:
apps/backend/src/modules/auth/ - Docs:
docs/03-desarrollo/base-de-datos/schemas/auth/
Schema: gamification_system (1 ENUM) ✅ [CORRECTO]
Ubicación: apps/database/ddl/schemas/gamification_system/enums/
Estado: ✅ Correctamente ubicado (pero ver duplicado en public)
| # | ENUM | Valores | Uso | Estado |
|---|---|---|---|---|
| 1 | maya_rank |
NACOM, BATAB, HOLCATTE, GUERRERO, MERCENARIO |
Sistema de rangos maya | ✅ [CORRECTO] ⚠️ Ver duplicado public.rango_maya |
⚠️ ALERTA DE DUPLICACIÓN:
- Existe
public.rango_mayaque es DUPLICADO de este ENUM - Existe también
public.maya_rank(duplicado exacto) - Acción requerida: Consolidar en
gamification_system.maya_rank
Referencias SIMCO:
- Backend:
apps/backend/src/modules/gamification/ - Tabla:
gamification_system.user_ranks - Docs:
docs/03-desarrollo/base-de-datos/schemas/gamification_system/
Schema: storage (1 ENUM) ✅ [CORRECTO]
Ubicación: apps/database/ddl/schemas/storage/enums/
Estado: ✅ Correctamente ubicado
| # | ENUM | Valores | Uso | Estado |
|---|---|---|---|---|
| 1 | buckettype |
(valores por determinar) | Tipos de buckets de almacenamiento | ✅ [CORRECTO] 📝 [FALTA-DOC] |
📝 Acción requerida:
- Documentar valores posibles del ENUM
- Integración con MinIO/S3
Referencias SIMCO:
- Backend:
apps/backend/src/modules/storage/ - Schema: Sin documentar (
storageschema no documentado)
Schema: public (31 ENUMs) 🚨 [MAL-UBICADO] [CRÍTICO]
Ubicación: apps/database/ddl/schemas/public/enums/
Estado: 🚨 TODOS MAL UBICADOS - Requiere migración urgente
✅ Progreso: 2 ENUMs duplicados eliminados (maya_rank, rango_maya)
Grupo 1: ENUMs de Gamification (10 ENUMs activos)
Ubicación actual: public
Ubicación correcta: gamification_system
| # | ENUM | Valores Ejemplo | Uso | Estado |
|---|---|---|---|---|
| 1 | achievement_category |
learning, social, milestone, special |
Categorías de logros | 🚨 [MAL-UBICADO] → gamification_system |
| 2 | achievement_type |
bronze, silver, gold, platinum |
Tipos de logros | 🚨 [MAL-UBICADO] → gamification_system |
| 3 | comodin_type |
skip_question, extra_time, hint, double_points |
Tipos de comodines/power-ups | 🚨 [MAL-UBICADO] → gamification_system |
| 4 | transaction_type |
earn, spend, refund, admin_adjustment |
Tipos de transacciones ML coins | 🚨 [MAL-UBICADO] → gamification_system |
| 5 | maya_rank |
- | - | ✅ [COMPLETADO] Eliminado 2025-11-07 |
| 6 | rango_maya |
- | - | ✅ [COMPLETADO] Eliminado 2025-11-07 |
| 7 | notification_type |
achievement, rank_up, mission_complete, friend_request |
Tipos de notificaciones gamificadas | 🚨 [MAL-UBICADO] → gamification_system |
| 8 | notification_priority |
low, medium, high, urgent |
Prioridad de notificaciones | 🚨 [MAL-UBICADO] → gamification_system |
| 9 | notification_channel |
in_app, email, push, sms |
Canales de notificación | 🚨 [MAL-UBICADO] → gamification_system |
| 10 | metric_type |
counter, gauge, histogram |
Tipos de métricas | 🚨 [MAL-UBICADO] → gamification_system o audit_logging |
| 11 | aggregation_period |
daily, weekly, monthly, yearly |
Períodos de agregación para stats | 🚨 [MAL-UBICADO] → gamification_system |
| 12 | social_event_type |
friend_added, challenge_issued, team_created |
Eventos sociales | 🚨 [MAL-UBICADO] → social_features |
Referencias:
- Tablas afectadas:
gamification_system.achievements,user_achievements,ml_coins_transactions,notifications - Backend:
apps/backend/src/modules/gamification/
Grupo 2: ENUMs de Educational Content (8 ENUMs)
Ubicación actual: public
Ubicación correcta: educational_content
| # | ENUM | Valores Ejemplo | Uso | Estado |
|---|---|---|---|---|
| 13 | exercise_type |
multiple_choice, true_false, fill_blank, matching, ordering |
Tipos de ejercicios | 🚨 [MAL-UBICADO] → educational_content |
| 14 | cognitive_level |
remember, understand, apply, analyze, evaluate, create |
Niveles cognitivos Bloom | 🚨 [MAL-UBICADO] → educational_content |
| 15 | difficulty_level |
beginner, intermediate, advanced, expert |
Dificultad de ejercicios | 🚨 [MAL-UBICADO] → educational_content |
| 16 | module_status |
draft, published, archived, deprecated |
Estado de módulos | 🚨 [MAL-UBICADO] → educational_content |
| 17 | progress_status |
not_started, in_progress, completed, failed |
Estado de progreso | 🚨 [MAL-UBICADO] → progress_tracking |
| 18 | attempt_status |
started, submitted, graded, expired |
Estado de intentos | 🚨 [MAL-UBICADO] → progress_tracking |
| 19 | attempt_result |
correct, incorrect, partial, skipped |
Resultado de intentos | 🚨 [MAL-UBICADO] → progress_tracking |
| 20 | processing_status |
pending, processing, completed, failed |
Estado de procesamiento | 🚨 [MAL-UBICADO] → content_management |
Referencias:
- Tablas afectadas:
educational_content.exercises,modules,progress_tracking.exercise_attempts - Backend:
apps/backend/src/modules/exercises/,apps/backend/src/modules/progress/
Grupo 3: ENUMs de Content Management (4 ENUMs)
Ubicación actual: public
Ubicación correcta: content_management
| # | ENUM | Valores Ejemplo | Uso | Estado |
|---|---|---|---|---|
| 21 | content_type |
text, image, video, audio, document, interactive |
Tipos de contenido | 🚨 [MAL-UBICADO] → content_management |
| 22 | content_status |
draft, review, published, archived |
Estado de contenido | 🚨 [MAL-UBICADO] → content_management |
| 23 | media_type |
image/jpeg, image/png, video/mp4, audio/mp3 |
MIME types | 🚨 [MAL-UBICADO] → content_management o storage |
| 24 | processing_status |
(ver arriba) | Procesamiento de media | ❌ [DUPLICADO] ver #20 |
Referencias:
- Tablas afectadas:
content_management.marie_curie_content,media_files - Backend:
apps/backend/src/modules/content/
Grupo 4: ENUMs de Auth Management (6 ENUMs)
Ubicación actual: public
Ubicación correcta: auth_management
| # | ENUM | Valores Ejemplo | Uso | Estado |
|---|---|---|---|---|
| 25 | gamilit_role |
admin, teacher, student, parent, content_creator |
Roles del sistema | 🚨 [MAL-UBICADO] → auth_management |
| 26 | user_status |
active, inactive, suspended, pending_verification, deleted |
Estados de usuario | 🚨 [MAL-UBICADO] → auth_management |
| 27 | classroom_role |
teacher, student, assistant, observer |
Roles en clase | 🚨 [MAL-UBICADO] → social_features |
| 28 | team_role |
leader, member, co_leader |
Roles en equipos | 🚨 [MAL-UBICADO] → social_features |
| 29 | friendship_status |
pending, accepted, rejected, blocked |
Estados de amistad | 🚨 [MAL-UBICADO] → social_features |
| 30 | setting_type |
string, number, boolean, json |
Tipos de settings | 🚨 [MAL-UBICADO] → system_configuration |
Referencias:
- Tablas afectadas:
auth_management.roles,social_features.friendships,system_configuration.system_settings - Backend:
apps/backend/src/modules/auth/,apps/backend/src/modules/social/
Grupo 5: ENUMs de Audit & System (3 ENUMs)
Ubicación actual: public
Ubicación correcta: audit_logging / system_configuration
| # | ENUM | Valores Ejemplo | Uso | Estado |
|---|---|---|---|---|
| 31 | audit_action |
create, update, delete, login, logout, access |
Acciones auditables | 🚨 [MAL-UBICADO] → audit_logging |
| 32 | log_level |
debug, info, warning, error, critical |
Niveles de log | 🚨 [MAL-UBICADO] → audit_logging |
| 33 | alert_severity |
low, medium, high, critical |
Severidad de alertas | 🚨 [MAL-UBICADO] → audit_logging |
| 34 | alert_status |
open, acknowledged, resolved, closed |
Estado de alertas | 🚨 [MAL-UBICADO] → audit_logging |
Referencias:
- Tablas afectadas:
audit_logging.audit_logs,system_alerts - Backend:
apps/backend/src/modules/audit/
🎯 Plan de Migración de ENUMs
Fase 1: Crear ENUMs en Schemas Correctos
-- EJEMPLO: Migrar achievement_category
-- 1. Crear en schema correcto
CREATE TYPE gamification_system.achievement_category AS ENUM (
'learning',
'social',
'milestone',
'special'
);
-- 2. Actualizar referencias en tablas
ALTER TABLE gamification_system.achievements
ALTER COLUMN category TYPE gamification_system.achievement_category
USING category::text::gamification_system.achievement_category;
-- 3. Deprecar ENUM antiguo (NO eliminar aún)
-- COMMENT ON TYPE public.achievement_category IS 'DEPRECATED - Use gamification_system.achievement_category';
-- 4. Eliminar después de período de gracia
-- DROP TYPE public.achievement_category;
Fase 2: Orden de Migración (Respetando Dependencias)
Nivel 1: ENUMs sin dependencias
auth.aal_level,auth.code_challenge_method✅ Ya correctostorage.buckettype✅ Ya correcto- Migrar ENUMs de
audit_logging(no dependen de nada) - Migrar ENUMs de
system_configuration
Nivel 2: ENUMs de features base
5. Migrar ENUMs de auth_management (depende de auth)
6. Migrar ENUMs de educational_content (depende de auth_management)
Nivel 3: ENUMs de features avanzadas
7. Migrar ENUMs de gamification_system (depende de educational_content)
8. Migrar ENUMs de social_features (depende de auth_management)
9. Migrar ENUMs de content_management (depende de storage)
Nivel 4: ENUMs de tracking
10. Migrar ENUMs de progress_tracking (depende de educational + gamification)
Fase 3: Validación
- Verificar backend constants sincronizados
- Ejecutar
npm run sync:enums - Testing completo de funcionalidades
- Validar que no hay referencias a
public.*ENUMs - Eliminar ENUMs deprecados de public
📊 Matriz de Correcciones Requeridas
| ENUM en public | Schema Destino | Tablas Afectadas | Prioridad | Estado |
|---|---|---|---|---|
achievement_category |
gamification_system | achievements | P0 | [PENDIENTE] |
achievement_type |
gamification_system | achievements | P0 | [PENDIENTE] |
maya_rank |
❌ DUPLICADO | - | P0 | ✅ [COMPLETADO] 2025-11-07 |
rango_maya |
❌ DUPLICADO | - | P0 | ✅ [COMPLETADO] 2025-11-07 |
exercise_type |
educational_content | exercises | P0 | [PENDIENTE] |
gamilit_role |
auth_management | user_roles | P0 | [PENDIENTE] |
user_status |
auth_management | users | P0 | [PENDIENTE] |
cognitive_level |
educational_content | exercises | P1 | [PENDIENTE] |
difficulty_level |
educational_content | exercises | P1 | [PENDIENTE] |
module_status |
educational_content | modules | P1 | [PENDIENTE] |
progress_status |
progress_tracking | module_progress | P1 | [PENDIENTE] |
attempt_status |
progress_tracking | exercise_attempts | P1 | [PENDIENTE] |
attempt_result |
progress_tracking | exercise_attempts | P1 | [PENDIENTE] |
content_type |
content_management | content_items | P1 | [PENDIENTE] |
content_status |
content_management | content_items | P1 | [PENDIENTE] |
media_type |
content_management | media_files | P1 | [PENDIENTE] |
processing_status |
content_management | media_files | P1 | [PENDIENTE] |
comodin_type |
gamification_system | comodines_inventory | P2 | [PENDIENTE] |
transaction_type |
gamification_system | ml_coins_transactions | P2 | [PENDIENTE] |
notification_type |
gamification_system | notifications | P2 | [PENDIENTE] |
notification_priority |
gamification_system | notifications | P2 | [PENDIENTE] |
notification_channel |
gamification_system | notifications | P2 | [PENDIENTE] |
classroom_role |
social_features | classroom_members | P2 | [PENDIENTE] |
team_role |
social_features | team_members | P2 | [PENDIENTE] |
friendship_status |
social_features | friendships | P2 | [PENDIENTE] |
social_event_type |
social_features | user_activity | P2 | [PENDIENTE] |
audit_action |
audit_logging | audit_logs | P2 | [PENDIENTE] |
log_level |
audit_logging | system_logs | P2 | [PENDIENTE] |
alert_severity |
audit_logging | system_alerts | P2 | [PENDIENTE] |
alert_status |
audit_logging | system_alerts | P2 | [PENDIENTE] |
setting_type |
system_configuration | system_settings | P2 | [PENDIENTE] |
metric_type |
audit_logging | performance_metrics | P2 | [PENDIENTE] |
aggregation_period |
gamification_system | leaderboard_metadata | P2 | [PENDIENTE] |
Total: 33 correcciones identificadas Completadas: 2 (maya_rank, rango_maya) ✅ Pendientes: 31
🔍 Verificación de Sincronización con Backend
ENUMs que DEBEN estar en backend constants
Archivo: apps/backend/src/shared/constants/enums.constants.ts
✅ Verificar que existen:
maya_rank(NACOM, BATAB, HOLCATTE, GUERRERO, MERCENARIO)achievement_categoryexercise_typegamilit_rolecognitive_leveldifficulty_level- Todos los demás ENUMs
⚠️ Acción requerida: Después de migrar ENUMs, ejecutar:
npm run sync:enums
npm run validate:constants
📎 Referencias SIMCO
Este documento es parte del sistema SIMCO (Sistema Indexado Modular por Contexto)
Referencias Cruzadas
- Inventario anterior:
02-TABLES-INVENTORY.md - Siguiente inventario:
04-FUNCTIONS-INVENTORY.md - Reporte maestro:
INVENTORY-MASTER-REPORT.md - Plan de corrección: Ver sección "Plan de Migración" arriba
Scripts Relacionados
- Inventario:
apps/database/scripts/inventory/list-enums.sh - DDL Source:
apps/database/ddl/schemas/*/enums/*.sql - Backend Sync:
apps/devops/scripts/sync-enums.ts
Documentación
- Backend Constants:
apps/backend/src/shared/constants/enums.constants.ts - Docs schemas:
docs/03-desarrollo/base-de-datos/schemas/
✅ Checklist de Corrección
Usar este checklist durante la migración:
Pre-migración
- Backup completo de la base de datos
- Identificar todas las tablas que usan cada ENUM
- Generar queries de validación de datos
Migración
- Crear ENUM en schema correcto
- Verificar valores coinciden exactamente
- Actualizar ALTER TABLE de todas las tablas afectadas
- Actualizar funciones que usan el ENUM
- Actualizar triggers que usan el ENUM
- Marcar ENUM antiguo como DEPRECATED (no eliminar)
Post-migración
- Ejecutar
npm run sync:enums - Actualizar backend entities
- Testing funcional completo
- Validar en staging
- Deploy a producción
- Esperar período de gracia (1-2 semanas)
- Eliminar ENUMs deprecados de public
Generado por: Sistema de Inventario Automatizado SIMCO Estado: 🚨 Requiere corrección urgente - 33 ENUMs mal ubicados Próxima acción: Crear scripts de migración SQL Estimación: 3-5 días de trabajo para migrar todos los ENUMs