Files
service-finder/docs/profile_person_user_audit_2026-06-06.md
2026-06-10 08:06:07 +00:00

8.8 KiB
Raw Permalink Blame History

📋 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:

{
  "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