Backend: Meglévő PATCH /admin/users/{id}/penalty endpoint javítása #327

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

Mérföldkő: Epic 8 Gamification 2.0, Verseny és Önvéde
Cél: A hibás penalty endpoint átírása, hogy a GamificationService process_activity()-t használja is_penalty=True paraméterrel

🔗 Függőségek (Dependencies)

  • Bemenet (Mikre támaszkodik): #325 (admin_gamification.py router), #326 (GamificationService refaktor)
  • Kimenet (Mik támaszkodnak rá): Közvetlen függősége nincs

📝 Elemzés

A backend/app/api/v1/endpoints/admin.py:412-479 sorban található PATCH /admin/users/{user_id}/penalty végpont HIÁNYOS. Jelenleg direktül módosítja a gamification.level mezőt, ami nem is létezik a UserStats modellben! A javítás során:

  1. Eltávolítani a direkt level módosítást
  2. Meghívni a GamificationService.process_activity(db, user_id, amount, reason, is_penalty=True)-t
  3. SecurityAuditLog bejegyzés hozzáadása
  4. Megfelelő hibaüzenet visszaadása (404 ha nincs ilyen user)
**Mérföldkő:** Epic 8 Gamification 2.0, Verseny és Önvéde **Cél:** A hibás penalty endpoint átírása, hogy a GamificationService process_activity()-t használja is_penalty=True paraméterrel ### 🔗 Függőségek (Dependencies) - **Bemenet (Mikre támaszkodik):** #325 (admin_gamification.py router), #326 (GamificationService refaktor) - **Kimenet (Mik támaszkodnak rá):** Közvetlen függősége nincs ### 📝 Elemzés A backend/app/api/v1/endpoints/admin.py:412-479 sorban található PATCH /admin/users/{user_id}/penalty végpont HIÁNYOS. Jelenleg direktül módosítja a gamification.level mezőt, ami nem is létezik a UserStats modellben! A javítás során: 1. Eltávolítani a direkt level módosítást 2. Meghívni a GamificationService.process_activity(db, user_id, amount, reason, is_penalty=True)-t 3. SecurityAuditLog bejegyzés hozzáadása 4. Megfelelő hibaüzenet visszaadása (404 ha nincs ilyen user)
kincses added this to the Epic 8 Gamification 2.0, Verseny és Önvéde milestone 2026-06-29 16:00:21 +02:00
kincses added the Status: To DoScope: BackendType: Bug labels 2026-06-29 16:00:21 +02:00
kincses added Status: In Progress and removed Status: To Do labels 2026-06-29 20:31:39 +02:00
kincses started working 2026-06-29 20:31:39 +02:00
Author
Owner

▶️ Munka megkezdve: 2026-06-29 20:31:39

▶️ **Munka megkezdve:** 2026-06-29 20:31:39
kincses added Status: Done and removed Status: In Progress labels 2026-06-29 20:44:28 +02:00
kincses worked for 12 minutes 2026-06-29 20:44:28 +02:00
Author
Owner

Munka befejezve: 2026-06-29 20:44:27

Technikai Összefoglaló:
Backend: #327 Gitea kártya lezárása - PATCH /admin/users/{id}/penalty endpoint javítása. 3 bug javítva: (1) hiányzó import logging hozzáadva, (2) undefined variable admin -> current_user.id javítva approve_action endpointban, (3) SecurityAuditLog rossz mezőnevek javítva (actor_id, target_id, payload_before/payload_after JSON). HTTP 200 teszt sikeres, adatbázis és audit log ellenőrizve. Sync Engine: 1284 OK.

⏱️ Az idő rögzítve.

✅ **Munka befejezve:** 2026-06-29 20:44:27 **Technikai Összefoglaló:** Backend: #327 Gitea kártya lezárása - PATCH /admin/users/{id}/penalty endpoint javítása. 3 bug javítva: (1) hiányzó import logging hozzáadva, (2) undefined variable admin -> current_user.id javítva approve_action endpointban, (3) SecurityAuditLog rossz mezőnevek javítva (actor_id, target_id, payload_before/payload_after JSON). HTTP 200 teszt sikeres, adatbázis és audit log ellenőrizve. Sync Engine: 1284 OK. ⏱️ *Az idő rögzítve.*
Author
Owner

#327 Gitea kártya feladatai teljesítve

Elvégzett munka

A #327-es kártya ("Backend: Meglévő PATCH /admin/users/{id}") feladata a meglévő PATCH /admin/users/{user_id}/penalty végpont hibáinak kijavítása volt. Az endpoint már refaktorálva volt GamificationService process_activity() használatára, de 3 hibát tartalmazott:

Javított hibák

  1. Hiányzó import logging az admin.py-ban → logger.error() hívás volt, de import logging nem szerepelt. Javítva.

  2. Undefined variable admin a approve_action endpointban (82. sor) → admin.id helyett current_user.id. Javítva.

  3. Rossz SecurityAuditLog mezőnevek a penalty endpointban (464-471. sor):

    • user_idactor_id
    • target_user_idtarget_id
    • details="..."payload_after={...} (JSON dict)
    • ip_address="admin_api" → eltávolítva (nem létező mező)
    • payload_before={} hozzáadva

Tesztelés eredménye

  • HTTP 200: {"status":"success","message":"Gamification penalty applied to user 1","user_id":1,"penalty_points_added":100,"total_penalty_points":300,"restriction_level":1}
  • Adatbázis: user 1 penalty_points=300, restriction_level=1
  • Audit log: audit.security_audit_logs bejegyzés action="apply_gamification_penalty", actor_id=2, target_id=1
  • Sync Engine: 1284 OK, 0 Fixed, 0 Extra
  • Gitea #327: Lezárva, dokumentáció frissítve a history.md-ben
## ✅ #327 Gitea kártya feladatai teljesítve ### Elvégzett munka A #327-es kártya ("Backend: Meglévő PATCH /admin/users/{id}") feladata a meglévő `PATCH /admin/users/{user_id}/penalty` végpont hibáinak kijavítása volt. Az endpoint már refaktorálva volt GamificationService `process_activity()` használatára, de 3 hibát tartalmazott: ### Javított hibák 1. **Hiányzó `import logging`** az [`admin.py`](backend/app/api/v1/endpoints/admin.py)-ban → `logger.error()` hívás volt, de `import logging` nem szerepelt. Javítva. 2. **Undefined variable `admin`** a `approve_action` endpointban (82. sor) → `admin.id` helyett `current_user.id`. Javítva. 3. **Rossz [`SecurityAuditLog`](backend/app/models/system/audit.py:12) mezőnevek** a penalty endpointban (464-471. sor): - `user_id` → `actor_id` - `target_user_id` → `target_id` - `details="..."` → `payload_after={...}` (JSON dict) - `ip_address="admin_api"` → eltávolítva (nem létező mező) - `payload_before={}` hozzáadva ### Tesztelés eredménye - **HTTP 200**: `{"status":"success","message":"Gamification penalty applied to user 1","user_id":1,"penalty_points_added":100,"total_penalty_points":300,"restriction_level":1}` - **Adatbázis**: user 1 `penalty_points=300`, `restriction_level=1` ✅ - **Audit log**: `audit.security_audit_logs` bejegyzés `action="apply_gamification_penalty"`, `actor_id=2`, `target_id=1` ✅ - **Sync Engine**: 1284 OK, 0 Fixed, 0 Extra ✅ - **Gitea #327**: ✅ Lezárva, dokumentáció frissítve a [`history.md`](.roo/history.md)-ben
Sign in to join this conversation.