Blog
Architecture
18 de dezembro de 20258 min

Projetando um sistema de gamificação em PostgreSQL

A gamificação parece simples na superfície e explode em complexidade assim que é modelada. Para o TAMSIV, eu queria um sistema completo.

Um esquema dedicado

O esquema gamification é separado de privat e collaborative. Isolamento de responsabilidades: suas próprias políticas RLS, suas próprias funções RPC.

As 5 tabelas

  • user_stats: pontos totais, nível, sequência atual/máxima, última atividade
  • user_badges: relação muitos-para-muitos usuários/emblemas, data de obtenção
  • points_history: cada ganho de pontos registrado para análise
  • daily_challenges: um desafio por dia por usuário
  • feed_activity: feed de atividades para o feed social

12 níveis progressivos

Limiares: [0, 100, 250, 500, 1000, 2000, 3500, 5500, 8000, 12000, 17500, 25000]. Os níveis 1-3 são alcançáveis em alguns dias. O nível 12 requer meses. Além disso, uma fórmula matemática assume o controle.

As RPCs atômicas

Quando um usuário completa uma tarefa: adicionar pontos, verificar o nível, atualizar a sequência, verificar os emblemas, atualizar o desafio, registrar o histórico. Tudo atômico via funções transacionais PostgreSQL.

As sequências

Gerenciamento de fusos horários, congelamento de sequências, detecção de quebra. A sequência máxima é limitada a 365 dias — além disso, é vício, não gamificação.