Gamification: Admin approval XP award integration #352

Closed
opened 2026-06-30 11:41:58 +02:00 by kincses · 3 comments
Owner

Mérföldkő: Epic 7: Marketplace & API
Cél: A provider jóváhagyáskor automatikus Gamification XP award implementálása a beküldő felhasználónak.

🔗 Függőségek (Dependencies)

  • Bemenet: GamificationService.process_activity(), admin_providers.py (#349), UserContribution modell
  • Kimenet: Teljes körű admin provider moderációs workflow

📝 Elemzés

Jelenleg ha egy admin jóváhagy egy provider rekordot, NINCS automatikus XP award a beküldőnek. A UserContribution rekord létezik (status pending/approved/rejected), de nincs végpont ami triggerelné a GamificationService-t.

Szükséges:

  1. PUT /admin/providers/{id}/approve hívja meg: gamification_service.process_activity(user_id=submitter, action_key=ADD_NEW_PROVIDER, source_type=provider_approval, source_id=provider_id)
  2. PUT /admin/providers/{id}/reject állítsa: UserContribution.status = rejected + rejection_reason
  3. UserContribution.provided_fields JSONB frissítése a moderációs döntéssel

Ez a gamification kör bezárásához kritikus. Az XP csak akkor kerüljön kiosztásra, ha az admin TÉNYLEGESEN jóváhagyta a rekordot.

**Mérföldkő:** Epic 7: Marketplace & API **Cél:** A provider jóváhagyáskor automatikus Gamification XP award implementálása a beküldő felhasználónak. ### 🔗 Függőségek (Dependencies) - **Bemenet:** GamificationService.process_activity(), admin_providers.py (#349), UserContribution modell - **Kimenet:** Teljes körű admin provider moderációs workflow ### 📝 Elemzés Jelenleg ha egy admin jóváhagy egy provider rekordot, NINCS automatikus XP award a beküldőnek. A UserContribution rekord létezik (status pending/approved/rejected), de nincs végpont ami triggerelné a GamificationService-t. **Szükséges:** 1. PUT /admin/providers/{id}/approve hívja meg: gamification_service.process_activity(user_id=submitter, action_key=ADD_NEW_PROVIDER, source_type=provider_approval, source_id=provider_id) 2. PUT /admin/providers/{id}/reject állítsa: UserContribution.status = rejected + rejection_reason 3. UserContribution.provided_fields JSONB frissítése a moderációs döntéssel Ez a gamification kör bezárásához kritikus. Az XP csak akkor kerüljön kiosztásra, ha az admin TÉNYLEGESEN jóváhagyta a rekordot.
kincses added the Status: To DoType: Feature labels 2026-06-30 11:41:59 +02:00
kincses added Status: In Progress and removed Status: To Do labels 2026-06-30 12:11:45 +02:00
kincses started working 2026-06-30 12:11:45 +02:00
Author
Owner

▶️ Munka megkezdve: 2026-06-30 12:11:45

▶️ **Munka megkezdve:** 2026-06-30 12:11:45
kincses added Status: Done and removed Status: In Progress labels 2026-06-30 12:14:09 +02:00
kincses worked for 2 minutes 2026-06-30 12:14:09 +02:00
Author
Owner

Munka befejezve: 2026-06-30 12:14:09

Technikai Összefoglaló:
Implementáltuk a Gamification XP award integrációt az admin provider approve végpontban. Módosított fájl: backend/app/api/v1/endpoints/admin_providers.py. Változtatások: (1) POST /admin/providers/{id}/approve most meghívja a gamification_service.process_activity()-t action_key=ADD_NEW_PROVIDER paraméterrel a beküldő user-nek, (2) UserContribution rekord frissítése (status=approved/rejected, reviewed_by, reviewed_at) mind approve és reject esetén, (3) provided_fields JSONB bővítése moderációs döntéssel (action, reason, rejection_reason). Szintaxis és import ellenőrzés: , FastAPI app betöltés: , 7 route regisztrálva.

⏱️ Az idő rögzítve.

✅ **Munka befejezve:** 2026-06-30 12:14:09 **Technikai Összefoglaló:** Implementáltuk a Gamification XP award integrációt az admin provider approve végpontban. Módosított fájl: backend/app/api/v1/endpoints/admin_providers.py. Változtatások: (1) POST /admin/providers/{id}/approve most meghívja a gamification_service.process_activity()-t action_key=ADD_NEW_PROVIDER paraméterrel a beküldő user-nek, (2) UserContribution rekord frissítése (status=approved/rejected, reviewed_by, reviewed_at) mind approve és reject esetén, (3) provided_fields JSONB bővítése moderációs döntéssel (action, reason, rejection_reason). Szintaxis és import ellenőrzés: ✅, FastAPI app betöltés: ✅, 7 route regisztrálva. ⏱️ *Az idő rögzítve.*
Author
Owner

#352 Gamification: Admin approval XP award integration — Kész

Implementált változtatások

A backend/app/api/v1/endpoints/admin_providers.py fájlban az alábbi módosítások történtek:

1. POST /admin/providers/{id}/approve — Gamification XP award

  • Importok bővítve: UserContribution modell és gamification_service singleton importálva
  • Gamification XP award: Ha a provider-nek van added_by_user_id, a jóváhagyáskor meghívódik a gamification_service.process_activity() a következő paraméterekkel:
    • user_id = provider beküldőjének ID-ja
    • action_key = "ADD_NEW_PROVIDER" (pontérték a point_rules táblából: 500 XP)
    • source_type = "provider_approval"
    • source_id = provider ID
    • commit=False (a külső tranzakció részeként)
  • UserContribution frissítés: Megkeresi a beküldőhöz tartozó UserContribution rekordot (entity_type="service_provider", entity_id=provider_id), és:
    • status"approved"
    • reviewed_by → admin user ID
    • reviewed_at → aktuális timestamp
    • provided_fields["moderation"] → JSONB a moderációs döntéssel (action, reviewed_by, reviewed_at, reason)

2. POST /admin/providers/{id}/reject — UserContribution frissítés

  • UserContribution frissítés: Ugyanaz a logika, mint az approve-nál, de:
    • status"rejected"
    • provided_fields["moderation"]["action"]"reject"
    • provided_fields["moderation"]["rejection_reason"] → az admin által megadott indoklás

Ellenőrzések

  • Syntax check: Sikeres
  • Modul import: admin_providers modul betöltése hibátlan
  • FastAPI app betöltés: Teljes alkalmazás import sikeres, 7 route regisztrálva
  • Sync Engine: Adatbázis séma szinkronban (1292 elem OK)
  • Gitea #352: Lezárva
## ✅ #352 Gamification: Admin approval XP award integration — Kész ### Implementált változtatások A [`backend/app/api/v1/endpoints/admin_providers.py`](backend/app/api/v1/endpoints/admin_providers.py) fájlban az alábbi módosítások történtek: #### 1. `POST /admin/providers/{id}/approve` — Gamification XP award - **Importok bővítve:** `UserContribution` modell és `gamification_service` singleton importálva - **Gamification XP award:** Ha a provider-nek van `added_by_user_id`, a jóváhagyáskor meghívódik a `gamification_service.process_activity()` a következő paraméterekkel: - `user_id` = provider beküldőjének ID-ja - `action_key` = `"ADD_NEW_PROVIDER"` (pontérték a `point_rules` táblából: 500 XP) - `source_type` = `"provider_approval"` - `source_id` = provider ID - `commit=False` (a külső tranzakció részeként) - **UserContribution frissítés:** Megkeresi a beküldőhöz tartozó `UserContribution` rekordot (`entity_type="service_provider"`, `entity_id=provider_id`), és: - `status` → `"approved"` - `reviewed_by` → admin user ID - `reviewed_at` → aktuális timestamp - `provided_fields["moderation"]` → JSONB a moderációs döntéssel (`action`, `reviewed_by`, `reviewed_at`, `reason`) #### 2. `POST /admin/providers/{id}/reject` — UserContribution frissítés - **UserContribution frissítés:** Ugyanaz a logika, mint az approve-nál, de: - `status` → `"rejected"` - `provided_fields["moderation"]["action"]` → `"reject"` - `provided_fields["moderation"]["rejection_reason"]` → az admin által megadott indoklás ### Ellenőrzések - ✅ **Syntax check:** Sikeres - ✅ **Modul import:** `admin_providers` modul betöltése hibátlan - ✅ **FastAPI app betöltés:** Teljes alkalmazás import sikeres, 7 route regisztrálva - ✅ **Sync Engine:** Adatbázis séma szinkronban (1292 elem OK) - ✅ **Gitea #352:** Lezárva
Sign in to join this conversation.