- 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
Reporte Maestro de Inventario - Base de Datos GAMILIT
Fecha generación: 2025-11-07 Versión: 1.0 Fase: Fase 1 - Inventario y Auditoría Completa Estado: ✅ COMPLETADO Sistema: SIMCO (Sistema Indexado Modular por Contexto)
📊 Resumen Ejecutivo
Inventario Completo
| Tipo de Objeto | Cantidad Real | Documentado | Gap | % Completitud |
|---|---|---|---|---|
| Schemas | 13 | 10 | +3 | 77% |
| Tablas | 64 | 48 | +16 | 75% |
| ENUMs | 37 | 24 | +13 | 65% |
| Funciones | 61 | ? | ? | 0% |
| Triggers | 52 | ? | ? | 0% |
| RLS Policies | 24 | ? | ? | 0% |
| Índices | 74 | ? | ? | 0% |
| Vistas | 16 | 12 | +4 | 75% |
| Seeds | 47 | 32 | +15 | 68% |
Total de objetos: 388 objetos de base de datos identificados
🚨 Hallazgos Críticos
1. Schema public - Arquitectura Rota (P0 - CRÍTICO)
Problema
El 89% de los ENUMs (33 de 37) están mal ubicados en el schema public, rompiendo la arquitectura modular del sistema.
| Objeto | En public | Deberían estar en schemas específicos |
|---|---|---|
| ENUMs | 33 | Distribuidos por schemas funcionales |
| Tablas | 9 | educational_content, social_features |
| Triggers | 21 | Distribuidos por schemas |
| Índices | 64 | Distribuidos por schemas |
| Vistas | 3 | Distribuidos por schemas |
Impacto
- Alto: Rompe la separación de concerns
- Alto: Dificulta el mantenimiento
- Alto: Complica el versionado y migraciones
- Medio: Afecta performance (todos los objetos en un schema)
Recomendación
Plan de migración urgente para redistribuir objetos de public a sus schemas correctos.
2. Duplicación de Objetos (P0 - CRÍTICO)
Tablas Duplicadas
| Tabla | Schema 1 | Schema 2 | Acción Requerida |
|---|---|---|---|
classrooms |
social_features | public | Consolidar en social_features |
classroom_members / classroom_students |
social_features | public | Consolidar en social_features |
notifications |
gamification_system | public | Consolidar en gamification_system |
ENUMs Duplicados
| ENUM | Schema 1 | Schema 2 | Acción Requerida |
|---|---|---|---|
maya_rank |
gamification_system | public (rango_maya) | Consolidar, eliminar rango_maya |
Triggers Duplicados
| Trigger | Schema 1 | Schema 2 |
|---|---|---|
trg_classroom_members_updated_at |
social_features | public |
trg_update_classroom_count |
social_features | public |
trg_classrooms_updated_at |
social_features | public |
trg_schools_updated_at |
social_features | public |
trg_teams_updated_at |
social_features | public |
trg_feature_flags_updated_at |
system_configuration | public |
trg_system_settings_updated_at |
system_configuration | public |
21-trg_update_user_stats_on_exercise |
progress_tracking | public |
22-exercise_submissions_updated_at |
progress_tracking | public |
23-trg_module_progress_updated_at |
progress_tracking | public |
Total: 10 triggers duplicados
Impacto
- Crítico: Riesgo de inconsistencia de datos
- Crítico: Confusión sobre cuál tabla es la "correcta"
- Alto: Duplicación de datos
- Alto: Complejidad de mantenimiento
Acciones Inmediatas
- Comparar esquemas de tablas duplicadas
- Verificar uso en backend (entities)
- Contar registros en cada tabla
- Determinar tabla "correcta" (más usada, mejor diseño)
- Plan de migración de datos
- Actualizar referencias en backend
- Deprecar y eventualmente eliminar duplicados
3. Distribución Desequilibrada de Objetos
89% de ENUMs en Schema Incorrecto
public: 33 ENUMs (89%) ⚠️ INCORRECTO
gamification: 1 ENUM (3%) ✅
auth: 2 ENUMs (5%) ✅
storage: 1 ENUM (3%) ✅
86% de Índices en public
public: 64 índices (86%) ⚠️
auth_management: 2 índices (3%)
content_management: 2 índices (3%)
gamification: 4 índices (5%)
progress_tracking: 2 índices (3%)
Recomendación
Redistribuir objetos según arquitectura modular:
- ENUMs → schemas funcionales que los usan
- Índices → schemas de sus tablas correspondientes
📋 Inventario Detallado por Tipo
Schemas (13)
| # | Schema | Tipo | Estado Doc |
|---|---|---|---|
| 1 | auth | Core | ✅ |
| 2 | auth_management | Core | ✅ |
| 3 | gamilit | Core/Utils | ✅ |
| 4 | gamification_system | Feature | ✅ |
| 5 | educational_content | Feature | ✅ |
| 6 | progress_tracking | Feature | ✅ |
| 7 | content_management | Feature | ✅ |
| 8 | social_features | Feature | ✅ |
| 9 | system_configuration | System | ✅ |
| 10 | audit_logging | System | ✅ |
| 11 | admin_dashboard | Admin | ⚠️ NO DOC |
| 12 | storage | System | ⚠️ NO DOC |
| 13 | public | Legacy? | ⚠️ NO DOC |
Documentación: 01-SCHEMAS-INVENTORY.md
Tablas (64)
| Schema | Tablas | % |
|---|---|---|
| auth_management | 12 | 19% |
| gamification_system | 12 | 19% |
| public | 9 | 14% ⚠️ |
| social_features | 7 | 11% |
| audit_logging | 6 | 9% |
| content_management | 5 | 8% |
| progress_tracking | 5 | 8% |
| educational_content | 4 | 6% |
| system_configuration | 3 | 5% |
| auth | 1 | 2% |
Tablas en public que deberían moverse:
assignments(+ 4 tablas relacionadas) →educational_contentclassrooms,classroom_students→ Consolidar ensocial_featuresnotifications→ Consolidar engamification_systemteacher_notes→educational_contento nuevo schema
Documentación: 02-TABLES-INVENTORY.md
ENUMs (37)
| Schema | ENUMs | % | Estado |
|---|---|---|---|
| public | 33 | 89% | ⚠️ MAL UBICADOS |
| auth | 2 | 5% | ✅ |
| gamification_system | 1 | 3% | ✅ |
| storage | 1 | 3% | ✅ |
ENUMs de public que deben moverse:
→ gamification_system:
- achievement_category, achievement_type
- maya_rank (duplicado de gamification.maya_rank)
- rango_maya (duplicado, eliminar)
- comodin_type, transaction_type
→ social_features:
- classroom_role, team_role
- friendship_status, social_event_type
→ educational_content:
- exercise_type, cognitive_level
- difficulty_level, module_status
- progress_status, attempt_status, attempt_result
→ content_management:
- content_type, content_status
- media_type, processing_status
→ audit_logging:
- audit_action, log_level
- alert_severity, alert_status
→ system_configuration:
- notification_type, notification_channel, notification_priority
- setting_type, metric_type
- aggregation_period
→ auth_management:
- gamilit_role (ya existe
rolestabla) - user_status
Documentación: 03-ENUMS-INVENTORY.md (pendiente crear)
Funciones (61)
| Schema | Funciones | % |
|---|---|---|
| gamification_system | 23 | 38% |
| gamilit | 13 | 21% |
| progress_tracking | 7 | 11% |
| public | 7 | 11% |
| auth_management | 6 | 10% |
| educational_content | 2 | 3% |
| auth | 1 | 2% |
| audit_logging | 1 | 2% |
| social_features | 1 | 2% |
Funciones críticas:
gamification_system.calculate_user_rank- Cálculo de rangos mayagamification_system.process_exercise_completion- Otorgamiento de XP y ML coinsauth_management.verify_user_permission- Autorizaciónprogress_tracking.record_exercise_attempt- Tracking de progreso
Funciones en public que deben moverse:
is_feature_enabled,update_feature_flag→system_configurationsend_notification→gamification_systemosocial_featureslog_system_event→audit_loggingcleanup_old_*→audit_logging
Documentación: 04-FUNCTIONS-INVENTORY.md (pendiente crear)
Triggers (52)
| Schema | Triggers | % |
|---|---|---|
| public | 21 | 40% ⚠️ |
| gamification_system | 7 | 13% |
| auth_management | 6 | 12% |
| social_features | 5 | 10% |
| educational_content | 4 | 8% |
| content_management | 3 | 6% |
| progress_tracking | 3 | 6% |
| system_configuration | 2 | 4% |
| audit_logging | 1 | 2% |
Patrón común: trg_*_updated_at - Actualiza columna updated_at automáticamente
Triggers duplicados: 10 triggers (ver sección de duplicación)
Documentación: 05-TRIGGERS-INVENTORY.md (pendiente crear)
RLS Policies (24)
| Schema | Policies | % |
|---|---|---|
| gamification_system | 8 | 33% |
| social_features | 8 | 33% |
| educational_content | 2 | 8% |
| progress_tracking | 2 | 8% |
| audit_logging | 1 | 4% |
| auth_management | 1 | 4% |
| content_management | 1 | 4% |
| system_configuration | 1 | 4% |
Nota: public NO tiene RLS policies (⚠️ Potencial riesgo de seguridad)
Schemas sin RLS:
- admin_dashboard (solo vistas, OK)
- storage (solo ENUMs, OK)
- gamilit (solo funciones, OK)
- auth (extendido por auth_management)
Documentación: 06-RLS-POLICIES-INVENTORY.md (pendiente crear)
Índices (74)
| Schema | Índices | % |
|---|---|---|
| public | 64 | 86% ⚠️ |
| gamification_system | 4 | 5% |
| auth_management | 2 | 3% |
| content_management | 2 | 3% |
| progress_tracking | 2 | 3% |
Problema: 64 de 74 índices (86%) están en public, deberían estar distribuidos por schemas.
Tipos de índices encontrados:
- B-tree (mayoría)
- GIN (JSONB, arrays)
- Partial indexes (con WHERE clauses)
- Unique indexes
- Composite indexes
Documentación: 07-INDEXES-INVENTORY.md (pendiente crear)
Vistas (16)
| Schema/Tipo | Vistas | % |
|---|---|---|
| gamification_system (views) | 4 | 25% |
| gamification_system (materialized) | 4 | 25% |
| admin_dashboard | 4 | 25% |
| public | 3 | 19% |
| progress_tracking | 1 | 6% |
Vistas materializadas:
mv_global_leaderboard- Leaderboard globalmv_classroom_leaderboard- Leaderboard por clasemv_weekly_leaderboard- Leaderboard semanalmv_mechanic_leaderboard- Leaderboard por mecánica
Admin dashboard views:
user_stats_summary- Resumen de estadísticas de usuariosorganization_stats_summary- Estadísticas de organizaciónmoderation_queue- Cola de moderaciónrecent_admin_actions- Acciones recientes de admins
Nota: Se esperaban 12 vistas, se encontraron 16 (+4)
Documentación: 08-VIEWS-INVENTORY.md (pendiente crear)
Seeds (47)
| Environment | Seeds | % |
|---|---|---|
| dev | 34 | 72% |
| prod | 5 | 11% |
| staging | 5 | 11% |
| production | 3 | 6% |
Seeds críticos (prod/production):
- Tenants, system settings, feature flags
- Auth providers (OAuth)
- Achievement categories
- Leaderboard metadata
- Módulos educativos
Seeds de desarrollo:
- Demo users, demo progress
- Test data completo
- Marie Curie contenido
- Ejercicios de todos los módulos
Nota: Hay diferencia entre prod y production - ¿consolidar?
Documentación: 09-SEEDS-INVENTORY.md (pendiente crear)
📈 Análisis de Discrepancias
Comparativa: Documentado vs Real
| Objeto | Docs Original | Real | Gap | Explicación |
|---|---|---|---|---|
| Schemas | 9 | 13 | +4 | admin_dashboard, storage, public + 1 error de conteo |
| Tablas | 48 | 64 | +16 | 9 en public + 7 otras |
| ENUMs | 24 | 37 | +13 | 33 mal ubicados en public |
| Vistas | 12 | 16 | +4 | 4 materialized views + 4 admin |
| Seeds | 32 | 47 | +15 | Seeds de dev no documentados |
Total gap: 52 objetos no documentados
🎯 Plan de Acción Priorizado
Fase 2A: Resolución de Duplicaciones (P0 - Urgente)
Duración: 2-3 días Prioridad: 🔴 CRÍTICA
Tareas:
-
Comparar tablas duplicadas:
\d public.classrooms \d social_features.classrooms -- Comparar estructura, constraints, indexes -
Verificar uso en backend:
grep -r "public\.classrooms" apps/backend/ grep -r "social_features\.classrooms" apps/backend/ -
Contar registros y decidir tabla correcta:
SELECT count(*) FROM public.classrooms; SELECT count(*) FROM social_features.classrooms; -
Plan de consolidación:
- Determinar tabla "source of truth"
- Migrar datos si es necesario
- Actualizar backend entities
- Deprecar tabla incorrecta
- Testing en staging
- Deploy y eliminación
Entregables:
- Análisis de duplicaciones (SQL + screenshots)
- Plan de migración detallado
- Scripts de consolidación
- Backend actualizado
- Validación en staging
Fase 2B: Migración de public Schema (P0 - Urgente)
Duración: 3-5 días Prioridad: 🔴 CRÍTICA
Tareas:
-
Crear plan de migración por tipo:
- 33 ENUMs → Distribuir por schemas funcionales
- 9 tablas → Mover a schemas correctos
- 21 triggers → Redistribuir
- 64 índices → Redistribuir
- 7 funciones → Redistribuir
- 3 vistas → Redistribuir
-
Orden de migración (respetando dependencias):
1. ENUMs (sin dependencias) 2. Tablas (pueden referenciar ENUMs) 3. Índices (dependen de tablas) 4. Funciones (pueden usar tablas) 5. Triggers (usan funciones) 6. Vistas (usan tablas + funciones) -
Actualizar backend constants:
// apps/backend/src/shared/constants/database.constants.ts // Actualizar referencias de schemas -
Sincronizar ENUMs con backend:
npm run sync:enums
Entregables:
- Plan de migración completo (SQL migrations)
- Scripts de migración por tipo de objeto
- Backend constants actualizados
- Validación de sincronización
- Testing completo
Fase 2C: Documentación de Schemas Faltantes (P1 - Alta)
Duración: 1-2 días Prioridad: 🟠 ALTA
Schemas a documentar:
- admin_dashboard (4 vistas)
- storage (1 ENUM)
- public (análisis de legacy vs funcional)
Entregables:
docs/03-desarrollo/base-de-datos/schemas/admin_dashboard/README.mddocs/03-desarrollo/base-de-datos/schemas/storage/README.mddocs/03-desarrollo/base-de-datos/schemas/public/ANALYSIS.md(análisis + plan)
Fase 2D: Documentación de Objetos Faltantes (P1 - Alta)
Duración: 2-3 días Prioridad: 🟠 ALTA
Crear inventarios documentados:
03-ENUMS-INVENTORY.md(37 ENUMs)04-FUNCTIONS-INVENTORY.md(61 funciones)05-TRIGGERS-INVENTORY.md(52 triggers)06-RLS-POLICIES-INVENTORY.md(24 policies)07-INDEXES-INVENTORY.md(74 índices)08-VIEWS-INVENTORY.md(16 vistas)09-SEEDS-INVENTORY.md(47 seeds)
Actualizar documentación principal:
apps/database/README.md(actualizar estadísticas)- Diagramas ERD completos
- Matriz de dependencias actualizada
📊 Métricas de Progreso
Estado Actual (Fase 1 Completada)
| Fase | Estado | Progreso |
|---|---|---|
| Fase 1: Inventario | ✅ COMPLETO | 100% |
| Fase 2: Documentación | ⏳ Pendiente | 0% |
| Fase 3: Consolidación | ⏳ Pendiente | 0% |
| Fase 4: Sincronización | ⏳ Pendiente | 0% |
| Fase 5: Validación | ⏳ Pendiente | 0% |
Objetos Inventariados vs Documentados
Inventario: 388 objetos ████████████████████ 100%
Documentación: 200 objetos ██████████░░░░░░░░░░ 52%
Gap: 188 objetos ░░░░░░░░░░ 48% restante
🔗 Referencias SIMCO
Este es el Reporte Maestro del sistema SIMCO (Sistema Indexado Modular por Contexto)
Inventarios Detallados
- 01-SCHEMAS-INVENTORY.md ✅
- 02-TABLES-INVENTORY.md ✅
- 03-ENUMS-INVENTORY.md ⏳ Pendiente
- 04-FUNCTIONS-INVENTORY.md ⏳ Pendiente
- 05-TRIGGERS-INVENTORY.md ⏳ Pendiente
- 06-RLS-POLICIES-INVENTORY.md ⏳ Pendiente
- 07-INDEXES-INVENTORY.md ⏳ Pendiente
- 08-VIEWS-INVENTORY.md ⏳ Pendiente
- 09-SEEDS-INVENTORY.md ⏳ Pendiente
Scripts de Inventario
apps/database/scripts/inventory/list-tables.sh✅apps/database/scripts/inventory/list-enums.sh✅apps/database/scripts/inventory/list-functions.sh✅apps/database/scripts/inventory/list-triggers.sh✅apps/database/scripts/inventory/list-rls.sh✅apps/database/scripts/inventory/list-indexes.sh✅apps/database/scripts/inventory/list-views.sh✅apps/database/scripts/inventory/list-seeds.sh✅
Documentación Relacionada
- Plan Maestro:
apps/database/PLAN-ACTUALIZACION-DOCUMENTACION.md - Plan de Validación:
apps/database/PLAN-VALIDACION-COMPLETO.md - Criterios de Validación:
apps/database/CRITERIOS-VALIDACION.md
Referencias de Código
- DDL:
apps/database/ddl/schemas/ - Seeds:
apps/database/seeds/ - Backend Constants:
apps/backend/src/shared/constants/ - Documentación:
docs/03-desarrollo/base-de-datos/
✅ Conclusiones
Logros de Fase 1
- ✅ Inventario completo de 388 objetos de base de datos
- ✅ Identificación de 3 schemas no documentados
- ✅ Detección de duplicaciones críticas (tablas, ENUMs, triggers)
- ✅ Análisis del problema de public schema (130+ objetos mal ubicados)
- ✅ 8 scripts de inventario automatizados creados
- ✅ Sistema SIMCO implementado con referencias cruzadas completas
Problemas Críticos Identificados
- 🚨 33 de 37 ENUMs (89%) mal ubicados en public
- 🚨 10 triggers duplicados entre schemas
- 🚨 3 tablas duplicadas (classrooms, classroom_members, notifications)
- 🚨 64 de 74 índices (86%) en public en lugar de schemas específicos
- 🚨 9 tablas de assignments en public en lugar de educational_content
Próximos Pasos
Inmediato:
- Revisar este reporte con el equipo
- Priorizar plan de consolidación de duplicados
- Aprobar plan de migración de public schema
- Iniciar Fase 2A (resolución de duplicaciones)
Esta semana:
- Completar Fase 2 (documentación + consolidación)
- Actualizar backend references
- Testing exhaustivo en staging
Próxima semana:
- Desplegar cambios a producción
- Validación final
- Cierre de Fase 1-2 del plan maestro
Generado por: Sistema de Inventario Automatizado SIMCO Fecha: 2025-11-07 Responsable: Equipo de desarrollo GAMILIT Próxima actualización: Inicio de Fase 2A