Ein Gamification-System in PostgreSQL entwerfen
Gamification scheint oberflächlich einfach und explodiert in Komplexität, sobald man sie modelliert. Für TAMSIV wollte ich ein umfassendes System.
Ein dediziertes Schema
Das Schema gamification ist von privat und collaborative getrennt. Isolation der Verantwortlichkeiten: eigene RLS-Richtlinien, eigene RPC-Funktionen.
Die 5 Tabellen
- user_stats: Gesamtpunkte, Level, aktuelle/maximale Streak, letzte Aktivität
- user_badges: Many-to-Many-Beziehung Benutzer/Abzeichen, Erwerbsdatum
- points_history: Jeder Punktgewinn für Analysen protokolliert
- daily_challenges: Eine Herausforderung pro Tag pro Benutzer
- feed_activity: Aktivitäts-Feed für den sozialen Feed
12 progressive Level
Schwellenwerte: [0, 100, 250, 500, 1000, 2000, 3500, 5500, 8000, 12000, 17500, 25000]. Level 1-3 sind in wenigen Tagen erreichbar. Level 12 erfordert Monate. Darüber hinaus übernimmt eine mathematische Formel.
Die atomaren RPCs
Wenn ein Benutzer eine Aufgabe erledigt: Punkte hinzufügen, Level überprüfen, Streak aktualisieren, Abzeichen überprüfen, Herausforderung aktualisieren, Verlauf protokollieren. Alles atomar über transaktionale PostgreSQL-Funktionen.
Die Streaks
Verwaltung von Zeitzonen, Streak-Freezes, Erkennung von Unterbrechungen. Die maximale Streak ist auf 365 Tage begrenzt – darüber hinaus ist es Sucht, nicht Gamification.