Diseñar un sistema de gamificación en PostgreSQL
La gamificación parece simple en la superficie y explota en complejidad tan pronto como se modela. Para TAMSIV, quería un sistema completo.
Un esquema dedicado
El esquema gamification está separado de privat y collaborative. Aislamiento de responsabilidades: sus propias políticas RLS, sus propias funciones RPC.
Las 5 tablas
- user_stats: puntos totales, nivel, racha actual/máxima, última actividad
- user_badges: relación muchos a muchos usuarios/insignias, fecha de obtención
- points_history: cada ganancia de puntos registrada para análisis
- daily_challenges: un desafío por día por usuario
- feed_activity: flujo de actividad para el feed social
12 niveles progresivos
Umbrales: [0, 100, 250, 500, 1000, 2000, 3500, 5500, 8000, 12000, 17500, 25000]. Los niveles 1-3 se pueden alcanzar en unos pocos días. El nivel 12 requiere meses. Más allá, una fórmula matemática toma el relevo.
Las RPC atómicas
Cuando un usuario completa una tarea: añadir puntos, verificar el nivel, actualizar la racha, verificar las insignias, actualizar el desafío, registrar el historial. Todo atómico a través de funciones transaccionales de PostgreSQL.
Las rachas
Gestión de zonas horarias, congelación de rachas, detección de rupturas. La racha máxima está limitada a 365 días; más allá, es adicción, no gamificación.