8.8 KiB
8.8 KiB
📋 Person & User Profil Adatkezelés Audit (2026-06-06)
🎯 Cél
A Person és User entitások által nyilvántartott adatok összehasonlítása a frontend ProfileView által megjelenített és szerkeszthető mezőkkel.
📊 Adatbázis Modellek (Backend)
🧑 Person (identity.persons) – Természetes Személy
Séma: identity.persons
| Mező | Típus | Nullable | Cél |
|---|---|---|---|
id |
BigInteger | NOT NULL | Elsődleges kulcs |
id_uuid |
UUID | NOT NULL | Külső API-khoz UUID azonosító |
address_id |
UUID | NULL | FK → system.addresses |
identity_hash |
String(64) | NULL | Deduplikáció: Név+Anyja+DOB hash |
last_name |
String | NOT NULL | ✅ Frontend használja |
first_name |
String | NOT NULL | ✅ Frontend használja |
phone |
String | NULL | ✅ Frontend használja |
mothers_last_name |
String | NULL | ✅ Frontend használja |
mothers_first_name |
String | NULL | ✅ Frontend használja |
birth_place |
String | NULL | ✅ Frontend használja |
birth_date |
DateTime | NULL | ✅ Frontend használja |
identity_docs |
JSON | NOT NULL (default {}) |
✅ Részben használva (ID_CARD, LICENSE) |
ice_contact |
JSON | NOT NULL (default {}) |
❌ NEM használja a frontend! |
lifetime_xp |
BigInteger | NOT NULL (default -1) | ❌ Gamification – nem látható |
penalty_points |
Integer | NOT NULL (default -1) | ❌ Gamification – nem látható |
social_reputation |
Numeric(3,2) | NOT NULL | ❌ Nem látható |
is_sales_agent |
Boolean | NOT NULL | ⚙️ Belső rendszer, nem látható |
is_active |
Boolean | NOT NULL | ⚙️ Belső rendszer |
is_ghost |
Boolean | NOT NULL | ⚙️ Soft-delete logika |
merged_into_id |
BigInteger | NULL | FK (self) – MDM merge logika |
👤 User (identity.users) – Login Entitás
Séma: identity.users
| Mező | Típus | Nullable | Frontend látható? |
|---|---|---|---|
id |
Integer | NOT NULL | – |
email |
String | NOT NULL (unique) | ✅ Readonly a profilban |
hashed_password |
String | NULL | ✅ Külön modal változtatáshoz |
role |
UserRole ENUM | NOT NULL | ❌ Nem látható |
person_id |
BigInteger | NULL | FK |
subscription_plan |
String(30) | NOT NULL (default 'FREE') | ❌ Nem látható |
subscription_expires_at |
DateTime | NULL | ❌ Nem látható |
is_vip |
Boolean | NOT NULL | ❌ Nem látható |
referral_code |
String(20) | NULL (unique) | ❌ Nem látható |
preferred_language |
String(5) | NOT NULL (default "hu") | ❌ Nem látható/szerkeszthető! |
region_code |
String(5) | NOT NULL (default "HU") | ❌ Nem látható! |
preferred_currency |
String(3) | NOT NULL (default "HUF") | ❌ Nem látható! |
ui_mode |
String(20) | NOT NULL (default "personal") | ❌ Nem látható! |
alternative_emails |
JSON | NOT NULL (default []) |
❌ Nem látható |
email_history |
JSON | NOT NULL (default []) |
❌ Nem látható |
🏠 Address (system.addresses)
| Mező | Típus | Frontend használja? |
|---|---|---|
street_name |
String(200) | ✅ address_street_name |
street_type |
String(50) | ✅ address_street_type |
house_number |
String(50) | ✅ address_house_number |
stairwell |
String(20) | ✅ address_stairwell |
floor |
String(20) | ✅ address_floor |
door |
String(20) | ✅ address_door |
parcel_id (HRSZ) |
String(50) | ⚠️ EditForm-ban van, de UI-on HIÁNYZIK! |
.zip (property) |
String | ✅ address_zip |
.city (property) |
String | ✅ address_city |
🖥️ Frontend ProfileView.vue
✅ Megjelenített és Szerkeszthető Mezők
1️⃣ Fiók Adatok (User)
email❌ Readonlypassword✅ Külön modal
2️⃣ Személyes Adatok (Person)
first_name,last_name,phonebirth_place,birth_datemothers_last_name,mothers_first_name
3️⃣ Okmányok (identity_docs JSON)
- ID_CARD:
number,expiry_date - LICENSE:
number,expiry_date,categories
4️⃣ Lakcím (Address)
address_zip,address_city(auto-fill)address_street_name,address_street_type,address_house_numberaddress_stairwell,address_floor,address_door- ⚠️
address_hrszNINCS UI-on!
🚨 KRITIKUS HIÁNYOSSÁGOK
🔴 1. HRSZ (helyrajzi szám) mező hiányzik a UI-ból
Probléma: Az editForm.address_hrsz reactive változóban szerepel, a backend támogatja (Address.parcel_id), de nincs input mező a template-ben.
Hatás: Vidéki ingatlanok (telek, tanya) esetén a HRSZ kötelező adat lehet, ezt jelenleg nem lehet megadni.
🟠 2. Vészhelyzeti Kapcsolattartó (ICE Contact) hiányzik
Probléma: A Person.ice_contact JSON mező az adatbázisban létezik (default {}), de sehol sem szerkeszthető.
Hatás: Balesetnél vagy vészhelyzetben nem tud a rendszer értesítést küldeni.
Javasolt struktúra:
{
"name": "Nagy János",
"relationship": "testvér",
"phone": "+36 30 123 4567",
"email": "janos.nagy@example.com"
}
```
### 🟡 3. User Preferenciák nem szerkeszthetők
**Probléma:** Az alábbi User-szintű beállítások NEM láthatók/módosíthatók:
- `preferred_language` (jelenleg "hu" fix)
- `region_code` (jelenleg "HU" fix)
- `preferred_currency` (jelenleg "HUF" fix)
- `ui_mode` (personal/fleet váltás)
**Hatás:**
- A nyelvet a LanguageSwitcher komponens kezeli, de nem kerül mentésre a User táblába
- A többdevizás költségkövetés (EUR, USD) nem működik
- A "personal" vs "fleet" mód nem váltható
### 🟢 4. Passport (Útlevél) és Tax Number (Adószám) hiányzik
**Javasolt bővítés (identity_docs JSON):**
```json
{
"PASSPORT": { "number": "...", "expiry_date": "...", "issuing_country": "HU" },
"TAX_ID": { "number": "...", "country": "HU" }
}
```
### 🔵 5. Gamification és Trust Score adatok nem láthatók
**Probléma:** A felhasználó **nem láthatja a saját** statisztikáit:
- `Person.lifetime_xp`, `penalty_points`, `social_reputation`
- `UserTrustProfile.trust_score` (Gondos Gazda Index)
**Hatás:** A gamification funkciók nem motiválják a felhasználót.
**Megoldás:** A backend már támogatja: `GET /users/me/trust`
### 🟣 6. Subscription (Előfizetés) információk elrejtve
**Probléma:** `subscription_plan`, `subscription_expires_at`, `is_vip` **sehol sem látszódnak**.
**Hatás:** A felhasználó nem tudja, meddig érvényes a PRO csomagja.
---
## 📝 ÖSSZEFOGLALÓ TÁBLÁZAT
| Kategória | Backend (DB) | Frontend (UI) | Státusz |
|-----------|--------------|---------------|---------|
| **Person főbb adatok** | ✅ Teljes | ✅ Teljes | 🟢 **SZINKRONBAN** |
| **Identity Docs (ID, License)** | ✅ JSON | ✅ Szerkeszthető | 🟢 **SZINKRONBAN** |
| **Lakcím alapadatok** | ✅ 8 mező | ✅ 8 mező | 🟢 **SZINKRONBAN** |
| **HRSZ (parcel_id)** | ✅ Létezik | ❌ **Hiányzik** | 🔴 **GAP!** |
| **ICE Contact** | ✅ JSON | ❌ **Hiányzik** | 🔴 **GAP!** |
| **User preferenciák** | ✅ 4 mező | ❌ **Nem szerkeszthető** | 🟠 **GAP!** |
| **Passport, Tax ID** | ⚠️ JSON-ban lehetne | ❌ **Hiányzik** | 🟡 **Fejlesztendő** |
| **Gamification** | ✅ Létezik | ❌ **Nem látható** | 🟡 **Fejlesztendő** |
| **Subscription** | ✅ Létezik | ❌ **Nem látható** | 🟡 **Fejlesztendő** |
---
## 🎯 KÖVETKEZŐ LÉPÉSEK
### 🔴 Kritikus (Immediate)
1. **HRSZ mező hozzáadása** a ProfileView.vue-hoz (~10 perc)
2. **PersonUpdate schema audit**: Megkeresni a sémát
### 🟠 Fontos (Short-term)
3. **ICE Contact szerkesztő** (~1 óra)
4. **User Preferences** szerkeszthetővé tétele (~2 óra)
### 🟡 Hasznos (Mid-term)
5. **Passport és Tax ID** (~1 óra)
6. **Gamification/Trust Score megjelenítés** (~30 perc)
7. **Subscription info megjelenítése** (~20 perc)
---
**Dokumentum:** 2026-06-06 | Service Finder System Audit