Backend: GamificationService refaktor (point_rules tábla integráció) #326

Closed
opened 2026-06-29 16:00:13 +02:00 by kincses · 3 comments
Owner

Mérföldkő: Epic 8 Gamification 2.0, Verseny és Önvéde
Cél: A GamificationService.process_activity() kiegészítése a point_rules tábla olvasásával a GAMIFICATION_MASTER_CONFIG mellett

🔗 Függőségek (Dependencies)

  • Bemenet (Mikre támaszkodik): #324 (Adatbázis modell javítások), point_rules tábla, GamificationService
  • Kimenet (Mik támaszkodnak rá): #327 (penalty endpoint), #328 (gamification.py endpointok)

📝 Elemzés

A GamificationService.process_activity() jelenleg csak a GAMIFICATION_MASTER_CONFIG JSONB-t használja a pontozáshoz. Ki kell egészíteni, hogy a point_rules táblából is tudjon olvasni (action_key alapján). Ha a point_rules táblában van aktív szabály, akkor az elsőbbséget élvez a master config felett.

Főbb változtatások:

  1. Új metódus: _get_point_rule(db, action_key) - point_rules tábla lekérdezése
  2. process_activity() kiegészítése: point_rules lekérdezés a master config előtt
  3. is_penalty esetén: point_rules.is_penalty flag ellenőrzése
  4. Fallback logika: ha nincs point_rules bejegyzés, a master config values használata
**Mérföldkő:** Epic 8 Gamification 2.0, Verseny és Önvéde **Cél:** A GamificationService.process_activity() kiegészítése a point_rules tábla olvasásával a GAMIFICATION_MASTER_CONFIG mellett ### 🔗 Függőségek (Dependencies) - **Bemenet (Mikre támaszkodik):** #324 (Adatbázis modell javítások), point_rules tábla, GamificationService - **Kimenet (Mik támaszkodnak rá):** #327 (penalty endpoint), #328 (gamification.py endpointok) ### 📝 Elemzés A GamificationService.process_activity() jelenleg csak a GAMIFICATION_MASTER_CONFIG JSONB-t használja a pontozáshoz. Ki kell egészíteni, hogy a point_rules táblából is tudjon olvasni (action_key alapján). Ha a point_rules táblában van aktív szabály, akkor az elsőbbséget élvez a master config felett. Főbb változtatások: 1. Új metódus: _get_point_rule(db, action_key) - point_rules tábla lekérdezése 2. process_activity() kiegészítése: point_rules lekérdezés a master config előtt 3. is_penalty esetén: point_rules.is_penalty flag ellenőrzése 4. Fallback logika: ha nincs point_rules bejegyzés, a master config values használata
kincses added this to the Epic 8 Gamification 2.0, Verseny és Önvéde milestone 2026-06-29 16:00:13 +02:00
kincses added the Status: To DoScope: BackendType: Refactor labels 2026-06-29 16:00:13 +02:00
kincses added Status: In Progress and removed Status: To Do labels 2026-06-29 20:16:01 +02:00
kincses started working 2026-06-29 20:16:01 +02:00
Author
Owner

▶️ Munka megkezdve: 2026-06-29 20:16:01

▶️ **Munka megkezdve:** 2026-06-29 20:16:01
kincses added Status: Done and removed Status: In Progress labels 2026-06-29 20:24:48 +02:00
kincses worked for 8 minutes 2026-06-29 20:24:48 +02:00
Author
Owner

Munka befejezve: 2026-06-29 20:24:48

Technikai Összefoglaló:
GamificationService refaktor: point_rules tábla integráció. _get_point_rule() metódus hozzáadva, process_activity() kibővítve action_key/source_type/source_id paraméterekkel. admin.py penalty végpont, gamification.py submit-service/quiz/answer/badges/award endpointok átállítva GamificationService használatára. Sync Engine: 1284 OK.

⏱️ Az idő rögzítve.

✅ **Munka befejezve:** 2026-06-29 20:24:48 **Technikai Összefoglaló:** GamificationService refaktor: point_rules tábla integráció. _get_point_rule() metódus hozzáadva, process_activity() kibővítve action_key/source_type/source_id paraméterekkel. admin.py penalty végpont, gamification.py submit-service/quiz/answer/badges/award endpointok átállítva GamificationService használatára. Sync Engine: 1284 OK. ⏱️ *Az idő rögzítve.*
Author
Owner

#326 Gitea kártya sikeresen lezárva

Elvégzett feladatok:

1. GamificationService refaktor (backend/app/services/gamification_service.py)

  • _get_point_rule() metódus hozzáadva — lekérdezi a point_rules táblából az action_key alapján a pontszabályt
  • process_activity() kibővítve action_key, source_type, source_id paraméterekkel
  • Ha action_key meg van adva, a service először a point_rules táblában keres, és annak points értékét használja
  • _apply_penalty() frissítve source_type/source_id tracking-gel
  • Minden PointsLedger creation tartalmazza az xp, source_type, source_id mezőket

2. Régi admin.py penalty végpont átírása (backend/app/api/v1/endpoints/admin.py:412)

  • A régi végpont közvetlenül a nem létező gamification.level mezőt módosította
  • Új: gamification_service.process_activity() hívás is_penalty=True paraméterrel
  • penalty_level (negatív int) → penalty_amount (abs * 100) konverzió

3. gamification.py endpointok átállítása (backend/app/api/v1/endpoints/gamification.py)

  • submit-serviceaction_key="service_submission", source_type="service"
  • quiz/answeraction_key="daily_quiz_correct", source_type="quiz"
  • badges/awardaction_key="badge_earned", source_type="badge"

Ellenőrzési eredmények:

  • Sync Engine: 1284 OK, 0 Fixed, 0 Extra
  • Szintaxis: Minden fájl py_compile OK
  • Import: GamificationService, admin_gamification, api_router import sikeres
  • Gitea #326: Lezárva (Done)
## ✅ #326 Gitea kártya sikeresen lezárva ### Elvégzett feladatok: **1. GamificationService refaktor (`backend/app/services/gamification_service.py`)** - `_get_point_rule()` metódus hozzáadva — lekérdezi a `point_rules` táblából az `action_key` alapján a pontszabályt - `process_activity()` kibővítve `action_key`, `source_type`, `source_id` paraméterekkel - Ha `action_key` meg van adva, a service először a `point_rules` táblában keres, és annak `points` értékét használja - `_apply_penalty()` frissítve `source_type`/`source_id` tracking-gel - Minden `PointsLedger` creation tartalmazza az `xp`, `source_type`, `source_id` mezőket **2. Régi admin.py penalty végpont átírása (`backend/app/api/v1/endpoints/admin.py:412`)** - A régi végpont közvetlenül a nem létező `gamification.level` mezőt módosította - Új: `gamification_service.process_activity()` hívás `is_penalty=True` paraméterrel - `penalty_level` (negatív int) → `penalty_amount` (abs * 100) konverzió **3. gamification.py endpointok átállítása (`backend/app/api/v1/endpoints/gamification.py`)** - `submit-service` → `action_key="service_submission"`, `source_type="service"` - `quiz/answer` → `action_key="daily_quiz_correct"`, `source_type="quiz"` - `badges/award` → `action_key="badge_earned"`, `source_type="badge"` ### Ellenőrzési eredmények: - **Sync Engine:** ✅ 1284 OK, 0 Fixed, 0 Extra - **Szintaxis:** ✅ Minden fájl `py_compile` OK - **Import:** ✅ GamificationService, admin_gamification, api_router import sikeres - **Gitea #326:** ✅ Lezárva (Done)
Sign in to join this conversation.