Frontend: Pontnapló böngésző oldal (ledger.vue) #337

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

Mérföldkő: Epic 8 Gamification 2.0, Verseny és Önvéde
Cél: PointsLedger admin böngésző oldal létrehozása szűréssel és részletes naplózással

🔗 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/ledger.vue létrehozása:

  1. DataTable: PointsLedger bejegyzések (user_id, points, penalty_change, reason, xp, source_type, source_id, created_at)
  2. Szűrők: user_id (input), date range (date picker), reason (text search)
  3. Lapozás: server-side pagination (limit/offset)
  4. Export: CSV letöltés gomb
  5. API: GET /admin/gamification/points-ledger?user_id=&date_from=&date_to=&limit=&offset=
  6. Támogatja: loading, empty (nincs találat), error state
**Mérföldkő:** Epic 8 Gamification 2.0, Verseny és Önvéde **Cél:** PointsLedger admin böngésző oldal létrehozása szűréssel és részletes naplózással ### 🔗 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/ledger.vue létrehozása: 1. DataTable: PointsLedger bejegyzések (user_id, points, penalty_change, reason, xp, source_type, source_id, created_at) 2. Szűrők: user_id (input), date range (date picker), reason (text search) 3. Lapozás: server-side pagination (limit/offset) 4. Export: CSV letöltés gomb 5. API: GET /admin/gamification/points-ledger?user_id=&date_from=&date_to=&limit=&offset= 6. Támogatja: loading, empty (nincs találat), error state
kincses added this to the Epic 8 Gamification 2.0, Verseny és Önvéde milestone 2026-06-29 16:07:49 +02:00
kincses added the Status: To DoScope: FrontendType: Feature labels 2026-06-29 16:07:49 +02:00
kincses added Status: In Progress and removed Status: To Do labels 2026-06-29 23:40:41 +02:00
kincses started working 2026-06-29 23:40:41 +02:00
Author
Owner

▶️ Munka megkezdve: 2026-06-29 23:40:41

▶️ **Munka megkezdve:** 2026-06-29 23:40:41
kincses added Status: Done and removed Status: In Progress labels 2026-06-29 23:44:06 +02:00
kincses worked for 3 minutes 2026-06-29 23:44:06 +02:00
Author
Owner

Munka befejezve: 2026-06-29 23:44:06

Technikai Összefoglaló:
Frontend: Pontnapló böngésző oldal (ledger.vue) elkészült. Backend: reason_search ILIKE filter hozzáadva a GET /admin/gamification/points-ledger végponthoz. Frontend: Teljes implementáció DataTable-lel, szűrőkkel (user_id, date_from, date_to, reason_search), lapozással (Előző/Következő), CSV exporttal, loading/error/empty állapotokkal. API tesztek sikeresek.

⏱️ Az idő rögzítve.

✅ **Munka befejezve:** 2026-06-29 23:44:06 **Technikai Összefoglaló:** Frontend: Pontnapló böngésző oldal (ledger.vue) elkészült. Backend: reason_search ILIKE filter hozzáadva a GET /admin/gamification/points-ledger végponthoz. Frontend: Teljes implementáció DataTable-lel, szűrőkkel (user_id, date_from, date_to, reason_search), lapozással (Előző/Következő), CSV exporttal, loading/error/empty állapotokkal. API tesztek sikeresek. ⏱️ *Az idő rögzítve.*
Author
Owner

Gitea #337 - Frontend: Pontnapló böngésző oldal (ledger.vue) - KÉSZ

Elvégzett feladatok:

1. Backend módosítás - admin_gamification.py

  • reason_search paraméter hozzáadva a GET /admin/gamification/points-ledger végponthoz (min_length=2, max_length=200)
  • ILIKE szűrés implementálva a reason mezőben: PointsLedger.reason.ilike(f"%{reason_search}%")

2. Frontend implementáció - ledger.vue

  • Loading state: Spinner + "Pontnapló betöltése..." felirat
  • Error state: Hibaüzenet + "Újrapróbálkozás" gomb
  • Empty state: Dokumentum ikon + "Nincs találat a megadott szűrőkkel."
  • Filter bar: user_id (number), date_from/date_to (date picker), reason_search (text) - 400ms debounce
  • Data table: ID, User (name + #id), Pont (színkódolt), Büntetés, XP, Ok (truncate + title), Forrás (badge + id), Dátum (hu-HU locale)
  • Pagination: Előző/Következő gombok + oldalszám jelző
  • CSV export: Böngészőben generált CSV letöltés Blob + URL.createObjectURL
  • Toast notification: Slide-up animáció 3 másodperc után eltűnik

3. API tesztek - Mind sikeres

  • GET /admin/gamification/points-ledger?limit=5 → 200 OK (5 entry)
  • GET /admin/gamification/points-ledger?reason_search=test&limit=5 → 200 OK (5 entry)
  • GET /admin/gamification/points-ledger?user_id=1&limit=5 → 200 OK (4 entry)

4. Dokumentáció - history.md frissítve

5. Gitea #337 - Lezárva

## ✅ Gitea #337 - Frontend: Pontnapló böngésző oldal (ledger.vue) - KÉSZ ### Elvégzett feladatok: **1. Backend módosítás** - [`admin_gamification.py`](backend/app/api/v1/endpoints/admin_gamification.py:1058) - `reason_search` paraméter hozzáadva a `GET /admin/gamification/points-ledger` végponthoz (min_length=2, max_length=200) - ILIKE szűrés implementálva a `reason` mezőben: `PointsLedger.reason.ilike(f"%{reason_search}%")` **2. Frontend implementáció** - [`ledger.vue`](frontend_admin/pages/gamification/ledger.vue) - **Loading state**: Spinner + "Pontnapló betöltése..." felirat - **Error state**: Hibaüzenet + "Újrapróbálkozás" gomb - **Empty state**: Dokumentum ikon + "Nincs találat a megadott szűrőkkel." - **Filter bar**: user_id (number), date_from/date_to (date picker), reason_search (text) - 400ms debounce - **Data table**: ID, User (name + #id), Pont (színkódolt), Büntetés, XP, Ok (truncate + title), Forrás (badge + id), Dátum (hu-HU locale) - **Pagination**: Előző/Következő gombok + oldalszám jelző - **CSV export**: Böngészőben generált CSV letöltés Blob + URL.createObjectURL - **Toast notification**: Slide-up animáció 3 másodperc után eltűnik **3. API tesztek** - Mind sikeres ✅ - `GET /admin/gamification/points-ledger?limit=5` → 200 OK (5 entry) - `GET /admin/gamification/points-ledger?reason_search=test&limit=5` → 200 OK (5 entry) - `GET /admin/gamification/points-ledger?user_id=1&limit=5` → 200 OK (4 entry) **4. Dokumentáció** - [`history.md`](.roo/history.md) frissítve **5. Gitea #337** - ✅ Lezárva
Sign in to join this conversation.