5/5 - Pontértékek megőrzése a PointsLedger-ben (snapshot mechanizmus) #369

Closed
opened 2026-06-30 19:33:52 +02:00 by kincses · 1 comment
Owner

Mérföldkő: Epic 8 - Gamification 2.0
Cél: Annak biztosítása, hogy a gamification.points_ledger táblában a kiosztott pontok értékei megmaradjanak, még akkor is, ha a point_rules táblában később módosítják a pontértékeket.

🔗 Függőségek (Dependencies)

  • Bemenet (Mikre támaszkodik): #365 (award_points action_key), #366 (uj action_key-ek), points_ledger tabla
  • Kimenet (Mik támaszkodnak rá): Leaderboard, history, audit trail

📝 Elemzés

Jelenleg a PointsLedger modell (gamification.py:33-53) az alábbi mezőket tartalmazza:

  • user_id, amount (teljes XP), social_amount, reason, reference_type, reference_id, created_at

Hiányzik a snapshot mechanizmus: ha a point_rules tablaban valaki modositja a 'KYC_VERIFICATION' erteket 100-rol 200-ra, a regi kiosztasok tovabbra is 100-at fognak mutatni a ledgerben, de erre jelenleg NINCS garancia, mert a ledger csak az amount mezőt tarolja, ami a process_activity-ben szamitas utan kerul bele.

Javasolt megoldas: A PointsLedger modell kiegeszitese egy 'points_snapshot' JSONB mezovel, ami tarolja:

  • a felhasznalt action_key-t
  • a point_rules bejegyzes ID-jat
  • a kiosztaskor ervenyes points erteket
  • a felhasznalt szorzokat (multiplier)

Alternativ megoldas: a meglévo amount mezo mar tarolja a tenylegesen kiosztott pontokat, igy ha a process_activity mar hasznalja a point_rules-t, a ledger automatikusan a megfelelo erteket tarolja. A snapshot celja az audit-trail, hogy meg lehessen allapitani, melyik szabaly melyik verzioja szerint tortent a kiosztas.

Módosítandó fájlok:

  • backend/app/models/gamification/gamification.py (PointsLedger modell)
  • backend/app/services/gamification_service.py (process_activity logika)
**Mérföldkő:** Epic 8 - Gamification 2.0 **Cél:** Annak biztosítása, hogy a gamification.points_ledger táblában a kiosztott pontok értékei megmaradjanak, még akkor is, ha a point_rules táblában később módosítják a pontértékeket. ### 🔗 Függőségek (Dependencies) - **Bemenet (Mikre támaszkodik):** #365 (award_points action_key), #366 (uj action_key-ek), points_ledger tabla - **Kimenet (Mik támaszkodnak rá):** Leaderboard, history, audit trail ### 📝 Elemzés Jelenleg a PointsLedger modell (gamification.py:33-53) az alábbi mezőket tartalmazza: - user_id, amount (teljes XP), social_amount, reason, reference_type, reference_id, created_at Hiányzik a snapshot mechanizmus: ha a point_rules tablaban valaki modositja a 'KYC_VERIFICATION' erteket 100-rol 200-ra, a regi kiosztasok tovabbra is 100-at fognak mutatni a ledgerben, de erre jelenleg NINCS garancia, mert a ledger csak az amount mezőt tarolja, ami a process_activity-ben szamitas utan kerul bele. **Javasolt megoldas:** A PointsLedger modell kiegeszitese egy 'points_snapshot' JSONB mezovel, ami tarolja: - a felhasznalt action_key-t - a point_rules bejegyzes ID-jat - a kiosztaskor ervenyes points erteket - a felhasznalt szorzokat (multiplier) Alternativ megoldas: a meglévo amount mezo mar tarolja a tenylegesen kiosztott pontokat, igy ha a process_activity mar hasznalja a point_rules-t, a ledger automatikusan a megfelelo erteket tarolja. A snapshot celja az audit-trail, hogy meg lehessen allapitani, melyik szabaly melyik verzioja szerint tortent a kiosztas. Módosítandó fájlok: - backend/app/models/gamification/gamification.py (PointsLedger modell) - backend/app/services/gamification_service.py (process_activity logika)
kincses added this to the Epic 8 Gamification 2.0, Verseny és Önvéde milestone 2026-06-30 19:33:52 +02:00
kincses added Status: Done and removed Status: To Do labels 2026-06-30 19:45:29 +02:00
Author
Owner

Munka befejezve: 2026-06-30 19:45:29

Technikai Összefoglaló:
Added points_snapshot JSONB field to PointsLedger model. process_activity() now captures action_key, point_rule_id, points_at_time, and multiplier in the snapshot when action_key is provided.

⏱️ Az idő rögzítve.

✅ **Munka befejezve:** 2026-06-30 19:45:29 **Technikai Összefoglaló:** Added points_snapshot JSONB field to PointsLedger model. process_activity() now captures action_key, point_rule_id, points_at_time, and multiplier in the snapshot when action_key is provided. ⏱️ *Az idő rögzítve.*
Sign in to join this conversation.