🎮 Entidades Relaciones Gamificadas
Modelo de dominio para plataforma de cursos con mecánicas de juego.
📋 Contexto
La gamificación aumenta el engagement. Este modelo diseña un sistema completo con puntos, badges, logros y leaderboards.
🎯 Objetivo
Diseñar modelo de dominio con:
- Progresión del alumno
- Sistema de evaluaciones
- Mecánicas de juego (puntos, badges)
- Leaderboards
📦 Alcance
Incluye:
- Núcleo académico (Courses, Lessons)
- Evaluaciones (Quizzes, Challenges)
- Gamificación (Badges, Points, Leaderboards)
- Economía virtual (Wallets, Rewards)
🏛️ Modelo de Dominio
Núcleo Académico
| Entidad | Relaciones | Atributos Clave |
|---|---|---|
| User | 1..Enrollments, 0.. Badges | id, name, email, timezone |
| Course | 1..Modules, 0.. Prerequisites | code, title, level, status |
| Module | 1..* Lessons, 1 Course | title, order |
| Lesson | 0..Quizzes, 0.. Challenges | type, contentRef, order |
| Enrollment | 0..LessonProgress, 0.. Submissions | status, progressPercent |
Evaluaciones
| Entidad | Descripción |
|---|---|
| Quiz | Evaluación con preguntas, passingScore, attemptLimit |
| Question | Tipos: MULTIPLE_CHOICE, TRUE_FALSE, ORDERING |
| Attempt | Intento de quiz con score y respuestas |
| Challenge | Retos tipo CODING, PROJECT, REFLECTION |
| Submission | Entrega de challenge con auto/manual score |
Gamificación
| Entidad | Propósito |
|---|---|
| Badge | Insignias con rarity (COMMON/RARE/EPIC/LEGENDARY) |
| UserBadge | Asignación de badge a usuario |
| PointsAccount | Balance de puntos (GLOBAL o por curso) |
| PointTransaction | Historial de ganancia/gasto |
| Streak | Racha de actividad diaria |
| Leaderboard | Ranking por scope (GLOBAL/COURSE/WEEKLY) |
Economía
| Entidad | Descripción |
|---|---|
| Currency | Tipos: SOFT (ganado), HARD (comprado) |
| Wallet | Balance por usuario y currency |
| StoreItem | Items canjeables |
| Purchase | Transacción de compra |
🔄 Relaciones Principales
User 1:N Enrollment N:1 Course
Course 1:N Module 1:N Lesson
Lesson 1:N Quiz 1:N Question
Lesson 1:N Challenge 1:N Submission
User 1:N UserBadge N:1 Badge
User 1:N PointsAccount 1:N PointTransaction
✅ Reglas de Negocio
- Un usuario no puede tener badges duplicados si son "unique"
- Streak se rompe si no hay actividad en 24h
- Leaderboards se recalculan diariamente
- Challenges combinan auto-score + manual-score