Skip to content

Gamificación

Endpoints para objetivos, rachas, actividades diarias y logros.

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")
}
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")
}
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")
}

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

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.

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