# DATOS DE GAMIFICACION - GAMILIT

**Versión:** 1.0.0
**Fecha:** 2025-11-29
**Fuente:** Consolidado desde orchestration/inventarios/SEEDS_INVENTORY.yml
**Estado:** PRODUCTION-READY

---

## Resumen Ejecutivo

GAMILIT implementa un sistema completo de gamificación educativa con:
- **7 Rangos Maya** (sistema de progresión jerárquica)
- **20 Achievements** (logros desbloqueables)
- **ML Coins** (moneda virtual para comodines)
- **4 Comodines** (ayudas durante ejercicios)
- **4 Leaderboards** (tablas de posiciones)
- **Sistema de Misiones** (diarias, semanales, especiales)

---

## 1. Sistema de Rangos Maya

### 1.1 Jerarquía de Rangos

Los usuarios progresan a través de **7 niveles** basados en XP acumulado:

| Nivel | Rango | XP Mínimo | XP Máximo | Bonus Subida | Multiplicador XP |
|-------|-------|-----------|-----------|--------------|------------------|
| 1 | **Novato** | 0 | 99 | - | 1.00x |
| 2 | **Aprendiz** | 100 | 299 | +50 ML | 1.05x |
| 3 | **Experto** | 300 | 599 | +100 ML | 1.10x |
| 4 | **Maestro** | 600 | 999 | +200 ML | 1.15x |
| 5 | **Sabio** | 1,000 | 1,499 | +350 ML | 1.20x |
| 6 | **Guardián** | 1,500 | 2,499 | +500 ML | 1.25x |
| 7 | **Leyenda** | 2,500 | ∞ | +1,000 ML | 1.30x |

### 1.2 Rangos Alternativos (DocumentoDeDiseño v6.5)

El documento de diseño también define rangos con nombres mayas alternativos:

| Nivel | Rango Maya | Umbral XP Mínimo | Bonus por Subida |
|-------|------------|------------------|------------------|
| 1 | **AJAW** | 0 | - |
| 2 | **NACOM** | 500 | +100 ML |
| 3 | **AH K'IN** | 1,000 | +250 ML |
| 4 | **HALACH UINIC** | 1,500 | +500 ML |
| 5 | **K'UK'ULKAN** | 1,900 | +1,000 ML |

> **Nota:** Ambas jerarquías están implementadas. Consultar ADR correspondiente para decisión final.

### 1.3 Ubicación en Base de Datos

```sql
-- Schema: gamification_system
-- Tablas:
gamification_system.maya_ranks       -- Definición de rangos
gamification_system.user_ranks       -- Rangos asignados a usuarios
gamification_system.user_stats       -- XP y estadísticas del usuario
```

### 1.4 Seeds de Producción

```yaml
archivo: apps/database/seeds/prod/gamification_system/03-maya_ranks.sql
registros: 7
```

---

## 2. Sistema de Achievements (Logros)

### 2.1 Categorías de Logros

| Categoría | Descripción | Ejemplos |
|-----------|-------------|----------|
| **Explorador** | Descubrimiento y curiosidad | Primer ejercicio, primer módulo |
| **Maestro** | Dominio y excelencia | 100% en ejercicio, racha perfecta |
| **Colaborador** | Participación social | Unirse a equipo, ayudar a compañero |
| **Innovador** | Creatividad y originalidad | Respuesta creativa, enfoque único |

### 2.2 Logros Disponibles (20 logros demo)

Los logros se otorgan automáticamente mediante triggers cuando se cumplen las condiciones.

#### Por Progreso:
- Primer ejercicio completado
- 5 ejercicios completados
- 10 ejercicios completados
- Primer módulo completado
- Todos los módulos completados

#### Por Maestría:
- Score perfecto (100%)
- Racha de 5 correctos
- Racha de 10 correctos
- Sin usar pistas

#### Por Colaboración:
- Unirse a un equipo
- Primer desafío peer-to-peer
- Ganar desafío

#### Por Constancia:
- 3 días consecutivos
- 7 días consecutivos (semana completa)
- 30 días consecutivos (mes completo)

### 2.3 Ubicación en Base de Datos

```sql
-- Schema: gamification_system
gamification_system.achievement_categories  -- Categorías
gamification_system.achievements            -- Definición de logros
gamification_system.user_achievements       -- Logros desbloqueados
```

### 2.4 Funciones Relevantes

```sql
gamification_system.check_and_award_achievements(user_id)
gamification_system.claim_achievement_reward(user_id, achievement_id)
```

---

## 3. Sistema de ML Coins (Monedas Lectoras)

### 3.1 Obtención de ML Coins

| Fuente | ML Coins | Frecuencia |
|--------|----------|------------|
| Ejercicio completado | 10-50 | Por ejercicio |
| Score perfecto (100%) | +20 bonus | Por ejercicio |
| Subida de rango | 50-1,000 | Por rango |
| Logro desbloqueado | 25-100 | Por logro |
| Misión completada | 50-200 | Por misión |
| Racha diaria | 10-50 | Diario |

### 3.2 Uso de ML Coins

Los ML Coins se gastan en la **Tienda de Comodines**:

| Comodín | Costo (ML) | Descripción |
|---------|------------|-------------|
| Pista | 25 | Revela parte de la respuesta |
| Visión Lectora | 50 | Tiempo extra (+30s) |
| Segunda Oportunidad | 75 | Reintentar sin penalización |
| Time Freeze | 100 | Pausar temporizador (30s) |

### 3.3 Ubicación en Base de Datos

```sql
-- Schema: gamification_system
gamification_system.user_stats              -- ml_coins, ml_coins_earned_total
gamification_system.ml_coins_transactions   -- Historial de transacciones
```

### 3.4 Funciones Relevantes

```sql
gamification_system.award_ml_coins(user_id, amount, reason)
gamification_system.deduct_ml_coins(user_id, amount, reason)
```

---

## 4. Sistema de Comodines (Power-ups)

### 4.1 Tipos de Comodines

| Comodín | Enum | Efecto | Duración |
|---------|------|--------|----------|
| **Pista** | `hint` | Revela parte de respuesta correcta | Instantáneo |
| **Visión Lectora** | `time_freeze` | Congela temporizador | 30 segundos |
| **Segunda Oportunidad** | `retry` | Permite reintentar ejercicio | 1 uso |
| **Skip** | `skip` | Saltar ejercicio sin penalización | 1 uso |

### 4.2 Inventario de Usuario

Cada usuario tiene un inventario de comodines:

```typescript
interface ComodinesInventory {
  user_id: string;
  hint_count: number;        // Pistas disponibles
  time_freeze_count: number; // Visión Lectora disponibles
  retry_count: number;       // Segunda Oportunidad disponibles
  skip_count: number;        // Skips disponibles
}
```

### 4.3 Ubicación en Base de Datos

```sql
-- Schema: gamification_system
gamification_system.comodines_inventory     -- Inventario por usuario
gamification_system.active_boosts           -- Comodines activos
gamification_system.inventory_transactions  -- Historial de uso
gamification_system.comodin_usage_log       -- Log de uso
gamification_system.comodin_usage_tracking  -- Tracking detallado

-- ENUM
comodin_type: {time_freeze, hint, retry, skip}
```

---

## 5. Sistema de Leaderboards

### 5.1 Tipos de Leaderboards

| Leaderboard | Métrica | Alcance |
|-------------|---------|---------|
| **Global XP** | total_xp | Toda la plataforma |
| **ML Coins** | ml_coins_earned_total | Toda la plataforma |
| **Streaks** | current_streak | Toda la plataforma |
| **Por Mecánica** | score por exercise_type | Por tipo de ejercicio |

### 5.2 Vistas Materializadas

```sql
-- Vistas para performance
gamification_system.leaderboard_global          -- Top global
gamification_system.leaderboard_classroom       -- Por aula
gamification_system.leaderboard_weekly          -- Semanal
gamification_system.leaderboard_mechanic        -- Por mecánica
```

### 5.3 Ubicación en Base de Datos

```sql
gamification_system.leaderboard_metadata  -- Configuración de leaderboards
```

---

## 6. Sistema de Misiones

### 6.1 Tipos de Misiones

| Tipo | Reinicio | Ejemplos |
|------|----------|----------|
| **Diarias** | Cada día a 00:00 | Completar 3 ejercicios, Obtener 100 XP |
| **Semanales** | Cada lunes | Completar 1 módulo, Racha de 5 días |
| **Especiales** | Por evento | Evento de temporada, Desafío especial |

### 6.2 Objetivos de Misiones

```yaml
objective_types:
  - complete_exercises   # Completar N ejercicios
  - correct_streak       # Racha de N correctos
  - earn_xp             # Obtener N XP
  - use_comodines       # Usar N comodines
  - daily_streak        # N días consecutivos
  - perfect_scores      # N scores perfectos
  - complete_modules    # Completar N módulos
  - explore_modules     # Explorar N módulos
```

### 6.3 Ubicación en Base de Datos

```sql
-- Schema: gamification_system
gamification_system.missions              -- Definición de misiones

-- Schema: progress_tracking
progress_tracking.scheduled_missions      -- Misiones asignadas a usuarios
```

### 6.4 Triggers de Actualización

Ver `docs/sistema-recompensas/07-CORRECCION-SISTEMA-MISIONES.md` para los 8 triggers implementados:
- `trg_update_missions_on_exercise`
- `trg_update_missions_on_streak`
- `trg_update_missions_on_earn_xp`
- `trg_update_missions_on_use_comodines`
- `trg_update_missions_on_daily_streak`
- `trg_update_missions_on_perfect_scores`
- `trg_update_missions_on_complete_modules`
- `trg_update_missions_on_explore_modules`

---

## 7. Flujo de Recompensas

### 7.1 Al Completar Ejercicio

```
1. Usuario completa ejercicio
   ↓
2. INSERT en exercise_attempts (xp_earned, ml_coins_earned)
   ↓
3. TRIGGER: update_user_stats_on_exercise_complete()
   ↓
4. UPDATE user_stats: total_xp, ml_coins, exercises_completed
   ↓
5. CHECK rank promotion
   ↓
6. CHECK achievement conditions
   ↓
7. UPDATE missions progress
   ↓
8. Respuesta: { score, rewards: {xp, mlCoins}, rankUp?, achievements[] }
```

### 7.2 Arquitectura Dual-Table

Ver `docs/sistema-recompensas/01-ARQUITECTURA-SISTEMA.md`:

- **exercise_submissions**: Workflow (draft → submitted → graded)
- **exercise_attempts**: Recompensas (XP, ML Coins, tracking)

---

## 8. Ejercicios por Módulo

### Distribución de Contenido

| Módulo | Nombre | Ejercicios | XP Total | ML Total |
|--------|--------|------------|----------|----------|
| M1 | Comprensión Literal | 5 | 500 | 100 |
| M2 | Comprensión Inferencial | 5 | 500 | 100 |
| M3 | Comprensión Crítica | 5 | 500 | 100 |
| M4 | Textos Digitales | 5 | 500 | 100 |
| M5 | Producción Creativa | 3 | 500 | 100 |
| **Total** | | **23** | **2,500** | **500** |

### Mecánicas por Módulo

**Módulo 1 (Literal):**
- Crucigrama Científico
- Línea de Tiempo
- Completar Espacios en Blanco
- Verdadero o Falso
- Sopa de Letras (BONUS)

**Módulo 2 (Inferencial):**
- Detective Textual
- Construcción de Hipótesis
- Predicción Narrativa
- Puzzle de Contexto
- Rueda de Inferencias

**Módulo 3 (Crítica):**
- Tribunal de Opiniones
- Debate Digital
- Análisis de Fuentes
- Podcast Argumentativo
- Matriz de Perspectivas

**Módulo 4 (Digital):** 5 ejercicios (Ver DocumentoDeDiseño v6.5)

**Módulo 5 (Creativo):** 3 opciones A/B/C (Ver DocumentoDeDiseño v6.5)

---

## 9. Referencias

### Documentación Relacionada

- [DocumentoDeDiseño_Mecanicas_GAMILIT_v6_1.md](./DocumentoDeDiseño_Mecanicas_GAMILIT_v6_1.md) - Especificación completa
- [docs/sistema-recompensas/01-ARQUITECTURA-SISTEMA.md](../sistema-recompensas/01-ARQUITECTURA-SISTEMA.md) - Arquitectura
- [docs/sistema-recompensas/07-CORRECCION-SISTEMA-MISIONES.md](../sistema-recompensas/07-CORRECCION-SISTEMA-MISIONES.md) - Misiones

### Seeds de Producción

```
apps/database/seeds/prod/gamification_system/
├── 01-achievement_categories.sql
├── 02-leaderboard_metadata.sql
├── 03-maya_ranks.sql
├── 04-achievements.sql
├── 05-user_stats.sql
├── 06-user_ranks.sql
├── 07-ml_coins_transactions.sql
├── 08-user_achievements.sql
└── 09-comodines_inventory.sql
```

### Inventarios de Orchestration

- `orchestration/inventarios/SEEDS_INVENTORY.yml` - Inventario completo de seeds
- `orchestration/inventarios/DATABASE_INVENTORY.yml` - Estado de BD

---

**Última actualización:** 2025-11-29
**Mantenido por:** Architecture-Analyst
