# Inventario de Tablas - Base de Datos GAMILIT

**Fecha generación:** 2025-11-07
**Última actualización:** 2025-11-29
**Versión:** 1.2
**Total tablas:** 77+
**Método:** Análisis de archivos DDL + Validación de entities TypeORM

---

## 📑 Índice por Schema

| Schema | Tablas | % del Total | Actualizado |
|--------|--------|-------------|-------------|
| [auth_management](#auth_management-12-tablas) | 12 | 17% | 2025-11-07 |
| [gamification_system](#gamification_system-16-tablas) | 16 | 22% | **2025-11-29** |
| [public](#public-5-tablas) | 5 | 7% ✅ | **2025-11-29** |
| [social_features](#social_features-8-tablas) | 8 | 11% ✅ | **2025-11-29** |
| [audit_logging](#audit_logging-6-tablas) | 6 | 8% | 2025-11-07 |
| [content_management](#content_management-5-tablas) | 5 | 7% | 2025-11-07 |
| [progress_tracking](#progress_tracking-5-tablas) | 5 | 7% | 2025-11-07 |
| [educational_content](#educational_content-10-tablas) | 10+ | 13% | **2025-11-29** |
| [system_configuration](#system_configuration-3-tablas) | 3 | 4% | 2025-11-07 |
| [notifications](#notifications-6-tablas) | 6 | 8% ✨ | **2025-11-29** |
| [auth](#auth-1-tabla) | 1 | 1% | 2025-11-07 |
| **TOTAL** | **77+** | **100%** | |

> **Nota v1.2 (2025-11-29):**
> - Corregido errores de documentación en schema `public` (9→5 tablas)
> - Agregado schema `notifications` (6 tablas, EXT-003)
> - Movida `assignment_classrooms` de public a social_features
> - Eliminadas tablas fantasma: public.classrooms, public.notifications, public.classroom_students
> - Validadas duplicaciones potenciales: NO EXISTEN duplicados reales

---

## 🔍 Detalle de Tablas por Schema

### auth (1 tabla)

**Ubicación:** `apps/database/ddl/schemas/auth/tables/`

| # | Tabla | Propósito | Estado Doc |
|---|-------|-----------|------------|
| 1 | `users` | Tabla base de usuarios | ✅ |

**Contexto:**
- Tabla fundamental del sistema
- Extendida por `auth_management.profiles`
- Referenciada por todos los schemas

**Referencias SIMCO:**
- Seeds: `apps/database/seeds/auth/`
- Backend: `apps/backend/src/modules/auth/entities/user.entity.ts`

---

### auth_management (12 tablas)

**Ubicación:** `apps/database/ddl/schemas/auth_management/tables/`

| # | Tabla | Propósito | Estado Doc |
|---|-------|-----------|------------|
| 1 | `tenants` | Multi-tenancy (escuelas, instituciones) | ✅ |
| 2 | `auth_attempts` | Registro de intentos de autenticación | ✅ |
| 3 | `profiles` | Perfiles extendidos de usuarios | ✅ |
| 4 | `roles` | Roles del sistema (admin, teacher, student) | ✅ |
| 5 | `auth_providers` | Proveedores OAuth (Google, Facebook) | ✅ |
| 6 | `email_verification_tokens` | Tokens de verificación de email | ✅ |
| 7 | `password_reset_tokens` | Tokens de reset de contraseña | ✅ |
| 8 | `security_events` | Eventos de seguridad | ✅ |
| 9 | `user_preferences` | Preferencias de usuario | ✅ |
| 10 | `memberships` | Membresías usuario-tenant | ✅ |
| 11 | `user_sessions` | Sesiones activas de usuarios | ✅ |
| 12 | `user_suspensions` | Suspensiones de cuentas | ✅ |

**Relaciones Clave:**
- `tenants` → Raíz del multi-tenancy
- `profiles` → Extiende `auth.users`
- `memberships` → Liga users ↔ tenants
- `roles` → Define permisos (admin, teacher, student)

**Referencias SIMCO:**
- Docs: `docs/03-desarrollo/base-de-datos/schemas/auth_management/`
- Backend: `apps/backend/src/modules/auth/`, `apps/backend/src/modules/users/`
- Seeds: `apps/database/seeds/auth_management/`

---

### gamification_system (16 tablas)

**Ubicación:** `apps/database/ddl/schemas/gamification_system/tables/`
**Última actualización:** 2025-11-29

| # | Tabla | Propósito | Estado Doc | Entity TypeORM |
|---|-------|-----------|------------|----------------|
| 1 | `user_stats` | Estadísticas de usuario (puntos, nivel, racha) | ✅ | ✅ |
| 2 | `user_ranks` | Historial de rangos del usuario | ✅ | ✅ |
| 3 | `achievements` | Catálogo de logros | ✅ | ✅ |
| 4 | `user_achievements` | Logros desbloqueados por usuario | ✅ | ✅ |
| 5 | `ml_coins_transactions` | Transacciones de monedas ML (Maya Learning) | ✅ | ✅ |
| 6 | `missions` | Misiones diarias/semanales | ✅ | ✅ |
| 7 | `comodines_inventory` | Inventario de comodines (power-ups) | ✅ | ✅ |
| 8 | `notifications` | Notificaciones de gamificación | ✅ ⚠️ | ✅ |
| 9 | `leaderboard_metadata` | Metadata de leaderboards | ✅ | ✅ |
| 10 | `achievement_categories` | Categorías de logros | ✅ | ✅ |
| 11 | `active_boosts` | Boosts activos del usuario | ✅ | ✅ |
| 12 | `inventory_transactions` | Historial de transacciones de inventario | ✅ | ✅ |
| 13 | `maya_ranks` | **[NUEVO]** Configuración de rangos Maya (referencia) | ✅ | ✅ |
| 14 | `comodin_usage_log` | **[NUEVO]** Historial detallado de uso de comodines | ✅ | ✅ |
| 15 | `comodin_usage_tracking` | **[NUEVO]** Tracking agregado de uso de comodines | ✅ | ⚠️ |
| 16 | `classroom_missions` | **[NUEVO]** Misiones asignadas por classroom | ✅ | ✅ |

**⚠️ Posible Duplicación:**
- `notifications` existe en **gamification_system** Y en **public**
- **Acción requerida:** Verificar si son tablas diferentes o duplicadas

**Sistema de Rangos Maya (Actualizado 2025-11-29):**
Tabla `maya_ranks` - Configuración de referencia:
1. **Ajaw** (Orden 1) - Principiante
2. **Nacom** (Orden 2) - Guerrero
3. **Ah K'in** (Orden 3) - Sacerdote
4. **Halach Uinic** (Orden 4) - Gobernante
5. **K'uk'ulkan** (Orden 5) - Serpiente Emplumada (Maestro)

Tabla `user_ranks` - Historial de progresión del usuario con porcentaje de avance.

**Comodines (Power-ups):**
Tabla `comodin_usage_log` registra uso detallado con:
- Tipo: `pistas`, `vision_lectora`, `segunda_oportunidad`
- Contexto: exercise_id, attempt_id, module_id
- Efecto aplicado y valor proporcionado (JSONB)

**Referencias SIMCO:**
- Docs: `docs/03-desarrollo/base-de-datos/schemas/gamification_system/`
- Backend: `apps/backend/src/modules/gamification/`
- Frontend: `apps/frontend/src/features/gamification/`
- Seeds: `apps/database/seeds/gamification_system/`

---

### public (5 tablas) - ACTUALIZADO 2025-11-29

**Ubicación:** `apps/database/ddl/schemas/public/tables/`
**Estado:** ✅ **VALIDADO - Errores de documentación corregidos**
**Última actualización:** 2025-11-29

| # | Tabla | Propósito | Estado Doc | Nota |
|---|-------|-----------|------------|------|
| 1 | `assignments` | Asignaciones de ejercicios | ✅ | RF-TEACH-002 |
| 2 | `assignment_exercises` | Relación assignments ↔ exercises | ✅ | RF-TEACH-002 |
| 3 | `assignment_students` | Relación assignments ↔ students | ✅ | RF-TEACH-002 |
| 4 | `assignment_submissions` | Entregas de estudiantes | ✅ | RF-TEACH-002 |
| 5 | `teacher_notes` | Notas de profesores | ✅ | RF-TEACH-002 |

> **✅ CORREGIDO (2025-11-29):** El inventario anterior tenía errores de documentación.
>
> **Tablas que NO existen en public (eliminadas del inventario):**
> - ~~`public.classrooms`~~ → Solo existe `social_features.classrooms`
> - ~~`public.classroom_students`~~ → Solo existe `social_features.classroom_members`
> - ~~`public.notifications`~~ → Solo existe `notifications.notifications` (EXT-003)
> - ~~`public.assignment_classrooms`~~ → Movida a `social_features.assignment_classrooms`

### ✅ Duplicaciones Resueltas (2025-11-29)

| Tabla Reportada | Schema Real | Estado |
|-----------------|-------------|--------|
| `public.classrooms` | `social_features.classrooms` | ✅ NO DUPLICADA - Solo existe en social_features |
| `public.notifications` | `notifications.notifications` | ✅ NO DUPLICADA - Solo existe en notifications schema |
| `public.assignment_classrooms` | `social_features.assignment_classrooms` | ✅ MOVIDA - Documentado en RF-TEACH-002 |

### Sobre `gamification_system.notifications` (DEPRECATED)

```
⚠️ DEPRECATED: gamification_system.notifications
✅ ACTUAL: notifications.notifications (EXT-003)

La tabla gamification_system.notifications existe pero está DEPRECADA.
El sistema consolidado de notificaciones multi-canal usa notifications.notifications.
Ver: modules/notifications/entities/multichannel/notification.entity.ts
```

**Referencias SIMCO:**
- RF-TEACH-002-assignment-system.md (documentación de assignments)
- EXT-003 (Sistema Multi-Canal de Notificaciones)

---

### social_features (8 tablas)

**Ubicación:** `apps/database/ddl/schemas/social_features/tables/`
**Última actualización:** 2025-11-29

| # | Tabla | Propósito | Estado Doc |
|---|-------|-----------|------------|
| 1 | `friendships` | Relaciones de amistad entre usuarios | ✅ |
| 2 | `schools` | Escuelas | ✅ |
| 3 | `classrooms` | Aulas/Clases | ✅ ⚠️ |
| 4 | `classroom_members` | Miembros de clases | ✅ ⚠️ |
| 5 | `teams` | Equipos de estudiantes | ✅ |
| 6 | `team_members` | Miembros de equipos | ✅ |
| 7 | `team_challenges` | Desafíos entre equipos | ✅ |
| 8 | `assignment_classrooms` | **[MOVIDA 2025-11-29]** Relación assignments ↔ classrooms | ✅ |

**✅ Sin conflictos (Validado 2025-11-29):**
- `social_features.classrooms` es la ÚNICA tabla de classrooms (no existe en public)
- `social_features.classroom_members` es la ÚNICA tabla de miembros (no existe en public)
- `social_features.assignment_classrooms` fue movida desde public (2025-11-29)

**Referencias SIMCO:**
- Docs: `docs/03-desarrollo/base-de-datos/schemas/social_features/`
- Backend: `apps/backend/src/modules/social/`
- Frontend: `apps/frontend/src/features/social/`

---

### audit_logging (6 tablas)

**Ubicación:** `apps/database/ddl/schemas/audit_logging/tables/`

| # | Tabla | Propósito | Estado Doc |
|---|-------|-----------|------------|
| 1 | `audit_logs` | Logs de auditoría general | ✅ |
| 2 | `performance_metrics` | Métricas de performance del sistema | ✅ |
| 3 | `system_alerts` | Alertas del sistema | ✅ |
| 4 | `system_logs` | Logs del sistema | ✅ |
| 5 | `user_activity_logs` | Logs de actividad de usuarios | ✅ |
| 6 | `user_activity` | Actividad reciente de usuarios | ✅ |

**Patrón:**
- Todas las tablas de auditoría son append-only
- Requieren particionamiento por fecha para escalabilidad
- RLS: Solo admins pueden leer

**Referencias SIMCO:**
- Docs: `docs/03-desarrollo/base-de-datos/schemas/audit_logging/`
- Backend: `apps/backend/src/modules/audit/`

---

### content_management (5 tablas)

**Ubicación:** `apps/database/ddl/schemas/content_management/tables/`

| # | Tabla | Propósito | Estado Doc |
|---|-------|-----------|------------|
| 1 | `content_templates` | Plantillas de contenido | ✅ |
| 2 | `marie_curie_content` | Contenido de Marie Curie (personaje guía) | ✅ |
| 3 | `media_files` | Archivos multimedia | ✅ |
| 4 | `content_versions` | Versionado de contenido | ✅ |
| 5 | `flagged_content` | Contenido reportado/moderado | ✅ |

**Integración con storage:**
- `media_files` se integra con schema `storage`
- Files almacenados en MinIO/S3
- BD solo guarda metadata

**Referencias SIMCO:**
- Docs: `docs/03-desarrollo/base-de-datos/schemas/content_management/`
- Backend: `apps/backend/src/modules/content/`
- Storage: Schema `storage`, MinIO/S3

---

### progress_tracking (5 tablas)

**Ubicación:** `apps/database/ddl/schemas/progress_tracking/tables/`

| # | Tabla | Propósito | Estado Doc |
|---|-------|-----------|------------|
| 1 | `module_progress` | Progreso por módulo | ✅ |
| 2 | `learning_sessions` | Sesiones de aprendizaje | ✅ |
| 3 | `exercise_attempts` | Intentos de ejercicios | ✅ |
| 4 | `exercise_submissions` | Entregas de ejercicios | ✅ |
| 5 | `scheduled_missions` | Misiones programadas | ✅ |

**Tabla de alto tráfico:**
- `exercise_attempts` y `learning_sessions` son las más escritas
- Requiere indexes optimizados por usuario y fecha
- Candidatas para particionamiento

**Referencias SIMCO:**
- Docs: `docs/03-desarrollo/base-de-datos/schemas/progress_tracking/`
- Backend: `apps/backend/src/modules/progress/`
- Frontend: `apps/frontend/src/features/student-dashboard/`

---

### educational_content (15+ tablas)

**Ubicación:** `apps/database/ddl/schemas/educational_content/tables/`
**Última actualización:** 2025-11-29

| # | Tabla | Propósito | Estado Doc | Entity TypeORM |
|---|-------|-----------|------------|----------------|
| 1 | `modules` | Módulos educativos | ✅ | ✅ |
| 2 | `exercises` | Ejercicios/Actividades | ✅ | ✅ |
| 3 | `assessment_rubrics` | Rúbricas de evaluación | ✅ | ✅ |
| 4 | `media_resources` | Recursos multimedia educativos | ✅ | ✅ |
| 5 | `assignments` | Tareas asignadas por profesores | ✅ | ✅ |
| 6 | `assignment_exercises` | Ejercicios en una tarea | ✅ | ✅ |
| 7 | `assignment_students` | Tareas asignadas a estudiantes | ✅ | ✅ |
| 8 | `assignment_submissions` | Entregas de estudiantes | ✅ | ✅ |
| 9 | `content_approvals` | Aprobaciones de contenido | ✅ | ✅ |
| 10 | `difficulty_criteria` | **[NUEVO]** Criterios CEFR (A1-C2+) | ✅ | ✅ |
| 11 | `exercise_mechanic_mapping` | Mapeo ejercicio → mecánica | ✅ | ✅ |
| 12 | `exercise_validation_config` | Configuración de validación | ✅ | ⚠️ |
| 13 | `classroom_modules` | Módulos asignados a classrooms | ✅ | ⚠️ |
| 14 | `teacher_content` | Contenido personalizado de profesor | ✅ | ✅ |
| 15+ | _otros_ | Tablas deprecadas/migradas | ⚠️ | - |

**Tabla difficulty_criteria (CEFR Levels):**
Define criterios por nivel de dificultad:
- **Niveles:** A1, A2, B1, B2, B2+, C1, C2, C2+
- **Criterios:** vocab_range, sentence_length, time_multiplier
- **Recompensas:** base_xp, base_coins por nivel
- **Promoción:** success_rate requerido, min_exercises

**Referencias SIMCO:**
- Docs: `docs/03-desarrollo/base-de-datos/schemas/educational_content/`
- Backend: `apps/backend/src/modules/educational/`, `apps/backend/src/modules/assignments/`
- Frontend: `apps/frontend/src/features/learning/`, `apps/frontend/src/features/assignments/`

---

### system_configuration (3 tablas)

**Ubicación:** `apps/database/ddl/schemas/system_configuration/tables/`

| # | Tabla | Propósito | Estado Doc |
|---|-------|-----------|------------|
| 1 | `system_settings` | Configuración global del sistema | ✅ |
| 2 | `feature_flags` | Feature flags (A/B testing, rollout) | ✅ |
| 3 | `notification_settings` | Configuración de notificaciones | ✅ |

**Patrón Key-Value:**
- Tablas diseñadas con patrón key-value para flexibilidad
- RLS: Solo role `admin` puede modificar
- Backend cachea estos valores

**Referencias SIMCO:**
- Docs: `docs/03-desarrollo/base-de-datos/schemas/system_configuration/`
- Backend: `apps/backend/src/modules/config/`

---

### notifications (6 tablas) ✨ NUEVO - EXT-003

**Ubicación:** `apps/database/ddl/schemas/notifications/tables/`
**Estado:** ✅ **Sistema Multi-Canal de Notificaciones**
**Última actualización:** 2025-11-29

| # | Tabla | Propósito | Estado Doc |
|---|-------|-----------|------------|
| 1 | `notifications` | Notificaciones multi-canal (in_app, email, push) | ✅ |
| 2 | `notification_preferences` | Preferencias de usuario por tipo/canal | ✅ |
| 3 | `notification_logs` | Historial de envíos y resultados | ✅ |
| 4 | `notification_templates` | Plantillas de notificaciones | ✅ |
| 5 | `notification_queue` | Cola de procesamiento asíncrono | ✅ |
| 6 | `user_devices` | Dispositivos registrados para push | ✅ |

**Arquitectura EXT-003:**
- Sistema consolidado que reemplaza `gamification_system.notifications` (deprecated)
- Soporte multi-canal: in_app, email, push
- Procesamiento asíncrono mediante cola
- Templates con variables dinámicas

**Referencias SIMCO:**
- Docs: `docs/03-fase-extensiones/EXT-003-notificaciones/`
- Backend: `apps/backend/src/modules/notifications/`
- Entity: `modules/notifications/entities/multichannel/`

---

## 📊 Análisis Estadístico

### Distribución por Schema (Actualizado 2025-11-29)

```
gamification_system  ████████████████████ 16 (20%)
auth_management      ████████████████ 12 (15%)
educational_content  ██████████████ 10+ (13%)
social_features      ██████████ 8 (10%)
audit_logging        ████████ 6 (8%)
notifications        ████████ 6 (8%) ✨ NUEVO EXT-003
content_management   ██████ 5 (6%)
progress_tracking    ██████ 5 (6%)
public               ██████ 5 (6%) ✅ CORREGIDO
system_config        ████ 3 (4%)
auth                 ██ 1 (1%)
```
**Total estimado: 77+ tablas**

### Por Tipo de Funcionalidad

| Tipo | Tablas | Schemas |
|------|--------|---------|
| **Core/Auth** | 13 | auth, auth_management |
| **Features** | 33 | gamification, educational, progress, content, social |
| **System** | 9 | system_config, audit |
| **Legacy/Unclear** | 9 | public ⚠️ |

### Tablas de Alto Tráfico (Writes)

1. `progress_tracking.exercise_attempts` - Alta escritura
2. `progress_tracking.learning_sessions` - Alta escritura
3. `gamification_system.ml_coins_transactions` - Media-Alta escritura
4. `audit_logging.user_activity_logs` - Alta escritura
5. `auth_management.user_sessions` - Media escritura

**Recomendación:** Considerar particionamiento por fecha para estas tablas.

---

## 🚨 Discrepancias y Problemas Identificados

### 1. Duplicación de Tablas (CRÍTICO)

| Tabla | Schema 1 | Schema 2 | Acción |
|-------|----------|----------|--------|
| `classrooms` | social_features | public | Consolidar |
| `classroom_members/students` | social_features | public | Consolidar |
| `notifications` | gamification_system | public | Consolidar |

### 2. Tablas en Schema Incorrecto

| Tabla | Schema Actual | Schema Sugerido | Razón |
|-------|---------------|-----------------|-------|
| `assignments` | public | educational_content | Funcionalidad educativa |
| `assignment_*` (5 tablas) | public | educational_content | Funcionalidad educativa |
| `teacher_notes` | public | educational_content | Funcionalidad educativa |

### 3. Conteo de Tablas Documentadas

**Documentado originalmente:** 48 tablas
**Real:** 64 tablas
**Diferencia:** +16 tablas

**Las 16+ tablas no documentadas probablemente son:**
1. Las 9 tablas de `public` (todas sin documentar)
2. Posibles tablas nuevas en otros schemas

### 4. Schema public - Análisis Requerido

**Total de tablas en public:** 9 tablas (14% del total)

**Estado:** Todas sin documentar

**Posibles escenarios:**
1. **Legacy de migración:** Tablas del sistema anterior no migradas
2. **Desarrollo temporal:** Tablas creadas durante desarrollo
3. **Funcionalidad activa:** Sistema de assignments que debería moverse

**Recomendación:**
- **Investigar uso actual:** Consultar backend para ver si hay EntityORMentities usando estas tablas
- **Si activo:** Migrar a schemas correctos
- **Si legacy:** Crear plan de deprecación
- **Si duplicado:** Consolidar con tablas existentes

---

## 🎯 Plan de Acción

### Fase 2A: Análisis de Duplicación (Urgente)

- [ ] **Comparar esquemas:**
  ```sql
  -- Comparar public.classrooms vs social_features.classrooms
  \d public.classrooms
  \d social_features.classrooms

  -- Comparar public.notifications vs gamification_system.notifications
  \d public.notifications
  \d gamification_system.notifications
  ```

- [ ] **Verificar uso en backend:**
  ```bash
  # Buscar referencias a public.classrooms
  grep -r "public.classrooms" apps/backend/
  grep -r "social_features.classrooms" apps/backend/
  ```

- [ ] **Contar registros:**
  ```sql
  SELECT 'public.classrooms' as tabla, count(*) FROM public.classrooms
  UNION ALL
  SELECT 'social_features.classrooms', count(*) FROM social_features.classrooms;
  ```

### Fase 2B: Documentar Tablas Faltantes

- [ ] Documentar las 9 tablas de `public`
- [ ] Identificar cualquier otra tabla no documentada
- [ ] Crear diagramas ERD completos

### Fase 2C: Plan de Consolidación

Una vez identificadas las duplicaciones:

1. **Determinar tabla "correcta"** (la más usada, mejor diseño)
2. **Migrar datos** de tabla incorrecta a correcta
3. **Actualizar referencias** en backend
4. **Deprecar tabla antigua** (no eliminar inmediatamente)
5. **Validar en QA/staging**
6. **Eliminar tabla deprecated** después de período de gracia

---

## 📎 Referencias SIMCO

**Este documento es parte del sistema SIMCO (Sistema Indexado Modular por Contexto)**

### Referencias Cruzadas
- **Inventario anterior:** `01-SCHEMAS-INVENTORY.md`
- **Siguiente inventario:** `03-ENUMS-INVENTORY.md`
- **Plan maestro:** `apps/database/PLAN-ACTUALIZACION-DOCUMENTACION.md`
- **Documentación schemas:** `docs/03-desarrollo/base-de-datos/schemas/`

### Scripts Relacionados
- **Script de inventario:** `apps/database/scripts/inventory/list-tables.sh`
- **DDL Source:** `apps/database/ddl/schemas/*/tables/*.sql`
- **Seeds:** `apps/database/seeds/*/`

---

**Generado por:** Sistema de inventario automatizado SIMCO
**Método:** Análisis de estructura DDL + scripts bash
**Estado:** ⚠️ Requiere validación de duplicaciones y consolidación de public schema
**Próxima acción:** Análisis de duplicación de tablas + inventario de ENUMs
