Gamificación
Endpoints para objetivos, rachas, actividades diarias y logros.
Modelos de Datos
Section titled “Modelos de Datos”Los siguientes modelos de Prisma pertenecen al schema gamification:
model Goal { id String @id @default(cuid()) userProfileId String @map("user_profile_id") type GoalType title String description String?
frequency GoalFrequency @default(DAILY) targetValue Float? @map("target_value") unit String?
isActive Boolean @default(true) @map("is_active") xpReward Int @default(10) @map("xp_reward") difficulty Int @default(1)
startDate DateTime @default(now()) @map("start_date") endDate DateTime? @map("end_date")
userProfile UserProfile @relation(fields: [userProfileId], references: [id], onDelete: Cascade) progress GoalProgress[] dailyActivities DailyActivity[] streaks Streak[]
createdAt DateTime @default(now()) @map("created_at") updatedAt DateTime @updatedAt @map("updated_at")
@@map("goals") @@schema("gamification")}Streak
Section titled “Streak”model Streak { id String @id @default(cuid()) userProfileId String @map("user_profile_id") goalId String? @map("goal_id") type StreakType
currentStreak Int @default(0) @map("current_streak") longestStreak Int @default(0) @map("longest_streak") totalDays Int @default(0) @map("total_days")
lastActivityDate DateTime? @map("last_activity_date") streakStartDate DateTime? @map("streak_start_date")
freezesUsed Int @default(0) @map("freezes_used") freezesAvailable Int @default(0) @map("freezes_available")
isActive Boolean @default(true) @map("is_active")
userProfile UserProfile @relation(fields: [userProfileId], references: [id], onDelete: Cascade) goal Goal? @relation(fields: [goalId], references: [id], onDelete: Cascade)
createdAt DateTime @default(now()) @map("created_at") updatedAt DateTime @updatedAt @map("updated_at")
@@unique([userProfileId, type, goalId]) @@map("streaks") @@schema("gamification")}Achievement
Section titled “Achievement”model Achievement { id String @id @default(cuid()) name String @unique title String description String type AchievementType
iconUrl String? @map("icon_url") badgeColor String? @map("badge_color") xpReward Int @default(0) @map("xp_reward")
requirement Json
rarity String? category String? isActive Boolean @default(true) @map("is_active")
userAchievements UserAchievement[]
createdAt DateTime @default(now()) @map("created_at") updatedAt DateTime @updatedAt @map("updated_at")
@@map("achievements") @@schema("gamification")}Visión General
Section titled “Visión General”El módulo de Gamificación proporciona un conjunto completo de endpoints para:
- Nivel & XP: Seguimiento de puntos de experiencia y niveles de usuario
- Objetivos: Establecer y seguir objetivos de fitness
- Rachas: Mantener rachas de actividad
- Logros: Desbloquear y mostrar logros
Sistema de XP y Niveles
Section titled “Sistema de XP y Niveles”La gamificación utiliza un sistema de experiencia (XP) exponencial donde cada nivel requiere más XP que el anterior. La tabla de XP va del nivel 1 al 30, con niveles superiores requiriendo 2500 XP fijos por nivel.
Endpoints Relacionados
Section titled “Endpoints Relacionados”Explora las siguientes secciones para documentación detallada de la API:
- Nivel & XP - Nivel y puntos de experiencia del usuario
- Objetivos - Gestión de objetivos de fitness
- Rachas - Seguimiento de rachas de actividad
- Logros - Sistema de logros