frontend 2026-06-10 bontva a 2 felület

This commit is contained in:
Roo
2026-06-10 08:06:07 +00:00
parent b84b1bab41
commit 90e3173fbc
59 changed files with 8616 additions and 1412 deletions

View File

@@ -0,0 +1,191 @@
# 📋 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`**Readonly**
- `password`**Külön modal**
#### 2⃣ Személyes Adatok (Person)
- `first_name`, `last_name`, `phone`
- `birth_place`, `birth_date`
- `mothers_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_number`
- `address_stairwell`, `address_floor`, `address_door`
- ⚠️ **`address_hrsz` NINCS 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:**
```json
{
"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