Frontend: Ranglista admin nézet (leaderboard.vue) #335

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

Mérföldkő: Epic 8 Gamification 2.0, Verseny és Önvéde
Cél: Ranglista admin nézet létrehozása a teljes leaderboard áttekintéséhez

🔗 Függőségek (Dependencies)

  • Bemenet (Mikre támaszkodik): #329 (Frontend menüpont)
  • Kimenet (Mik támaszkodnak rá): Nincs

📝 Elemzés

frontend_admin/pages/gamification/leaderboard.vue létrehozása:

  1. DataTable: Top 100 felhasználó ranglétrája (rank, user_id/name, total_xp, current_level, social_points)
  2. Szűrés: Szezonális / Globális váltás (option select a tetején)
  3. API: GET /admin/gamification/user-stats?sort_by=total_xp&limit=100
  4. Vizuális: Top 3 kiemelése (arany/ezüst/bronz színek)
  5. Támogatja: loading, empty (nincs adat), error state
**Mérföldkő:** Epic 8 Gamification 2.0, Verseny és Önvéde **Cél:** Ranglista admin nézet létrehozása a teljes leaderboard áttekintéséhez ### 🔗 Függőségek (Dependencies) - **Bemenet (Mikre támaszkodik):** #329 (Frontend menüpont) - **Kimenet (Mik támaszkodnak rá):** Nincs ### 📝 Elemzés frontend_admin/pages/gamification/leaderboard.vue létrehozása: 1. DataTable: Top 100 felhasználó ranglétrája (rank, user_id/name, total_xp, current_level, social_points) 2. Szűrés: Szezonális / Globális váltás (option select a tetején) 3. API: GET /admin/gamification/user-stats?sort_by=total_xp&limit=100 4. Vizuális: Top 3 kiemelése (arany/ezüst/bronz színek) 5. Támogatja: loading, empty (nincs adat), error state
kincses added this to the Epic 8 Gamification 2.0, Verseny és Önvéde milestone 2026-06-29 16:07:30 +02:00
kincses added the Status: To DoScope: FrontendType: Feature labels 2026-06-29 16:07:30 +02:00
kincses added Status: In Progress and removed Status: To Do labels 2026-06-29 23:00:34 +02:00
kincses started working 2026-06-29 23:00:34 +02:00
Author
Owner

▶️ Munka megkezdve: 2026-06-29 23:00:34

▶️ **Munka megkezdve:** 2026-06-29 23:00:34
kincses added Status: Done and removed Status: In Progress labels 2026-06-29 23:15:20 +02:00
kincses worked for 14 minutes 2026-06-29 23:15:21 +02:00
Author
Owner

Munka befejezve: 2026-06-29 23:15:20

Technikai Összefoglaló:
Frontend: Ranglista admin nézet (leaderboard) - Elkészült. Backend: GET /admin/gamification/leaderboard végpont pagination, filtering (level/min_xp/search), sorting támogatással. Kétlépcsős eager loading (UserStats→User→Person) a felhasználónevek megjelenítéséhez. Frontend: leaderboard.vue teljes implementáció kereséssel, szűrőkkel, rendezéssel, rank badge-ekkel (arany/ezüst/bronz) és lapozással. API tesztek: mind a 7 teszteset (alap, szint filter, min_xp, rendezés, keresés névre/emailre/vezetéknévre, kombinált filter, lapozás) sikeresen lefutott.

⏱️ Az idő rögzítve.

✅ **Munka befejezve:** 2026-06-29 23:15:20 **Technikai Összefoglaló:** Frontend: Ranglista admin nézet (leaderboard) - Elkészült. Backend: GET /admin/gamification/leaderboard végpont pagination, filtering (level/min_xp/search), sorting támogatással. Kétlépcsős eager loading (UserStats→User→Person) a felhasználónevek megjelenítéséhez. Frontend: leaderboard.vue teljes implementáció kereséssel, szűrőkkel, rendezéssel, rank badge-ekkel (arany/ezüst/bronz) és lapozással. API tesztek: mind a 7 teszteset (alap, szint filter, min_xp, rendezés, keresés névre/emailre/vezetéknévre, kombinált filter, lapozás) sikeresen lefutott. ⏱️ *Az idő rögzítve.*
Author
Owner

Gitea #335 - Frontend: Ranglista admin nézet (leaderboard) — KÉSZ

Backend

  • GET /admin/gamification/leaderboard végpont hozzáadva az admin_gamification.py fájlhoz
  • Támogatja: pagination (limit/offset), filtering (level, min_xp, search), sorting (sort_by/sort_order)
  • Kétlépcsős eager loading: joinedload(UserStats.user).joinedload(User.person) a Person nevek eléréséhez
  • Explicit onclause a Person join-nál az AmbiguousForeignKeysError elkerülésére (User↔Person bidirekcionális FK)
  • or_ import hozzáadva a SQLAlchemy import sorhoz

Frontend

  • leaderboard.vue teljes implementáció:
    • Keresés név/email alapján
    • Szint filter (1-20), minimum XP filter
    • Rendezés (XP, Pontok, Social Points, Szint) + irány toggle
    • Adattábla 13 oszloppal (Rank, Név, Email, XP, Szint, Pontok, Social, Penalty, Restriction, Felfedezések, Szolgáltatások, Frissítve, Műveletek)
    • Rank badge-ek (arany/ezüst/bronz) top 3 helyezéshez
    • Lapozás first/prev/next/last + oldalméret választó (25/50/100/250)
    • Loading, error, empty állapotok
    • Link a felhasználói részletek oldalra

Tesztelés — Mind a 7 teszteset sikeres

  1. Alap leaderboard: 12 user, XP szerint csökkenő
  2. Szint filter (level=2): 7 találat
  3. Min XP filter (min_xp=4000): 2 találat
  4. Rendezés ascending (current_level): helyes sorrend
  5. Keresés névre ("accip"): 1 találat (Tímea Accipe)
  6. Keresés emailre ("profibot"): 6 találat
  7. Kombinált filter (level=2 & search=accip): 1 találat

Gitea

  • #335 kártya: Lezárva
## ✅ Gitea #335 - Frontend: Ranglista admin nézet (leaderboard) — KÉSZ ### Backend - **`GET /admin/gamification/leaderboard`** végpont hozzáadva az [`admin_gamification.py`](backend/app/api/v1/endpoints/admin_gamification.py:1193) fájlhoz - Támogatja: pagination (limit/offset), filtering (level, min_xp, search), sorting (sort_by/sort_order) - Kétlépcsős eager loading: `joinedload(UserStats.user).joinedload(User.person)` a Person nevek eléréséhez - Explicit `onclause` a Person join-nál az `AmbiguousForeignKeysError` elkerülésére (User↔Person bidirekcionális FK) - `or_` import hozzáadva a SQLAlchemy import sorhoz ### Frontend - [`leaderboard.vue`](frontend_admin/pages/gamification/leaderboard.vue) teljes implementáció: - Keresés név/email alapján - Szint filter (1-20), minimum XP filter - Rendezés (XP, Pontok, Social Points, Szint) + irány toggle - Adattábla 13 oszloppal (Rank, Név, Email, XP, Szint, Pontok, Social, Penalty, Restriction, Felfedezések, Szolgáltatások, Frissítve, Műveletek) - Rank badge-ek (arany/ezüst/bronz) top 3 helyezéshez - Lapozás first/prev/next/last + oldalméret választó (25/50/100/250) - Loading, error, empty állapotok - Link a felhasználói részletek oldalra ### Tesztelés — Mind a 7 teszteset sikeres ✅ 1. Alap leaderboard: 12 user, XP szerint csökkenő 2. Szint filter (level=2): 7 találat 3. Min XP filter (min_xp=4000): 2 találat 4. Rendezés ascending (current_level): helyes sorrend 5. Keresés névre ("accip"): 1 találat (Tímea Accipe) 6. Keresés emailre ("profibot"): 6 találat 7. Kombinált filter (level=2 & search=accip): 1 találat ### Gitea - #335 kártya: ✅ Lezárva
Sign in to join this conversation.