szolgáltatók beálltásai, szerkesztése , létrehozása

This commit is contained in:
Roo
2026-06-17 11:52:25 +00:00
parent 213ba3b0f1
commit bf3a971ff1
56 changed files with 14421 additions and 1512 deletions

View File

@@ -0,0 +1,131 @@
# Gamification Penalty System — Adatbázis Felderítési Jelentés
**Dátum:** 2026-06-17
**Cél:** A 3-szintű Büntetési Mátrix (Penalty System) és Árnyéktiltás (Shadowban) bevezetésének adatbázis-struktúra előfeltérképezése
---
## 1. FELADAT: Büntetési Szint (Penalty Level) — Meglévő Struktúra
### ✅ Megállapítás: A büntetési infrastruktúra NAGYRÉSZT KÉSZ
A Vezető Tervező örömére: a rendszer **már tartalmazza** a büntetési pontrendszer alapjait. Az alábbi táblák és mezők **már léteznek** az adatbázisban és a modellekben:
#### backend/app/models/gamification/gamification.py
| Tábla (séma) | Mező | Típus | Státusz |
|---|---|---|---|
| gamification.user_stats | penalty_points | Integer (server_default=0) | ✅ Létezik |
| gamification.user_stats | restriction_level | Integer (server_default=0) | ✅ Létezik |
| gamification.user_stats | penalty_quota_remaining | Integer (default=3) | ✅ Létezik |
| gamification.user_stats | banned_until | DateTime(timezone=True) | ✅ Létezik |
| gamification.user_stats | current_level | Integer (default=1) | ✅ Létezik |
| gamification.level_configs | level_number | Integer (unique) | ✅ Létezik (támogat negatív értékeket!) |
| gamification.level_configs | is_penalty | Boolean (default=False) | ✅ Létezik |
| gamification.level_configs | min_points | Integer | ✅ Létezik |
| gamification.level_configs | rank_name | String | ✅ Létezik |
| gamification.points_ledger | penalty_change | Integer (server_default=0) | ✅ Létezik |
| identity.persons | penalty_points | Integer (default=-1) | ✅ Létezik |
| identity.persons | social_reputation | Numeric(3,2) | ✅ Létezik |
| identity.persons | lifetime_xp | BigInteger (default=-1) | ✅ Létezik |
| identity.user_trust_profiles | trust_score | Integer (default=0) | ✅ Létezik |
| identity.user_trust_profiles | identity_risk_flag | Boolean (default=False) | ✅ Létezik |
### ⚠️ HIÁNYZIK: penalty_level (a 3-szintű büntetési mátrix maga)
A restriction_level mező hasonló koncepció, de jelenleg nincs dedikált penalty_level (Integer, -1 / -2 / -3) mező.
### Javaslat az új mezők helyére
A gamification.user_stats táblába érdemes beilleszteni:
```
PenaltyLevel: Integer, server_default=0 (-1=Figyelmeztetés, -2=Korlátozás, -3=Árnyéktiltás)
GoodDeedsCount: Integer, server_default=0 (Jóvátételi cselekedetek számlálója)
ShadowBannedUntil: DateTime(timezone=True), nullable=True (Látszólagos tiltás vége)
```
**Indoklás:** A user_stats tábla már most is tartalmazza a penalty_points, restriction_level, penalty_quota_remaining és banned_until mezőket — ez a természetes helye minden büntetési információnak. A Person tábla (identity.persons) szintén rendelkezik penalty_points mezővel, de ott ez a személy szintű, nem a gamification profil része.
---
## 2. FELADAT: Hibajelentés (Report) Tábla
### ❌ Megállapítás: NINCS dedikált report/abuse tábla
Az adatbázisban és a modellek között **NEM található** olyan tábla, amelynek neve report, abuse, flag, ticket, moderation_content vagy data_correction lenne. A PostgreSQL information_schema lekérdezés nulla találatot adott.
### Ami KÖZELÍT
| Tábla | Kapcsolat | Korlát |
|---|---|---|
| marketplace.service_providers | status mező ModerationStatus enumnak | Ez a beküldött szolgáltatók moderálására való, **nem** a visszaélés-jelentésre |
| marketplace.service_profiles | flagged státusz a ServiceStatus enumban | Szolgáltatók flag-elésére |
| gamification.user_contributions | contribution_type = 'report_abuse' | Naplózza, hogy ki jelentett, de **nincs dedikált jelentés adattábla** |
### Javaslat: Új user_reports tábla létrehozása
Javasolt séma a gamification sémában (ahol a user_contributions is van):
```
user_reports tábla (gamification séma):
- id Integer (PK)
- reporter_id Integer FK->identity.users.id
- target_type String(50) ('service_profile', 'review', 'vehicle', 'user')
- target_id Integer
- reason_category String(50) ('fake_service', 'wrong_data', 'spam', 'abuse', 'other')
- description Text (nullable)
- evidence_data JSONB (nullable)
- status String(20) default='pending' ('pending','verified','dismissed','action_taken')
- reviewed_by Integer FK->identity.users.id (nullable)
- resolution Text (nullable)
- created_at DateTime
- resolved_at DateTime (nullable)
```
---
## 3. FELADAT: Adminisztrációs Szabályok (System Parameters)
### ✅ Megállapítás: A rendszer RENDELKEZIK dinamikus paraméter táblával
A system.system_parameters tábla **már létezik** és kifejezetten alkalmas a büntetési szabályok adminisztrációjára.
| Oszlop | Típus | Leírás |
|---|---|---|
| key | VARCHAR | Paraméter kulcs (pl. penalty_level_1_quota) |
| category | VARCHAR | Kategorizálás (pl. penalty_system) |
| value | JSONB | A paraméter értéke (JSON, bármi lehet) |
| scope_level | VARCHAR | Hatáskör: global, country, region, organization, user |
| scope_id | VARCHAR | A hatáskör azonosítója |
| is_active | BOOLEAN | Aktív-e |
| description | VARCHAR | Emberi leírás |
### Javasolt paraméterkulcsok a büntetési rendszerhez
| key | category | value (JSON) |
|---|---|---|
| penalty_level_1_threshold | penalty_system | {"min_bad_actions": 2, "quota_reduction": 1} |
| penalty_level_2_threshold | penalty_system | {"min_bad_actions": 5, "xp_multiplier": 0.5} |
| penalty_level_3_threshold | penalty_system | {"min_bad_actions": 10, "shadowban": true, "max_actions_per_day": 1} |
| penalty_action_points | penalty_system | {"fake_service_submission": 10, "fake_review": 15, "spam_comment": 5} |
| penalty_good_deed_recovery | penalty_system | {"points_per_good_deed": -3, "max_recovery_per_day": 1} |
> **Előny:** A scope_level oszlop lehetővé teszi, hogy **ország-specifikus** vagy akár **felhasználó-specifikus** büntetési szabályokat állítsunk be, anélkül hogy a kódot módosítani kellene.
---
## Összefoglaló táblázat
| Feladat | Státusz | Megjegyzés |
|---|---|---|
| **1. Büntetési szint helye** | ✅ **Alap infrastruktúra kész** | user_stats.penalty_points, restriction_level, penalty_quota_remaining, banned_until, level_configs.is_penalty — mind létezik. HIÁNYZIK: dedikált penalty_level és good_deeds_count mező |
| **2. Hibajelentés tábla** | ❌ **NINCS** | Egyetlen dedikált report/abuse tábla sem létezik. A user_contributions.contribution_type = 'report_abuse' csak naplóz, nem tárol jelentéseket. **Teljesen új tábla kell** |
| **3. Adminisztrációs szabályok** | ✅ **Alkalmas** | system.system_parameters JSONB-alapú, scoped paraméter tábla kiválóan megfelel a dinamikus szabályok tárolására. Új paramétereket kell csak beszúrni |
## Következő lépések (ajánlott sorrend)
1. **Új mezők hozzáadása** gamification.user_stats-hoz: penalty_level, good_deeds_count, shadow_banned_until
2. **Új tábla létrehozása:** gamification.user_reports (vagy gamification.content_reports)
3. **Rendszerparaméterek feltöltése:** system.system_parameters büntetési szabályokkal
4. **Penalty Engine service** megírása, ami a level_configs táblából és a system_parameters-ből olvassa a szabályokat, és automatikusan lépteti a penalty_level-et