- 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>
45 KiB
Mapa Maestro de Incidencias - Base de Datos GAMILIT
Fecha creación: 2025-11-07 Versión: 1.0 Sistema: SIMCO (Sistema Indexado Modular por Contexto) Propósito: Documento maestro de rastreo para correcciones de base de datos Para: Agente especializado en análisis de base de datos
📋 Índice Rápido
- 1. Resumen Ejecutivo
- 2. Incidencias por Tipo
- 3. Mapa de Referencias
- 4. Estado de Correcciones
- 5. Incidencias Detalladas
- 6. Contexto para Siguiente Agente
1. Resumen Ejecutivo
1.1 Estado General
| Categoría | Total | Completado | Pendiente | % |
|---|---|---|---|---|
| Duplicaciones | 13 | 5 | 8 | 38% |
| ENUMs mal ubicados | 33 | 5 | 28 | 15% |
| Tablas mal ubicadas | 9 | 0 | 9 | 0% |
| Triggers duplicados | 10 | 0 | 10 | 0% |
| Índices mal ubicados | 64 | 0 | 64 | 0% |
| Funciones mal ubicadas | 7 | 0 | 7 | 0% |
| Vistas mal ubicadas | 3 | 0 | 3 | 0% |
| TOTAL | 142 | 8 | 134 | 5.6% |
1.2 Principio Establecido
"Documentación como Fuente de Verdad"
- Cuando hay conflicto: Documentación > Código
- Especificaciones en
docs/02-especificaciones-tecnicas/son autoritativas
1.3 Documentos Base
| Documento | Ubicación | Propósito |
|---|---|---|
| Tracking Principal | apps/database/docs/TRACKING-CORRECCIONES.md |
Estado general de correcciones |
| Tipos Notifications | docs/02-especificaciones-tecnicas/tipos-compartidos/TYPES-NOTIFICATIONS.md |
Especificación NotificationType |
| Tipos Gamification | docs/02-especificaciones-tecnicas/tipos-compartidos/TYPES-GAMIFICATION.md |
Especificación MayaRank, Achievements, Transactions |
| Análisis ENUMs | apps/database/docs/ANALISIS-ENUMS-GAMIFICATION-2025-11-07.md |
Análisis detallado de ENUMs gamification |
| Fuente de Verdad | apps/database/docs/REPORTE-FUENTE-DE-VERDAD-2025-11-07.md |
Plan de correcciones detallado |
2. Incidencias por Tipo
2.1 DUPLICACIONES (13 incidencias)
2.1.1 Tablas Duplicadas (3) - ✅ RESUELTAS (Falsos Positivos)
| ID | Tabla | Schemas Reportados | Estado | Hallazgo Real |
|---|---|---|---|---|
| C1.1 | classrooms | social_features vs public | ✅ FALSO POSITIVO | Solo existe en social_features |
| C1.2 | classroom_members/students | social_features vs public | ✅ FALSO POSITIVO | Solo existe en social_features |
| C1.3 | notifications | gamification_system vs public | ✅ FALSO POSITIVO | Solo existe en gamification_system |
Referencias:
- Reporte:
apps/database/docs/REPORTE-VALIDACION-DUPLICACIONES-2025-11-07.md - DDL classrooms:
apps/database/ddl/schemas/social_features/tables/03-classrooms.sql - DDL notifications:
apps/database/ddl/schemas/gamification_system/tables/08-notifications.sql
2.1.2 ENUMs Duplicados (2) - ✅ COMPLETADAS
| ID | ENUM | Schemas | Estado | Fecha Corrección |
|---|---|---|---|---|
| C2.1 | maya_rank | gamification_system vs public | ✅ COMPLETADO | 2025-11-07 (sesión anterior) |
| C2.2 | rango_maya | public (legacy) | ✅ COMPLETADO | 2025-11-07 (sesión anterior) |
Referencias:
- DDL correcto:
apps/database/ddl/schemas/gamification_system/enums/maya_rank.sql - Valores:
'Ajaw', 'Nacom', 'Ah K''in', 'Halach Uinic', 'K''uk''ulkan'
2.1.3 Triggers Duplicados (10) - ⏳ PENDIENTE
Todos los triggers duplicados están en public vs schema correcto debido a que las tablas estaban duplicadas (falso positivo).
| ID | Trigger | Schemas | Acción |
|---|---|---|---|
| C3.1 | trg_classroom_members_updated_at | social_features vs public | ⚠️ VALIDAR si public tiene trigger legacy |
| C3.2 | trg_update_classroom_count | social_features vs public | ⚠️ VALIDAR |
| C3.3 | trg_classrooms_updated_at | social_features vs public | ⚠️ VALIDAR |
| C3.4 | trg_schools_updated_at | social_features vs public | ⚠️ VALIDAR |
| C3.5 | trg_teams_updated_at | social_features vs public | ⚠️ VALIDAR |
| C3.6 | trg_feature_flags_updated_at | system_configuration vs public | ⚠️ VALIDAR |
| C3.7 | trg_system_settings_updated_at | system_configuration vs public | ⚠️ VALIDAR |
| C3.8 | 21-trg_update_user_stats_on_exercise | progress_tracking vs public | ⚠️ VALIDAR |
| C3.9 | 22-exercise_submissions_updated_at | progress_tracking vs public | ⚠️ VALIDAR |
| C3.10 | 23-trg_module_progress_updated_at | progress_tracking vs public | ⚠️ VALIDAR |
Acción sugerida: Ejecutar query para verificar triggers en public schema:
SELECT schemaname, tablename, trigger_name
FROM information_schema.triggers
WHERE schemaname = 'public'
ORDER BY tablename;
Referencias:
- DDL triggers social_features:
apps/database/ddl/schemas/social_features/triggers/ - DDL triggers public:
apps/database/ddl/schemas/public/triggers/
2.2 ENUMs MAL UBICADOS (33 incidencias)
2.2.1 ENUMs → gamification_system (12 ENUMs)
| ID | ENUM | Estado | DDL Ubicación Actual | Uso en Tabla | Prioridad |
|---|---|---|---|---|---|
| P1.1.1 | achievement_category | ✅ COMPLETADO | gamification_system | achievements | P0 |
| P1.1.2 | achievement_type | ✅ COMPLETADO | gamification_system | (no usado) | P0 |
| P1.1.3 | comodin_type | ⏳ PENDIENTE | public | exercises (ARRAY) | P1 |
| P1.1.4 | transaction_type | ⏳ PENDIENTE | public + TEXT+CHECK | ml_coins_transactions | P0 |
| P1.1.5 | notification_type | ✅ COMPLETADO | gamification_system | notifications | P0 |
| P1.1.6 | notification_priority | ⏳ PENDIENTE | public | (no usado - huérfano) | P2 |
| P1.1.7 | notification_channel | ⏳ PENDIENTE | public | (no usado - huérfano) | P2 |
| P1.1.8 | metric_type | ⏳ PENDIENTE | public | performance_metrics | P2 |
| P1.1.9 | aggregation_period | ⏳ PENDIENTE | public | leaderboard_metadata | P2 |
| P1.1.10 | social_event_type | ⏳ PENDIENTE | public | user_activity | P2 |
| P1.1.11 | maya_rank | ✅ COMPLETADO | gamification_system | user_ranks | - |
| P1.1.12 | rango_maya | ✅ COMPLETADO | (eliminado) | - | - |
Referencias detalladas P1.1.3 - comodin_type:
- DDL ENUM:
apps/database/ddl/schemas/public/enums/comodin_type.sql - Valores:
'pistas', 'vision_lectora', 'segunda_oportunidad' - Uso:
educational_content.exercises.comodines_allowed public.comodin_type[] - DDL tabla:
apps/database/ddl/schemas/educational_content/tables/02-exercises.sql:46 - Acción: Crear
gamification_system.comodin_type, migrar columna ARRAY - Complejidad: MEDIA (tipo ARRAY requiere conversión especial)
Referencias detalladas P1.1.4 - transaction_type:
- DDL ENUM public:
apps/database/ddl/schemas/public/enums/transaction_type.sql(10 valores legacy) - DDL ENUM correcto:
apps/database/ddl/schemas/gamification_system/enums/transaction_type.sql✅ YA CREADO (14 valores) - DDL tabla:
apps/database/ddl/schemas/gamification_system/tables/05-ml_coins_transactions.sql✅ YA ACTUALIZADO - Problema: Tabla usa
transaction_type TEXTcon CHECK constraint (12 valores) - Valores correctos (14): Ver
TYPES-GAMIFICATION.md:217-230 - Acción: Crear migration para convertir TEXT→ENUM
- Migration: ⏳ PENDIENTE crear
2025-11-0X-sync-transaction-type-enum.sql - Complejidad: ALTA (desincronización entre 3 fuentes, mapeo de valores legacy)
Mapeo de valores legacy transaction_type:
public.transaction_type (10 valores legacy) → gamification_system.transaction_type (14 valores)
MANTENER:
- earned_exercise → earned_exercise
- earned_achievement → earned_achievement
- spent_hint → spent_hint
- refund → refund
- admin_adjustment → admin_adjustment
MAPEAR:
- earned_daily_bonus → earned_daily
- earned_rank_promotion → earned_rank
- spent_unlock_content → spent_powerup (o admin_adjustment según contexto)
- spent_customization → spent_powerup (o admin_adjustment según contexto)
- gift → bonus
AGREGAR (nuevos en v2.0):
- earned_module (nuevo)
- earned_streak (nuevo)
- earned_bonus (nuevo)
- spent_powerup (nuevo)
- spent_retry (nuevo)
- welcome_bonus (nuevo)
Referencias detalladas P1.1.6 y P1.1.7 - notification_priority/channel:
- DDL:
apps/database/ddl/schemas/public/enums/notification_priority.sql - DDL:
apps/database/ddl/schemas/public/enums/notification_channel.sql - Estado: ENUMs huérfanos (NO usados en ninguna tabla)
- Tabla notifications: NO tiene columnas priority ni channel
- Decisión requerida:
- Verificar en
TYPES-NOTIFICATIONS.mdsi deben existir - Si SÍ: Agregar columnas a tabla notifications + migrar ENUMs
- Si NO: Eliminar ENUMs huérfanos
- Verificar en
- Acción: Consultar documentación oficial primero
2.2.2 ENUMs → educational_content (8 ENUMs)
| ID | ENUM | Ubicación Actual | Debe ir a | Tablas Afectadas | Estado |
|---|---|---|---|---|---|
| P1.2.1 | exercise_type | public | educational_content | exercises | ⏳ PENDIENTE |
| P1.2.2 | cognitive_level | public | educational_content | exercises | ⏳ PENDIENTE |
| P1.2.3 | difficulty_level | public | educational_content | exercises, achievements | ⏳ PENDIENTE |
| P1.2.4 | module_status | public | educational_content | modules | ⏳ PENDIENTE |
| P1.2.5 | progress_status | public | progress_tracking | module_progress | ⏳ PENDIENTE |
| P1.2.6 | attempt_status | public | progress_tracking | exercise_attempts | ⏳ PENDIENTE |
| P1.2.7 | attempt_result | public | progress_tracking | exercise_attempts | ⏳ PENDIENTE |
| P1.2.8 | processing_status | public | content_management | media_files | ⏳ PENDIENTE |
Nota: difficulty_level es usado por dos schemas (educational_content.exercises y gamification_system.achievements). Decidir ubicación final o mantener en public.
2.2.3 ENUMs → content_management (4 ENUMs)
| ID | ENUM | Ubicación Actual | Debe ir a | Tablas Afectadas | Estado |
|---|---|---|---|---|---|
| P1.3.1 | content_type | public | content_management | content_items | ⏳ PENDIENTE |
| P1.3.2 | content_status | public | content_management | content_items | ⏳ PENDIENTE |
| P1.3.3 | media_type | public | content_management o storage | media_files | ⏳ PENDIENTE |
| P1.3.4 | processing_status | public | content_management | (duplicado de P1.2.8) | ⏳ PENDIENTE |
2.2.4 ENUMs → auth_management / social_features (6 ENUMs)
| ID | ENUM | Ubicación Actual | Debe ir a | Tablas Afectadas | Estado |
|---|---|---|---|---|---|
| P1.4.1 | gamilit_role | public | auth_management | user_roles | ⏳ PENDIENTE |
| P1.4.2 | user_status | public | auth_management | users | ⏳ PENDIENTE |
| P1.4.3 | classroom_role | public | social_features | classroom_members | ⏳ PENDIENTE |
| P1.4.4 | team_role | public | social_features | team_members | ⏳ PENDIENTE |
| P1.4.5 | friendship_status | public | social_features | friendships | ⏳ PENDIENTE |
| P1.4.6 | setting_type | public | system_configuration | system_settings | ⏳ PENDIENTE |
2.2.5 ENUMs → audit_logging (4 ENUMs)
| ID | ENUM | Ubicación Actual | Debe ir a | Tablas Afectadas | Estado |
|---|---|---|---|---|---|
| P1.5.1 | audit_action | public | audit_logging | audit_logs | ⏳ PENDIENTE |
| P1.5.2 | log_level | public | audit_logging | system_logs | ⏳ PENDIENTE |
| P1.5.3 | alert_severity | public | audit_logging | system_alerts | ⏳ PENDIENTE |
| P1.5.4 | alert_status | public | audit_logging | system_alerts | ⏳ PENDIENTE |
2.3 TABLAS MAL UBICADAS (9 incidencias)
2.3.1 Sistema de Assignments (6 tablas) - public → educational_content
| ID | Tabla | Ubicación Actual | Debe ir a | Razón | Estado |
|---|---|---|---|---|---|
| P2.1 | assignments | public | educational_content | Funcionalidad educativa | ⏳ PENDIENTE |
| P2.2 | assignment_classrooms | public | educational_content | Relación con assignments | ⏳ PENDIENTE |
| P2.3 | assignment_exercises | public | educational_content | Relación con assignments | ⏳ PENDIENTE |
| P2.4 | assignment_students | public | educational_content | Relación con assignments | ⏳ PENDIENTE |
| P2.5 | assignment_submissions | public | educational_content | Relación con assignments | ⏳ PENDIENTE |
| P2.9 | teacher_notes | public | educational_content | Funcionalidad educativa | ⏳ PENDIENTE |
Referencias:
- DDL:
apps/database/ddl/schemas/public/tables/assignments.sql - DDL:
apps/database/ddl/schemas/public/tables/assignment_classrooms.sql - DDL:
apps/database/ddl/schemas/public/tables/assignment_exercises.sql - DDL:
apps/database/ddl/schemas/public/tables/assignment_students.sql - DDL:
apps/database/ddl/schemas/public/tables/assignment_submissions.sql - DDL:
apps/database/ddl/schemas/public/tables/teacher_notes.sql
Acción: Mover todo el sistema de assignments en bloque (6 tablas + índices + triggers relacionados)
Complejidad: ALTA
- 6 tablas con relaciones FK entre ellas
- Índices asociados
- Posibles triggers
- Backend entities a actualizar
Prioridad: P1 - ALTO (arquitectura inconsistente)
2.3.2 Tablas Duplicadas (3 tablas) - ✅ FALSOS POSITIVOS
Documentadas en sección 2.1.1
2.4 CONTRADICCIONES CRÍTICAS RESUELTAS
CC1: NotificationType - 3 Definiciones Diferentes ✅ COMPLETADO
Problema: 0% de coincidencia entre 3 fuentes
- DDL: 7 valores legacy + TEXT con CHECK (6 valores incorrectos)
- Backend Constants: 6 valores incompletos
- Entity: Definición local desactualizada
Solución aplicada:
- ✅ DDL ENUM:
apps/database/ddl/schemas/public/enums/notification_type.sql→ 11 valores - ✅ DDL tabla:
apps/database/ddl/schemas/gamification_system/tables/08-notifications.sql→ usa ENUM - ✅ Migration:
apps/database/migrations/2025-11-07-align-notification-type-with-docs.sql - ✅ Constants:
apps/backend/src/shared/constants/enums.constants.ts→ NotificationTypeEnum (11) - ✅ Entity:
apps/backend/src/modules/notifications/entities/notification.entity.ts→ usa constants
Valores finales (11):
'achievement_unlocked', 'rank_up', 'friend_request', 'guild_invitation',
'mission_completed', 'level_up', 'message_received', 'system_announcement',
'ml_coins_earned', 'streak_milestone', 'exercise_feedback'
Documentación: docs/02-especificaciones-tecnicas/tipos-compartidos/TYPES-NOTIFICATIONS.md
CC2: Notification Entity Duplicada ✅ COMPLETADO
Problema: Entity en 2 ubicaciones
/modules/notifications/entities/notification.entity.ts(correcta)/modules/gamification/entities/notification.entity.ts(duplicada)
Solución: Ya eliminada en sesión anterior, validado 2025-11-07
CC3: MayaRank - Documentación Desactualizada ✅ COMPLETADO
Problema: Docs advertían migración pendiente pero ya estaba corregida (2025-11-03)
Solución aplicada:
- ✅ Docs actualizados:
docs/02-especificaciones-tecnicas/tipos-compartidos/TYPES-GAMIFICATION.md - ✅ Estado actual: DDL correcto desde 2025-11-03
- ✅ Valores:
'Ajaw', 'Nacom', 'Ah K''in', 'Halach Uinic', 'K''uk''ulkan'
CC4: Guild vs Team Terminology ⏳ PENDIENTE (P1)
Problema: Documentación usa "Guild", código usa "Team"
Afectados: 21+ archivos
- Tablas:
teams,team_members,team_challenges,team_role - ENUM: notification_type valor
guild_invitation✅ ya corregido en notification - Pero tablas de teams aún usan "team"
Decisión: P1-ALTO, requiere refactoring mayor (8-12 horas estimadas)
Plan detallado: Ver apps/database/docs/REPORTE-FUENTE-DE-VERDAD-2025-11-07.md sección C4
Prioridad: P1 - Breaking changes
3. Mapa de Referencias
3.1 Estructura de Directorios
apps/database/
├── ddl/
│ ├── 00-prerequisites.sql # ENUMs base (algunos desactualizados)
│ └── schemas/
│ ├── public/
│ │ ├── enums/ # 26 ENUMs (20 activos, 2 migrados, 4+ huérfanos)
│ │ │ ├── _MAP.md # ✅ ACTUALIZADO con migraciones
│ │ │ ├── notification_type.sql # ✅ ACTUALIZADO v2.0
│ │ │ ├── comodin_type.sql # ⏳ MIGRAR
│ │ │ ├── transaction_type.sql # ⏳ MIGRAR (legacy 10 valores)
│ │ │ └── ...
│ │ └── tables/ # 6 tablas de assignments
│ │ ├── assignments.sql
│ │ ├── assignment_*.sql
│ │ └── teacher_notes.sql
│ ├── gamification_system/
│ │ ├── enums/
│ │ │ ├── maya_rank.sql # ✅ CORRECTO
│ │ │ ├── achievement_category.sql # ✅ CREADO
│ │ │ ├── achievement_type.sql # ✅ CREADO
│ │ │ └── transaction_type.sql # ✅ CREADO (14 valores)
│ │ └── tables/
│ │ ├── 03-achievements.sql # ✅ ACTUALIZADO usa gamification_system ENUMs
│ │ ├── 05-ml_coins_transactions.sql # ✅ ACTUALIZADO usa transaction_type ENUM
│ │ ├── 07-comodines_inventory.sql
│ │ └── 08-notifications.sql # ✅ ACTUALIZADO usa notification_type ENUM
│ ├── educational_content/
│ │ └── tables/
│ │ └── 02-exercises.sql # Usa public.comodin_type[] ⏳ PENDIENTE
│ └── ...
├── migrations/
│ ├── 2025-11-07-align-notification-type-with-docs.sql # ✅ COMPLETO
│ ├── 2025-11-07-fix-achievement-enums-schema.sql # ✅ COMPLETO
│ └── 2025-11-0X-sync-transaction-type-enum.sql # ⏳ PENDIENTE CREAR
└── docs/
├── TRACKING-CORRECCIONES.md # ✅ v1.4 - Tracking principal
├── REPORTE-VALIDACION-2025-11-07.md
├── REPORTE-CONTRADICCIONES-CRITICAS-2025-11-07.md
├── REPORTE-FUENTE-DE-VERDAD-2025-11-07.md
├── REPORTE-VALIDACION-DUPLICACIONES-2025-11-07.md
├── RESUMEN-EJECUTIVO-SESION-2025-11-07.md
├── ANALISIS-ENUMS-GAMIFICATION-2025-11-07.md # ✅ Análisis detallado ENUMs
└── MAPA-INCIDENCIAS-BASE-DATOS.md # 📍 ESTE DOCUMENTO
docs/02-especificaciones-tecnicas/
├── tipos-compartidos/
│ ├── TYPES-NOTIFICATIONS.md # 📖 Fuente verdad NotificationType (11 valores)
│ └── TYPES-GAMIFICATION.md # 📖 Fuente verdad TransactionType (14 valores)
└── trazabilidad/
└── 05-realtime-notifications.md # 📖 Arquitectura notifications
apps/backend/src/
├── shared/constants/
│ └── enums.constants.ts # ✅ ACTUALIZADO NotificationTypeEnum (11)
└── modules/
├── notifications/entities/
│ └── notification.entity.ts # ✅ ACTUALIZADO usa constants
└── gamification/entities/
├── achievement.entity.ts # ⏳ VALIDAR usa gamification_system ENUMs
└── ml-coins-transaction.entity.ts # ⏳ VALIDAR transaction_type
3.2 Índice de Archivos por Incidencia
NotificationType (CC1) - ✅ COMPLETADO
DDL:
apps/database/ddl/schemas/public/enums/notification_type.sql ✅
apps/database/ddl/schemas/gamification_system/tables/08-notifications.sql ✅
Migration:
apps/database/migrations/2025-11-07-align-notification-type-with-docs.sql ✅
Backend:
apps/backend/src/shared/constants/enums.constants.ts ✅
apps/backend/src/modules/notifications/entities/notification.entity.ts ✅
Docs:
docs/02-especificaciones-tecnicas/tipos-compartidos/TYPES-NOTIFICATIONS.md 📖
Achievement ENUMs (P1.1.1, P1.1.2) - ✅ COMPLETADO
DDL:
apps/database/ddl/schemas/gamification_system/enums/achievement_category.sql ✅
apps/database/ddl/schemas/gamification_system/enums/achievement_type.sql ✅
apps/database/ddl/schemas/gamification_system/tables/03-achievements.sql ✅
apps/database/ddl/schemas/public/enums/_MAP.md ✅ (marcado como migrado)
Migration:
apps/database/migrations/2025-11-07-fix-achievement-enums-schema.sql ✅
Backend:
apps/backend/src/modules/gamification/entities/achievement.entity.ts ⏳ VALIDAR
Docs:
docs/02-especificaciones-tecnicas/tipos-compartidos/TYPES-GAMIFICATION.md 📖
TransactionType (P1.1.4) - ⏳ DDL LISTO, FALTA MIGRATION
DDL:
apps/database/ddl/schemas/public/enums/transaction_type.sql (legacy 10 valores)
apps/database/ddl/schemas/gamification_system/enums/transaction_type.sql ✅ NUEVO (14)
apps/database/ddl/schemas/gamification_system/tables/05-ml_coins_transactions.sql ✅
Migration:
apps/database/migrations/2025-11-0X-sync-transaction-type-enum.sql ⏳ CREAR
Backend:
apps/backend/src/modules/gamification/entities/ml-coins-transaction.entity.ts ⏳ VALIDAR
Docs:
docs/02-especificaciones-tecnicas/tipos-compartidos/TYPES-GAMIFICATION.md:217-230 📖
apps/database/docs/ANALISIS-ENUMS-GAMIFICATION-2025-11-07.md 📋
ComodinType (P1.1.3) - ⏳ PENDIENTE
DDL:
apps/database/ddl/schemas/public/enums/comodin_type.sql (3 valores)
apps/database/ddl/schemas/educational_content/tables/02-exercises.sql:46 (usa ARRAY)
Migration:
⏳ CREAR: 2025-11-0X-migrate-comodin-type-enum.sql
Backend:
apps/backend/src/modules/exercises/entities/exercise.entity.ts ⏳ VALIDAR
Docs:
docs/02-especificaciones-tecnicas/tipos-compartidos/TYPES-GAMIFICATION.md 📖
Assignments (P2.1-P2.5, P2.9) - ⏳ PENDIENTE
DDL:
apps/database/ddl/schemas/public/tables/assignments.sql
apps/database/ddl/schemas/public/tables/assignment_classrooms.sql
apps/database/ddl/schemas/public/tables/assignment_exercises.sql
apps/database/ddl/schemas/public/tables/assignment_students.sql
apps/database/ddl/schemas/public/tables/assignment_submissions.sql
apps/database/ddl/schemas/public/tables/teacher_notes.sql
Migration:
⏳ CREAR: 2025-11-XX-migrate-assignments-to-educational-content.sql
Backend:
⏳ BUSCAR entities de assignments
4. Estado de Correcciones
4.1 Completadas (8)
| ID | Incidencia | Tipo | Fecha | Archivos |
|---|---|---|---|---|
| C2.1 | maya_rank duplicado | ENUM | 2025-11-07 | 1 migration |
| C2.2 | rango_maya legacy | ENUM | 2025-11-07 | - |
| C1.1 | classrooms duplicado | Tabla | 2025-11-07 | Falso positivo |
| C1.2 | classroom_members duplicado | Tabla | 2025-11-07 | Falso positivo |
| C1.3 | notifications duplicado | Tabla | 2025-11-07 | Falso positivo |
| P1.1.5 | notification_type sincronización | ENUM | 2025-11-07 | 5 archivos |
| P1.1.1 | achievement_category referencia | ENUM | 2025-11-07 | 4 archivos |
| P1.1.2 | achievement_type validación | ENUM | 2025-11-07 | 2 archivos |
4.2 En Progreso (1)
| ID | Incidencia | Tipo | Estado Actual | Falta |
|---|---|---|---|---|
| P1.1.4 | transaction_type | ENUM | DDL listo | Migration |
4.3 Pendientes P0-Críticas (0)
Todas las P0 completadas o en progreso.
4.4 Pendientes P1-Alto (3)
| ID | Incidencia | Complejidad | Estimado |
|---|---|---|---|
| P1.1.3 | comodin_type migración | MEDIA | 2-3h |
| P2.1-P2.9 | Assignments migración | ALTA | 6-8h |
| CC4 | Guild vs Team refactoring | MUY ALTA | 8-12h |
4.5 Pendientes P2-Medio (28 ENUMs)
Ver secciones 2.2.2, 2.2.3, 2.2.4, 2.2.5 para lista completa
5. Incidencias Detalladas
5.1 CRÍTICO: transaction_type - Desincronización entre 3 fuentes
ID: P1.1.4 Tipo: ENUM mal ubicado + Desincronización Prioridad: P0 - CRÍTICO Estado: ⏳ DDL listo, falta migration
Problema:
- ENUM en
public.transaction_typecon 10 valores legacy - Tabla usa
TEXTcon CHECK constraint de 12 valores - Documentación especifica 14 valores oficiales
- 0% de coincidencia entre las 3 fuentes
Fuentes:
A) public.transaction_type (10 valores - legacy):
-- apps/database/ddl/schemas/public/enums/transaction_type.sql
'earned_exercise', 'earned_achievement', 'earned_daily_bonus', 'earned_rank_promotion',
'spent_hint', 'spent_unlock_content', 'spent_customization',
'refund', 'admin_adjustment', 'gift'
B) ml_coins_transactions CHECK constraint (12 valores - tabla):
-- apps/database/ddl/schemas/gamification_system/tables/05-ml_coins_transactions.sql:47
'earned_exercise', 'earned_module', 'earned_achievement', 'earned_rank', 'earned_streak',
'spent_powerup', 'spent_hint', 'spent_retry',
'admin_adjustment', 'refund', 'bonus', 'welcome_bonus'
C) TYPES-GAMIFICATION.md (14 valores - documentación oficial):
// docs/02-especificaciones-tecnicas/tipos-compartidos/TYPES-GAMIFICATION.md:217-230
'earned_exercise', 'earned_module', 'earned_achievement', 'earned_rank', 'earned_streak',
'earned_daily', 'earned_bonus',
'spent_powerup', 'spent_hint', 'spent_retry',
'admin_adjustment', 'refund', 'bonus', 'welcome_bonus'
Solución implementada:
✅ 1. Creado ENUM correcto (14 valores):
apps/database/ddl/schemas/gamification_system/enums/transaction_type.sql
✅ 2. Actualizado DDL tabla:
apps/database/ddl/schemas/gamification_system/tables/05-ml_coins_transactions.sql
- Cambiado: transaction_type text → transaction_type gamification_system.transaction_type
- Eliminado: CHECK constraint
⏳ 3. FALTA: Migration script
Crear: apps/database/migrations/2025-11-0X-sync-transaction-type-enum.sql
Debe incluir:
- Pre-validación de valores actuales en tabla
- Mapeo de valores legacy (ver mapeo en sección 2.2.1)
- Conversión TEXT → ENUM
- Eliminación CHECK constraint
- Post-validación
- Rollback documentado
Mapeo de valores legacy → v2.0:
-- Valores que se mantienen igual (5):
'earned_exercise' → 'earned_exercise'
'earned_achievement' → 'earned_achievement'
'spent_hint' → 'spent_hint'
'refund' → 'refund'
'admin_adjustment' → 'admin_adjustment'
-- Valores a mapear (5):
'earned_daily_bonus' → 'earned_daily'
'earned_rank_promotion' → 'earned_rank'
'spent_unlock_content' → 'spent_powerup' (o 'admin_adjustment' según metadata)
'spent_customization' → 'spent_powerup' (o 'admin_adjustment' según metadata)
'gift' → 'bonus'
-- Valores del CHECK constraint ya compatibles (7):
'earned_module', 'earned_rank', 'earned_streak', 'spent_powerup', 'spent_retry', 'bonus', 'welcome_bonus'
-- Valores nuevos en v2.0 (no requieren mapeo, son futuros):
'earned_daily', 'earned_bonus'
Query de pre-validación sugerida:
-- Ver distribución actual de valores
SELECT transaction_type, COUNT(*) as count
FROM gamification_system.ml_coins_transactions
GROUP BY transaction_type
ORDER BY count DESC;
-- Verificar valores que NO están en v2.0
SELECT DISTINCT transaction_type
FROM gamification_system.ml_coins_transactions
WHERE transaction_type NOT IN (
'earned_exercise', 'earned_module', 'earned_achievement', 'earned_rank', 'earned_streak',
'earned_daily', 'earned_bonus',
'spent_powerup', 'spent_hint', 'spent_retry',
'admin_adjustment', 'refund', 'bonus', 'welcome_bonus'
);
Archivos a validar en backend:
apps/backend/src/modules/gamification/entities/ml-coins-transaction.entity.ts
apps/backend/src/modules/gamification/services/ml-coins.service.ts
apps/backend/src/shared/constants/enums.constants.ts (crear TransactionTypeEnum)
Estimado: 3-4 horas (migration + validación + testing)
5.2 ALTO: comodin_type - Migración con ARRAY type
ID: P1.1.3 Tipo: ENUM mal ubicado Prioridad: P1 - ALTO Estado: ⏳ PENDIENTE
Problema:
- ENUM en
public.comodin_typepero debe estar engamification_system - Usado en
exercises.comodines_allowedcomo ARRAY type (public.comodin_type[]) - Conversión ARRAY requiere estrategia especial
Ubicación actual:
-- apps/database/ddl/schemas/public/enums/comodin_type.sql
CREATE TYPE public.comodin_type AS ENUM ('pistas', 'vision_lectora', 'segunda_oportunidad');
Uso:
-- apps/database/ddl/schemas/educational_content/tables/02-exercises.sql:46
comodines_allowed public.comodin_type[] DEFAULT ARRAY['pistas'::public.comodin_type, 'vision_lectora'::public.comodin_type, 'segunda_oportunidad'::public.comodin_type]
Solución:
- Crear ENUM en gamification_system:
CREATE TYPE gamification_system.comodin_type AS ENUM ('pistas', 'vision_lectora', 'segunda_oportunidad');
- Migration con conversión ARRAY:
-- Paso 1: Convertir a text[]
ALTER TABLE educational_content.exercises
ALTER COLUMN comodines_allowed TYPE text[]
USING comodines_allowed::text[];
-- Paso 2: Aplicar nuevo ENUM
ALTER TABLE educational_content.exercises
ALTER COLUMN comodines_allowed TYPE gamification_system.comodin_type[]
USING comodines_allowed::text[]::gamification_system.comodin_type[];
-- Paso 3: Eliminar public.comodin_type
DROP TYPE IF EXISTS public.comodin_type CASCADE;
- Actualizar DDL:
apps/database/ddl/schemas/gamification_system/enums/comodin_type.sql (crear)
apps/database/ddl/schemas/educational_content/tables/02-exercises.sql (actualizar referencia)
Archivos a validar en backend:
apps/backend/src/modules/exercises/entities/exercise.entity.ts
Complejidad: MEDIA (conversión ARRAY) Estimado: 2-3 horas
5.3 ALTO: Assignments - Sistema completo a migrar
ID: P2.1-P2.9 Tipo: Tablas mal ubicadas Prioridad: P1 - ALTO Estado: ⏳ PENDIENTE
Problema:
- 6 tablas del sistema de assignments en
publicschema - Funcionalidad educativa → debe estar en
educational_content - Rompe arquitectura modular
Tablas a migrar:
assignments- Tabla principalassignment_classrooms- Relación N:N assignments ↔ classroomsassignment_exercises- Relación N:N assignments ↔ exercisesassignment_students- Relación N:N assignments ↔ studentsassignment_submissions- Entregas de estudiantesteacher_notes- Notas de profesores
DDL ubicaciones actuales:
apps/database/ddl/schemas/public/tables/assignments.sql
apps/database/ddl/schemas/public/tables/assignment_classrooms.sql
apps/database/ddl/schemas/public/tables/assignment_exercises.sql
apps/database/ddl/schemas/public/tables/assignment_students.sql
apps/database/ddl/schemas/public/tables/assignment_submissions.sql
apps/database/ddl/schemas/public/tables/teacher_notes.sql
Objetos relacionados:
- Índices:
apps/database/ddl/schemas/public/indexes/idx_assignment_*.sql - Triggers: Posiblemente
trg_assignment_*.sql - Vistas:
apps/database/ddl/schemas/public/views/01-assignment_submission_stats.sql
Complejidad: ALTA
- 6 tablas con FKs entre ellas
- FK a otras schemas (classrooms → social_features, students → auth_management)
- Índices y triggers asociados
- Vista materializada posible
- Backend entities
Estrategia de migración:
- Crear tablas en
educational_contentschema - Copiar datos (INSERT SELECT)
- Actualizar FKs en otras tablas que apuntan a assignments
- Actualizar backend entities
- Testing exhaustivo
- Deprecar tablas en public
- Eliminar después de período de gracia
Migration script: 2025-11-XX-migrate-assignments-to-educational-content.sql
Estimado: 6-8 horas (alta complejidad por FKs y datos)
5.4 MEDIO: notification_priority y notification_channel - ENUMs huérfanos
ID: P1.1.6, P1.1.7 Tipo: ENUMs huérfanos (no usados) Prioridad: P2 - MEDIO Estado: ⏳ REQUIERE DECISIÓN
Problema:
- ENUMs existen en public pero NO son usados por ninguna tabla
- Tabla
notificationsNO tiene columnasprioritynichannel - Decisión requerida: ¿eliminar o implementar?
Ubicación actual:
-- apps/database/ddl/schemas/public/enums/notification_priority.sql
CREATE TYPE public.notification_priority AS ENUM ('low', 'medium', 'high', 'critical');
-- apps/database/ddl/schemas/public/enums/notification_channel.sql
CREATE TYPE public.notification_channel AS ENUM ('in_app', 'email', 'push', 'sms');
Verificación:
-- Tabla notifications NO tiene estas columnas
SELECT column_name, data_type
FROM information_schema.columns
WHERE table_schema = 'gamification_system'
AND table_name = 'notifications';
-- Resultado: id, user_id, type, title, message, data, read, created_at, updated_at
-- NO hay: priority, channel
Opciones:
Opción A: Eliminar ENUMs huérfanos
- Si no están en
TYPES-NOTIFICATIONS.md - Si no se planea sistema multi-canal
- Limpiar deuda técnica
Opción B: Implementar funcionalidad
- Si están en especificación oficial
- Agregar columnas a tabla notifications
- Migration para agregar columnas + valores default
- Migrar ENUMs a gamification_system
Opción C: Mantener para futuro
- Si funcionalidad está planeada
- Migrar a gamification_system pero no usar aún
- Documentar como "futuro"
Acción inmediata:
- Consultar
TYPES-NOTIFICATIONS.mdy05-realtime-notifications.md - Verificar si NotificationPriority o NotificationChannel están especificados
- Decidir opción A, B o C
Referencias a verificar:
docs/02-especificaciones-tecnicas/tipos-compartidos/TYPES-NOTIFICATIONS.md
docs/02-especificaciones-tecnicas/trazabilidad/05-realtime-notifications.md
Si Opción B (implementar):
-- Migration agregar columnas
ALTER TABLE gamification_system.notifications
ADD COLUMN priority gamification_system.notification_priority DEFAULT 'medium',
ADD COLUMN channel gamification_system.notification_channel DEFAULT 'in_app';
-- Crear índices
CREATE INDEX idx_notifications_priority ON gamification_system.notifications(priority);
CREATE INDEX idx_notifications_channel ON gamification_system.notifications(channel);
Estimado: 1-2 horas (decisión + implementación si aplica)
6. Contexto para Siguiente Agente
6.1 Trabajo Completado (Sesión 2025-11-07)
Principio establecido:
- "Documentación como Fuente de Verdad"
- Cuando hay conflicto: Docs > Código
Correcciones P0 completadas:
- ✅ NotificationType: Sincronizado DDL ↔ Constants ↔ Entity ↔ Docs (11 valores)
- ✅ Achievement ENUMs: Corregidas referencias de public a gamification_system
- ✅ MayaRank: Documentación actualizada
- ✅ Validación duplicaciones: 3 falsos positivos identificados
ENUMs migrados (5):
- notification_type (11 valores)
- achievement_category (7 valores)
- achievement_type (4 valores)
- maya_rank (5 valores) - sesión anterior
- rango_maya (eliminado)
DDL actualizados:
- notification_type.sql (ENUM)
- notifications.sql (tabla)
- achievement_category.sql (ENUM)
- achievement_type.sql (ENUM)
- achievements.sql (tabla)
- transaction_type.sql (ENUM) - NUEVO 14 valores
- ml_coins_transactions.sql (tabla) - usa ENUM
Migrations creados (2):
- 2025-11-07-align-notification-type-with-docs.sql (completo y probado lógicamente)
- 2025-11-07-fix-achievement-enums-schema.sql (completo y probado lógicamente)
Documentación creada (6 reportes):
- REPORTE-VALIDACION-2025-11-07.md
- REPORTE-CONTRADICCIONES-CRITICAS-2025-11-07.md
- REPORTE-FUENTE-DE-VERDAD-2025-11-07.md
- REPORTE-VALIDACION-DUPLICACIONES-2025-11-07.md
- RESUMEN-EJECUTIVO-SESION-2025-11-07.md
- ANALISIS-ENUMS-GAMIFICATION-2025-11-07.md
6.2 Próximos Pasos Recomendados (Prioridad)
PASO 1: Completar transaction_type (P0)
Estimado: 3-4 horas Estado: DDL listo, falta migration
Tareas:
-
Crear migration:
2025-11-0X-sync-transaction-type-enum.sql- Pre-validación con query de distribución actual
- Mapeo de valores legacy (ver sección 5.1)
- Conversión TEXT → ENUM
- Eliminación CHECK constraint
- Post-validación
- Rollback documentado
-
Actualizar backend:
- Crear
TransactionTypeEnumen constants - Actualizar entity ml-coins-transaction.entity.ts
- Validar services que usan transaction_type
- Crear
-
Testing en staging
Archivos:
CREAR: apps/database/migrations/2025-11-0X-sync-transaction-type-enum.sql
VALIDAR: apps/backend/src/modules/gamification/entities/ml-coins-transaction.entity.ts
CREAR: apps/backend/src/shared/constants/enums.constants.ts (agregar TransactionTypeEnum)
Referencias:
- Sección 5.1 de este documento (mapeo detallado)
ANALISIS-ENUMS-GAMIFICATION-2025-11-07.mdTYPES-GAMIFICATION.md:217-230
PASO 2: Decidir sobre notification_priority/channel (P2)
Estimado: 1-2 horas Estado: Requiere decisión
Tareas:
- Leer
TYPES-NOTIFICATIONS.mdcompleto - Leer
05-realtime-notifications.md(trazabilidad) - Determinar si priority/channel son parte de especificación
- Elegir Opción A (eliminar), B (implementar), o C (mantener futuro)
- Implementar decisión
Si Opción A (eliminar):
-- Verificar que nadie usa
SELECT COUNT(*) FROM information_schema.columns
WHERE udt_name IN ('notification_priority', 'notification_channel');
-- Si 0, eliminar
DROP TYPE IF EXISTS public.notification_priority;
DROP TYPE IF EXISTS public.notification_channel;
Si Opción B (implementar):
- Ver sección 5.4 para migration de agregar columnas
- Migrar ENUMs a gamification_system
- Actualizar entity
Referencias:
- Sección 5.4 de este documento
TYPES-NOTIFICATIONS.md05-realtime-notifications.md
PASO 3: Migrar comodin_type (P1)
Estimado: 2-3 horas Estado: Pendiente, complejidad media (ARRAY type)
Tareas:
- Crear ENUM en gamification_system
- Crear migration con conversión ARRAY
- Actualizar DDL exercises.sql
- Validar backend entity
Archivos:
CREAR: apps/database/ddl/schemas/gamification_system/enums/comodin_type.sql
CREAR: apps/database/migrations/2025-11-0X-migrate-comodin-type-enum.sql
ACTUALIZAR: apps/database/ddl/schemas/educational_content/tables/02-exercises.sql
VALIDAR: apps/backend/src/modules/exercises/entities/exercise.entity.ts
Referencias:
- Sección 5.2 de este documento (estrategia ARRAY)
ANALISIS-ENUMS-GAMIFICATION-2025-11-07.md
PASO 4: Migrar sistema assignments (P1)
Estimado: 6-8 horas Estado: Pendiente, complejidad alta
Tareas:
- Analizar FKs y dependencias
- Crear DDL en educational_content
- Crear migration completo (6 tablas)
- Validar backend entities
- Testing exhaustivo
Archivos:
CREAR: apps/database/ddl/schemas/educational_content/tables/*.sql (6 tablas)
CREAR: apps/database/migrations/2025-11-XX-migrate-assignments-to-educational-content.sql
BUSCAR: Backend entities de assignments
Referencias:
- Sección 5.3 de este documento
TRACKING-CORRECCIONES.mdsección P2.1-P2.9
PASO 5: Resto de ENUMs (P2)
Estimado: Variable, 20-30 horas total Estado: 28 ENUMs pendientes
Priorizar en orden:
- ENUMs de gamification_system (metric_type, aggregation_period, social_event_type)
- ENUMs de educational_content (exercise_type, cognitive_level, difficulty_level, module_status)
- ENUMs de auth/social (gamilit_role, user_status, classroom_role, team_role, friendship_status)
- ENUMs de audit (audit_action, log_level, alert_severity, alert_status)
Estrategia: Migrar por grupos temáticos (todos los de un schema en un mismo sprint)
Referencias:
- Secciones 2.2.2, 2.2.3, 2.2.4, 2.2.5 de este documento
TRACKING-CORRECCIONES.md
6.3 Herramientas y Comandos Útiles
Verificar ENUMs en BD actual:
SELECT n.nspname as schema, t.typname as enum_name, e.enumlabel as value
FROM pg_type t
JOIN pg_enum e ON t.oid = e.enumtypid
JOIN pg_catalog.pg_namespace n ON n.oid = t.typnamespace
WHERE n.nspname IN ('public', 'gamification_system', 'educational_content', 'auth_management')
ORDER BY schema, enum_name, e.enumsortorder;
Ver qué columnas usan un ENUM:
SELECT
c.table_schema,
c.table_name,
c.column_name,
c.udt_schema,
c.udt_name
FROM information_schema.columns c
WHERE c.udt_name = 'transaction_type'; -- cambiar por ENUM deseado
Verificar triggers duplicados:
SELECT schemaname, tablename, trigger_name
FROM information_schema.triggers
WHERE schemaname = 'public'
ORDER BY tablename;
Ver distribución de valores en columna:
SELECT column_name, COUNT(*)
FROM table_name
GROUP BY column_name
ORDER BY COUNT(*) DESC;
Inventarios automáticos:
# Regenerar inventarios
cd apps/database/scripts/inventory
./generate-all-inventories.sh
# Ver ENUMs
cat apps/database/docs/inventarios/03-ENUMS-INVENTORY.md
# Ver tablas
cat apps/database/docs/inventarios/02-TABLES-INVENTORY.md
6.4 Puntos de Atención
⚠️ No ejecutar migrations en producción directamente
- Siempre probar en staging primero
- Hacer backup completo antes de cualquier migration
- Validar que post-migration queries no fallen
⚠️ Verificar backend entities después de cambios DDL
- TypeORM entities pueden tener decoradores específicos de schema
- Ejemplo:
@Column({ type: 'enum', enum: NotificationTypeEnum }) - Si se cambia schema del ENUM, entity debe especificarlo
⚠️ Values en ENUMs son case-sensitive
- PostgreSQL ENUMs distinguen mayúsculas
- Mapeo debe ser exacto
- Ejemplo:
'earned_exercise'≠'EARNED_EXERCISE'
⚠️ ARRAY types requieren conversión especial
- No se puede cambiar
type[]directamente - Requiere conversión a text[] intermedia
- Ver sección 5.2 para estrategia
⚠️ CHECK constraints y ENUMs no pueden coexistir
- Si tabla tiene CHECK constraint, eliminarlo al convertir a ENUM
- ENUM ya provee validación type-safe
- No necesitar ambos
6.5 Métricas de Progreso
Para tracking continuo:
Actualizar TRACKING-CORRECCIONES.md después de cada corrección:
- Cambiar estado de [PENDIENTE] a [COMPLETADO] ✅
- Agregar fecha de corrección
- Listar archivos modificados
- Actualizar dashboard de progreso (tabla de %)
- Actualizar sección de "Métricas de Progreso" semanal
Formato de actualización:
| P1.1.X | enum_name | public | dest_schema | tabla | [COMPLETADO] ✅ | P1 - Completado YYYY-MM-DD |
7. Checklist de Validación
Pre-Migration
- Backup de BD staging
- Backup de BD producción (si aplica)
- Leer documentación oficial relacionada
- Verificar uso actual del ENUM/tabla con queries
- Identificar funciones/triggers/vistas que usan objeto
- Notificar al equipo
Durante Migration
- Crear branch git:
db/corrections-YYYY-MM-DD-nombre - Migration tiene pre-validación
- Migration tiene post-validación
- Migration tiene rollback documentado
- Testing en staging exitoso
- Validar datos migrados correctamente
- No hay valores NULL inesperados
- Distribución de valores es coherente
Post-Migration
- Actualizar DDL files
- Actualizar backend entities si aplica
- Actualizar constants si aplica
- Actualizar TRACKING-CORRECCIONES.md
- Actualizar _MAP.md si es ENUM
- Commit con mensaje descriptivo
- Testing integration/e2e si es posible
- Deploy a producción (con plan de rollback)
8. Glosario y Abreviaciones
| Término | Significado |
|---|---|
| DDL | Data Definition Language (CREATE, ALTER, DROP) |
| ENUM | Enumerated Type (tipo de dato con valores fijos) |
| FK | Foreign Key (llave foránea) |
| SIMCO | Sistema Indexado Modular por Contexto |
| P0 | Prioridad 0 - Crítico |
| P1 | Prioridad 1 - Alto |
| P2 | Prioridad 2 - Medio |
| CHECK constraint | Constraint que valida valores con condición SQL |
| RLS | Row Level Security (políticas de seguridad a nivel fila) |
| Migration | Script SQL para evolucionar schema de BD |
| Rollback | Deshacer cambios (revertir migration) |
| Huérfano | ENUM/objeto que no es usado por ninguna tabla |
9. Contactos y Referencias
Documentación Oficial (Fuentes de Verdad)
docs/02-especificaciones-tecnicas/tipos-compartidos/
├── TYPES-NOTIFICATIONS.md # 11 notification types
├── TYPES-GAMIFICATION.md # MayaRank, Achievements, Transactions (14 types)
└── ...
docs/02-especificaciones-tecnicas/trazabilidad/
└── 05-realtime-notifications.md # Arquitectura notifications
Reportes Generados (Esta Sesión)
apps/database/docs/
├── TRACKING-CORRECCIONES.md # Tracking principal (v1.4)
├── REPORTE-VALIDACION-2025-11-07.md
├── REPORTE-CONTRADICCIONES-CRITICAS-2025-11-07.md
├── REPORTE-FUENTE-DE-VERDAD-2025-11-07.md
├── REPORTE-VALIDACION-DUPLICACIONES-2025-11-07.md
├── RESUMEN-EJECUTIVO-SESION-2025-11-07.md
├── ANALISIS-ENUMS-GAMIFICATION-2025-11-07.md
└── MAPA-INCIDENCIAS-BASE-DATOS.md # Este documento
Scripts Útiles
# Inventarios
apps/database/scripts/inventory/generate-all-inventories.sh
apps/database/scripts/inventory/list-enums.sh
apps/database/scripts/inventory/list-tables.sh
# DDL
apps/database/ddl/00-prerequisites.sql # ENUMs base
# Migrations
apps/database/migrations/2025-11-07-*.sql
Documento generado: 2025-11-07 Versión: 1.0 Para: Agente especializado en base de datos Próxima revisión: Después de completar Pasos 1-3 Mantenedor: Actualizar después de cada corrección
FIN DEL MAPA DE INCIDENCIAS
Este documento debe ser actualizado cada vez que se complete una corrección para mantener el tracking preciso.