admin_users_personels

This commit is contained in:
Roo
2026-06-29 14:11:15 +00:00
parent 383e5511b6
commit df4a0f07ff
237 changed files with 17849 additions and 2934 deletions

View File

@@ -950,3 +950,145 @@ A backend `admin_organizations.py` fájlban két külön kódút (Path A és Pat
- Python syntax check: ✅ OK (`py_compile` sikeres)
- Sync engine: 1279 OK, 0 Fixed, 0 Shadow — teljes szinkronban
- A `SubscriptionSummary` most helyesen kapja meg a Base limit értékeket az `_extract_limit()`-en keresztül, mielőtt az Extra allowances hozzáadódnak.
## 2026-06-29 - Gitea #319: Felhasználói trend diagram komponens (EPIC-5, task 5.2)
### 🎯 Cél
Felhasználói regisztrációs trend diagram komponens elkészítése az admin felület users list oldalára.
### 🔧 Változtatások
**1. UserTrendChart.vue komponens létrehozása:** `frontend_admin/components/charts/UserTrendChart.vue`
- Pure SVG bar chart (nincs külső chart library függőség)
- Period selector: 7/14/30/90 nap
- Grid lines, Y-axis labels, hover tooltips
- Trend direction indicator (up/down/stable)
- Summary stats: daily avg, total, trend %
- Loading és empty state kezelés
**2. i18n kulcsok hozzáadása:** `frontend_admin/locales/hu.json`, `frontend_admin/locales/en.json`
- trend_title, trend_subtitle, trend_7d/14d/30d/90d
- trend_no_data, trend_daily, trend_avg, trend_total, trend_vs_prev
**3. Integrálás a users oldalba:** `frontend_admin/pages/users/index.vue`
- Import: `import UserTrendChart from '~/components/charts/UserTrendChart.vue'`
- Template: `<UserTrendChart :data="stats.registration_trend" :loading="loading" />`
- A stats kártyák és a filter bar közé helyezve
### ✅ Eredmény
- A backend `GET /admin/users/stats` endpoint már létezik és visszaadja a `registration_trend` adatokat
- A frontend build hibátlanul lefutott a `sf_admin_frontend` konténerben
- A komponens automatikusan használja a meglévő `stats.registration_trend` adatokat
## 2026-06-29 - EPIC-6 Task 6.1: i18n Fordítások Felvétele (hu/en) - User & Person Oldalak
### 🎯 Cél
i18n fordítások (hu/en) hozzáadása a frontend_admin user és person kezelő oldalakhoz a [`plans/logic_spec_admin_user_person_management.md`](plans/logic_spec_admin_user_person_management.md) specifikáció alapján (EPIC-6, task 6.1).
### 🔧 Módosított fájlok
- [`frontend_admin/locales/en.json`](frontend_admin/locales/en.json) - Teljes `users` szekció hozzáadva (users.* és users.details.* kulcsok); JSON szintaxis hiba javítva (hiányzó vessző a persons.details után)
- [`frontend_admin/locales/hu.json`](frontend_admin/locales/hu.json) - Teljes `users` szekció hozzáadva magyar fordításokkal; JSON szintaxis hiba javítva
### ✅ Eredmények
- **JSON validáció:** ✅ Sikeres (python3 json.load)
- **Nuxt build:** ✅ Sikeres (6.78s, AdminUsersView chunk: 19.93 kB)
- **Hiányzó kulcsok pótolva:** `users.title`, `users.subtitle`, `users.search_placeholder`, `users.*` (status, role, plan filterek), `users.details.*` (profil, subscription, személyes adatok, tagságok)
- **JSON hiba javítva:** Hiányzó vessző a `persons.details` objektum záró kapcsos zárójele után (224. sor) mindkét locale fájlban
## 2026-06-29 — RBAC Permission Check Implementation (Gitea #321)
### 🎯 Cél
Card #321: "6.2: RBAC permission check implementáció" — Minden admin user/person oldalnak ellenőriznie kell a DB-driven RBAC permissionöket a spec szerint.
### 🔧 Módosított fájlok
- [`frontend_admin/pages/users/index.vue`](frontend_admin/pages/users/index.vue) — `useAuthStore`/`useRouter` importok, `canViewUsers`/`canEditUsers`/`canBanUsers`/`canDeleteUsers` computed property-k, redirect guard `users:view` hiányában, `v-if="canEditUsers"` a bulk actions bar-on és toggle gombokon
- [`frontend_admin/pages/users/[id]/index.vue`](frontend_admin/pages/users/%5Bid%5D/index.vue) — `hasEditPermission` átírva legacy `'user:edit'`-ről (singular) `'users:edit'`-re (plural, spec szerint)
- [`frontend_admin/pages/persons/index.vue`](frontend_admin/pages/persons/index.vue) — `useAuthStore`/`useRouter` importok, `canViewPersons`/`canEditPersons`/`canMergePersons` computed property-k, redirect guard `persons:view` hiányában
- [`frontend_admin/pages/persons/[id]/index.vue`](frontend_admin/pages/persons/%5Bid%5D/index.vue) — `hasEditPermission` egyszerűsítve `!!` koercícióra
### ✅ Verifikáció
- **Nuxt build:** ✅ Sikeres (`docker compose exec sf_admin_frontend npm run build`)
- **Permission kódok:** `users:view`, `users:edit`, `users:ban`, `users:delete`, `persons:view`, `persons:edit`, `persons:merge` — mind implementálva a spec (5.8) szerint
- **Fallback:** Minden computed property `auth.isAdmin`-re esik vissza, ha nincs `system_capabilities`
## 2026-06-29 - Admin Users Filter Buttons Fix (#323)
### 🎯 Cél
Az admin felületen a felhasználók listájában nem működő szűrő gombok (státusz, szerepkör, csomag) javítása.
### 🔧 Módosított fájlok
- **`backend/app/api/v1/endpoints/admin.py`**:
- `plan_filter` query paraméter hozzáadása a `list_users()` végponthoz
- `plan_filter` szűrési logika: `User.subscription_plan == plan_filter.upper()`
- `person_name` mező hozzáadása a válaszhoz (last_name + first_name összefűzés)
- Case-insensitive role matching: `role.upper()` a `UserRole` enumhoz
- **`frontend_admin/pages/users/index.vue`**:
- `status_filter``is_active`/`is_deleted` boolean mapping (switch/case)
- `role_filter``role` paraméter átnevezés
- `plan_filter` paraméter megtartva (backend most már támogatja)
### ✅ Eredmények
- API szintaxis ellenőrzés: ✅ PASS
- API végpont tesztek (7 teszt): ✅ ALL PASS
- Basic list: 34 user, person_name megjelenik
- role=admin (lowercase): 2 admin (case-insensitive)
- role=user (lowercase): 30 user
- is_active=true: 16 aktív
- plan_filter=FREE: 28 FREE csomagos
- Combined (role=user, is_active=true, plan_filter=PREMIUM): 2 találat
- is_deleted=true: 1 törölt
## 2026-06-29 - Architect: Gamification Admin Integration Audit & Gitea Kártyák
### 🎯 Cél
A meglévő Gamification rendszer (backend modellek, service-ek, API végpontok) teljes körű auditálása, komplex specifikáció készítése az admin felületre történő bekötéshez, és 15 Gitea implementációs kártya létrehozása.
### 🔧 Elvégzett Munka
**1. GAMIFICATION RENDSZER AUDIT:**
- Feltárt 10+ adatbázis tábla a `gamification` sémában (point_rules, level_configs, points_ledger, user_stats, badges, user_badges, user_contributions, seasons, seasonal_competitions, competitions, user_competition_scores)
- Azonosított hiányzó mezők: UserStats (services_submitted, total_points), PointsLedger (xp, source_type, source_id)
- Feltárt 14+ meglévő API végpont a `/gamification/*` útvonalon
- Feltárt hibás végpont: `PATCH /admin/users/{id}/penalty` direkt `level` módosítás a GamificationService helyett
- Feltárt 3 business logic probléma (szolgáltatáskikerülés, GamificationService bypass)
**2. KOMPLEX SPECIFIKÁCIÓ:**
- Létrehozva: [`plans/logic_spec_gamification_admin_integration.md`](plans/logic_spec_gamification_admin_integration.md)
- 30+ új admin API endpoint terv az `admin_gamification.py` routerben
- 12 új frontend oldal terv a `frontend_admin/pages/gamification/` mappában
- Új Gamification menücsoport terv 6 menüponttal
- Adatbázis séma javítások (UserStats, PointsLedger)
- Business logic javítások (penalty endpoint, GamificationService bypass)
- RBAC: `gamification:manage` permission
- Adatfolyam diagram (Mermaid)
- 15 implementációs kártya prioritási sorrenddel és függőségekkel
**3. GITEA KÁRTYÁK LÉTREHOZÁSA:**
15 kártya a `Epic 8 Gamification 2.0, Verseny és Önvéde` mérföldkő alatt:
| # | ID | Kártya Név | Scope |
|---|----|-----------|-------|
| 1 | #324 | Adatbázis: Gamification modell javítások (UserStats, PointsLedger) | Database |
| 2 | #325 | Backend: Új admin_gamification.py router (30+ admin végpont) | Backend |
| 3 | #326 | Backend: GamificationService refaktor (point_rules integráció) | Backend |
| 4 | #327 | Backend: Meglévő PATCH /admin/users/{id}/penalty endpoint javítása | Backend |
| 5 | #328 | Backend: gamification.py endpointok GamificationService-re átállítása | Backend |
| 6 | #329 | Frontend: Gamification menüpont + routing az admin Nuxt felületben | Frontend |
| 7 | #330 | Frontend: Gamification Dashboard oldal (/gamification/index.vue) | Frontend |
| 8 | #331 | Frontend: Pontszabályok + Szintek CRUD oldalak | Frontend |
| 9 | #332 | Frontend: Kitüntetések (Badge) kezelő oldal | Frontend |
| 10 | #333 | Frontend: Szezonok + Versenyek kezelő oldalak | Frontend |
| 11 | #334 | Frontend: Felhasználói statisztikák + büntetés/jutalom oldalak | Frontend |
| 12 | #335 | Frontend: Ranglista admin nézet (leaderboard.vue) | Frontend |
| 13 | #336 | Frontend: Master Config szerkesztő és Rendszerparaméterek oldalak | Frontend |
| 14 | #337 | Frontend: Pontnapló böngésző oldal (ledger.vue) | Frontend |
| 15 | #338 | Tesztelés: Gamification admin E2E tesztek | Backend+Frontend |
### 📂 Létrehozott fájlok
- [`plans/logic_spec_gamification_admin_integration.md`](plans/logic_spec_gamification_admin_integration.md) (373 sor)
### ⚠️ Feltárt kockázatok
1. UserStats modellből hiányzó mezők runtime hibát okozhatnak a meglévő gamification.py endpointokban
2. A PATCH /admin/users/{id}/penalty végpont a `gamification.level` nem létező mezőt módosítja
3. Több gamification.py végpont direktül módosít UserStats mezőket a GamificationService megkerülésével