# Esquema de 44 Tablas - GAMILIT Platform

**Épica:** EMR-001 - Migración y Robustecimiento de BD
**Fecha:** 2025-11-02
**Origen:** `/docs/03-desarrollo/base-de-datos/ESQUEMA-COMPLETO.md`

---

## Resumen Ejecutivo

- **Total de Schemas:** 9
- **Total de Tablas:** 44
- **Total de ENUMs:** 24
- **Total de Funciones:** 26
- **Total de Triggers:** 30
- **Total de Índices:** 150+

---

## 1. Distribución de Tablas por Schema

### 1.1 Schema: auth_management (9 tablas)
- `tenants` - Multi-tenant organizations
- `profiles` - Perfiles de usuario
- `user_roles` - Asignación de roles
- `memberships` - Usuario-tenant memberships
- `user_sessions` - Sesiones activas
- `auth_attempts` - Intentos de autenticación
- `password_reset_tokens` - Tokens de recuperación
- `email_verification_tokens` - Tokens de verificación
- `security_events` - Eventos de seguridad

### 1.2 Schema: gamification_system (9 tablas)
- `user_stats` - Estadísticas de gamificación
- `user_ranks` - Progresión de rangos Maya
- `achievements` - Definiciones de logros
- `user_achievements` - Logros desbloqueados
- `ml_coins_transactions` - Ledger de ML Coins
- `missions` - Misiones/quests
- `comodines_inventory` - Inventario de power-ups
- `notifications` - Notificaciones
- `leaderboard_metadata` - Metadatos de rankings

### 1.3 Schema: educational_content (4 tablas)
- `modules` - 5 módulos de Marie Curie
- `exercises` - 27 tipos de ejercicios
- `assessment_rubrics` - Rúbricas de evaluación
- `media_resources` - Recursos multimedia

### 1.4 Schema: progress_tracking (4 tablas)
- `module_progress` - Progreso por módulo
- `exercise_attempts` - Intentos de ejercicios
- `exercise_submissions` - Entregas
- `learning_sessions` - Sesiones de aprendizaje

### 1.5 Schema: social_features (7 tablas)
- `schools` - Instituciones educativas
- `classrooms` - Aulas virtuales
- `classroom_members` - Inscripciones
- `teams` - Equipos colaborativos
- `team_members` - Miembros de equipos
- `team_challenges` - Desafíos de equipos
- `friendships` - Relaciones de amistad

### 1.6 Schema: content_management (4 tablas)
- `marie_curie_content` - Contenido curado
- `media_files` - Archivos multimedia
- `content_templates` - Plantillas
- `flagged_content` - Contenido para moderación

### 1.7 Schema: system_configuration (2 tablas)
- `system_settings` - Configuración global
- `feature_flags` - Feature toggles

### 1.8 Schema: audit_logging (6 tablas)
- `audit_logs` - Trail de auditoría
- `system_logs` - Logs del sistema
- `performance_metrics` - Métricas de performance
- `user_activity_logs` - Actividad de usuarios
- `system_alerts` - Alertas del sistema
- `user_activity` - Log de actividad

### 1.9 Schema: gamilit (0 tablas)
- Solo funciones utilitarias (`now_mexico()`, `update_updated_at()`)

### 1.10 Schema: auth (1 tabla)
- `users` - Tabla de Supabase Auth (referenciada)

---

## 2. Tablas Críticas por Funcionalidad

### Autenticación y Usuarios
- `auth.users` (Supabase)
- `auth_management.profiles`
- `auth_management.user_sessions`

### Gamificación Core
- `gamification_system.user_stats`
- `gamification_system.user_ranks`
- `gamification_system.ml_coins_transactions`

### Contenido Educativo
- `educational_content.modules`
- `educational_content.exercises`

### Progreso del Estudiante
- `progress_tracking.module_progress`
- `progress_tracking.exercise_attempts`

### Social y Colaboración
- `social_features.classrooms`
- `social_features.classroom_members`
- `social_features.teams`

---

## 3. Relaciones Clave (Foreign Keys)

### Relación Central: profiles
```
auth.users (1:1) → auth_management.profiles
                         ↓ (1:1)
                   gamification_system.user_stats
                         ↓ (1:N)
                   progress_tracking.module_progress
```

### Relación Educativa: modules → exercises
```
educational_content.modules (1:N) → educational_content.exercises
                                           ↓ (1:N)
                             progress_tracking.exercise_attempts
```

### Relación Social: classrooms
```
social_features.schools (1:N) → social_features.classrooms
                                        ↓ (N:M)
                          social_features.classroom_members
                                        ↓
                          auth_management.profiles (students)
```

---

## 4. Tablas con JSONB (Flexibilidad)

### Configuraciones
- `auth_management.tenants.settings`
- `auth_management.profiles.preferences`
- `auth_management.user_roles.permissions`

### Contenido Educativo
- `educational_content.modules.content`
- `educational_content.exercises.content`
- `educational_content.exercises.config`

### Gamificación
- `gamification_system.achievements.conditions`
- `gamification_system.achievements.rewards`
- `gamification_system.missions.objectives`

### Auditoría
- `audit_logging.audit_logs.old_values`
- `audit_logging.audit_logs.new_values`

---

## 5. ENUMs Principales (24 tipos)

### Autenticación y Roles
- `gamilit_role`: student, admin_teacher, super_admin
- `user_status`: active, inactive, suspended, deleted

### Gamificación
- `rango_maya`: nacom, batab, holcatte, guerrero, mercenario
- `achievement_category`: progress, streak, completion, social, special, mastery, exploration
- `comodin_type`: pistas, vision_lectora, segunda_oportunidad

### Contenido
- `exercise_type`: 27 tipos (multiple_choice, matching, crossword, etc.)
- `difficulty_level`: beginner, intermediate, advanced
- `content_status`: draft, published, archived, under_review

### Sistema
- `module_status`: not_started, in_progress, completed, locked
- `processing_status`: uploading, processing, ready, error, optimizing

---

## 6. Zona Horaria

**Todas las tablas usan `TIMESTAMPTZ` con zona horaria de México:**
```sql
created_at TIMESTAMPTZ DEFAULT gamilit.now_mexico()
```

**Función:** `gamilit.now_mexico()` retorna `NOW() AT TIME ZONE 'America/Mexico_City'`

---

## 7. Patrones de Diseño

### Soft Delete Pattern
- Campos `is_active` y `deleted_at`

### Audit Trail Pattern
- Tabla `audit_logs` con `old_values` y `new_values` en JSONB

### Multi-tenancy Pattern
- Campo `tenant_id` en todas las tablas principales

### Event Sourcing (Partial)
- `ml_coins_transactions` con `balance_before` / `balance_after`

---

## 8. Convenciones de Nombrado

- **Schemas:** `snake_case`
- **Tablas:** `snake_case` en plural
- **Columnas:** `snake_case`
- **ENUMs:** `snake_case`
- **Funciones:** `snake_case()`

---

## 9. Grados Escolares y Materias

**Grados:** 6, 7 y 8 (primaria superior/secundaria)

**Materias:** Literatura y Ciencias

**Contenido Temático:** 5 módulos sobre Marie Curie

---

## 10. Referencias

- **Esquema Completo:** `/docs/03-desarrollo/base-de-datos/ESQUEMA-COMPLETO.md`
- **Migraciones:** `tareas/01-migraciones/MIGRACIONES-HISTORICO.md`
- **Índices:** `tareas/03-documentacion/INDICES-OPTIMIZACION.md`
- **DDL Scripts:** `/docs/03-desarrollo/base-de-datos/backup-ddl/`

---

**Última actualización:** 2025-11-02
**Consolidado por:** ARTEMIS (Agente de Migración)
