Files
service-finder/docs/V01_gemini/07_REGISTRATION_INVITATION_AND_API.md

9.7 KiB

🏁 REGISZTRÁCIÓS ÉS AUTH PROTOKOLL (v1.4)

I. KÉTLÉPCSŐS ONBOARDING FOLYAMAT

Az UX optimalizálása és a banki szintű biztonság érdekében a folyamat két külön fázisra oszlik.

1. Fázis: "Lite" Regisztráció (Step 1)

  • Végpont: POST /api/v1/auth/register
  • Adatok: Email, Jelszó, Vezetéknév, Keresztnév, Régiókód.
  • Rendszeresemény:
    • Létrejön a technikai User rekord.
    • Állapot: is_active = False.
    • Szerepkör: Kényszerített kisbetűs user (Postgres Enum fix).
    • Megerősítés: A rendszer kiküld egy aktiváló emailt egy hash kóddal.
    • Válasz: JWT token status: pending_kyc flaggel.

2. Fázis: Banki KYC & Aktiválás (Step 2)

  • Végpont: POST /api/v1/auth/complete-kyc (Fejlesztés alatt)
  • Kötelező KYC adatok:
    • Anyja születési neve, születési hely/idő.
    • Okmányadatok: Személyi igazolvány és Jogosítvány száma + lejárati idők.
    • Járműkategóriák (pl. A, B, C) és speciális engedélyek (hajó, repülő).
  • Finalizálás (Atomi tranzakció):
    1. Person: Identitás rögzítése a JSONB dokumentumtárral.
    2. Wallet: Pénztárca nyitása 0 egyenleggel.
    3. Privát Flotta: Automatikus szervezet létrehozása (is_transferable = False).
    4. Tagság: Felhasználó rögzítése a flotta tulajdonosaként.
    5. Aktiválás: is_active = True és hozzáférés a rendszerhez.

II. TECHNIKAI SZABÁLYOK ÉS FIXEK

  • Postgres Enum: Minden szerepkört (role) kisbetűvel kell küldeni az adatbázis felé (user, nem USER).
  • Dinamikus Paraméterek: Az auth.reward_days (jutalom napok) és jutalék százalékok a data.system_settings táblából jönnek.
  • Audit Trail: Minden regisztrációs fázisról Audit Log készül.

🏁 REGISZTRÁCIÓS ÉS AUTH PROTOKOLL (v1.4)

I. KÉTLÉPCSŐS ONBOARDING FOLYAMAT

A rendszer a felhasználói élmény optimalizálása (UX) és a banki szintű biztonság érdekében két fázisra bontja a regisztrációt.

1. Fázis: "Lite" Regisztráció (Step 1)

  • Cél: Gyors belépés és a technikai User fiók létrehozása.
  • Kötelező mezők: Email, Jelszó, Vezetéknév, Keresztnév, Régiókód.
  • Rendszeresemény:
    • Létrejön a data.users rekord.
    • Állapot: is_active = False.
    • Szerepkör: Kötelezően kisbetűs user (Postgres Enum kényszerítés miatt).
    • Email: A rendszer azonnal kiküld egy ellenőrző emailt egy egyedi hash kóddal/linkkel.
    • Token: Az API egy korlátozott JWT tokent ad vissza, amely csak a Step 2 végpont elérésére jogosít (status: pending_kyc).

2. Fázis: KYC & Aktiválás (Step 2)

  • Cél: A valós identitás (Person) rögzítése és a gazdasági egységek inicializálása.
  • Kötelező adatok (Identity Verification):
    • Személyes: Anyja születési neve, születési hely, születési idő.
    • Okmányok: Személyi igazolvány száma és lejárati ideje.
    • Jogosítvány: Vezetői engedély száma, lejárata és kategóriák (pl. AM, A, B, C, CE).
    • Speciális: Hajóvezetői és repülőgép-vezetői engedély adatai (ha releváns).
  • Működés: A felhasználó csak ezen adatok kitöltése és sikeres ellenőrzése után válik teljes jogú taggá.

3. Fázis: Atomi Tranzakció (Finalization)

A KYC adatok beküldésekor a rendszer egyetlen adatbázis-tranzakcióban (Atomic) hajtja végre az alábbiakat:

  1. Person létrehozása: A KYC adatok és okmánymásolatok (JSONB) rögzítése.
  2. Wallet inicializálás: 0 Coin és 0 XP egyenleggel.
  3. Privát Flotta (Private Org): Létrejön a felhasználó saját cége (OrgType.INDIVIDUAL), amely nem átruházható (is_transferable = False).
  4. Aktiválás: A User fiók is_active = True állapotba kerül.
  5. Audit: Bejegyzés az audit_logs táblába a teljes körű regisztrációról.

II. MEGHÍVÓ ÉS JUTALÉK LOGIKA

  • Invite Tokenek:
    • REG_ONLY: Általános meghívó, beköti a felhasználót a 10-5-2% jutalék láncba.
    • COMPANY_JOIN: Meghatározott szervezetbe hív (CEO, Flotta Manager vagy Sofőr szerepkörbe).
  • Kredit Jóváírás:
    • Csak az első Prémium csomag befizetésekor történik jutalékfizetés a meghívási láncban.
    • A százalékos mérték (10%, 5% vagy 2%) a tranzakció pillanatában érvényes admin beállítások alapján rögzül (Snapshot).

III. TECHNIKAI ÉS BIZTONSÁGI SZABÁLYOK

  • Enum Case Sensitivity: A PostgreSQL userrole típusa miatt minden Enum értéket (user, admin, driver, service, fleet_manager) szigorúan kisbetűvel kell kezelni.
  • Dinamikus Paraméterezés: Tilos fix értékeket (hardcoded) használni. Az alábbiakat a data.system_settings táblából kell lekérni:
    • auth.reward_days: Regisztrációkor járó prémium napok (alapértelmezett: 14).
    • referral.level1-3: Jutalék szintek mértéke.
  • Email Manager: A send_email hívásakor tilos a subject paraméter átadása; a szerviz a template_key alapján automatikusan generálja azt.
  • Szigorú Helyreállítás: A banki szintű KYC után a jelszó-visszaállítás kérhető a Person adatok (Anyja neve, Okmány szám) megadásával is.

IV. SOCIAL AUTH (GOOGLE / FACEBOOK)

  • Social Auth esetén a Step 1 lerövidül, de a Step 2 (KYC) kötelező marad az aktiváláshoz.
  • Amíg a KYC hiányzik, a felhasználó "GUEST" státuszban marad, és nem fér hozzá a flottakezeléshez.

🏁 REGISZTRÁCIÓS ÉS AUTH PROTOKOLL (v1.1)

1. Hibakezelési Jegyzet (TypeError fix)

A rendszer korábbi verzióiban az EmailManager hívása paraméter-eltérést okozott.

  • Megoldás: A send_email hívásakor tilos a subject paraméter átadása, mivel azt a szerviz a template_key alapján generálja a belső szótárából.

2. Adatbázis Integritás

Az Organization tábla bővült az owner_id mezővel, amely a magánszemély (Individual) flottájának tulajdonosát jelöli.

  • Minden regisztrációkor létrejön egy automatikus flotta.
  • A flotta típusa: OrgType.INDIVIDUAL.

3. Dinamikus Paraméterek

A regisztrációt követő jutalmak (pl. 14 napos prémium) a data.system_settings táblából kerülnek kiolvasásra. Keresett kulcs: auth.reward_days.

🏁 REGISZTRÁCIÓ, MEGHÍVÓK ÉS API PROTOKOLL (v1.0)

1. Regisztrációs Flow (Atomcsapás-biztos tranzakció)

Minden új regisztráció egyetlen adatbázis-tranzakcióban (Atomic) hajtja végre az alábbiakat:

  1. User & Person létrehozása: Alapidentitás rögzítése.
  2. Wallet inicializálás: 0 Coin és 0 XP egyenleggel.
  3. Privát Flotta (Private Org): Létrejön a felhasználó saját cége, ahol ő a tulajdonos.
  4. Meghívó feldolgozása: - Ha Personal Invite: Bekötés a 10-5-2% jutalék láncba.
    • Ha Company Invite: Másodlagos kapcsolat létrehozása a meghívó céghez (Role: Driver/Admin).

2. Meghívó Küldés Logikája (Invitation Engine)

  • Generálás: Admin vagy jogosult User generál egy egyedi invite_token-t.
  • Típusok:
    • REG_ONLY: Csak a rendszerbe hív.
    • COMPANY_JOIN: Meghatározott cégbe és pozícióba hív.
  • Jutalék számítás: A jóváírandó kredit C: C = P_{amount} \cdot \frac{R_{level}}{100} Ahol P a befizetett összeg, R pedig az aktuális szint (10, 5 vagy 2) értéke.

3. API Végpontok (Baseline v1)

  • POST /api/v1/auth/register: Komplett onboarding folyamat.
  • POST /api/v1/auth/invite/send: Meghívó generálása és küldése.
  • GET /api/v1/auth/invite/verify/{token}: Token ellenőrzése regisztráció előtt.

4. Jelszó Helyreállítási Protokoll (Recovery)

A rendszer két szintű helyreállítást biztosít:

A) Standard (Email alapú)

  • POST /api/v1/auth/forgot-password -> Email kiküldése ideiglenes tokennel.

B) Szigorú (Banki szintű / KYC alapú)

  • Végpont: POST /api/v1/auth/recover-identity

  • Kötelező adatok: Vezetéknév, Keresztnév, Anyja neve, Személyi igazolvány száma.

  • Logika: 1. A rendszer azonosítja a Person rekordot. 2. Ha sikeres, a rendszer kiküld egy visszaállító linket a Person-höz tartozó elsődleges telefonszámra (SMS) vagy a legutolsó aktív Email címre. 3. Sikeres helyreállítás után a felhasználónak kötelezően jelszót kell cserélnie.

    🛡️ 10. Kormányozhatóság és Biztonsági Beállítások

A rendszer biztonsági paraméterei központilag, a környezeti változókon keresztül szabályozhatók. Ez lehetővé teszi a biztonsági szint gyors módosítását (pl. támadás esetén szigorítás) a kód módosítása nélkül.

10.1. Token Élettartam Szabályok

A .env fájlban (vagy a rendszer beállításaiban) az alábbi paraméterekkel szabályozható a hozzáférés:

Paraméter Leírás Alapértelmezett
REGISTRATION_TOKEN_EXPIRE_HOURS Regisztráció megerősítésére álló idő 48 óra
PASSWORD_RESET_TOKEN_EXPIRE_HOURS Jelszó visszaállítására álló idő 1 óra

10.2. Ideiglenes .env Konfiguráció (Példa)

# SECURITY SETTINGS
REGISTRATION_TOKEN_EXPIRE_HOURS=48
PASSWORD_RESET_TOKEN_EXPIRE_HOURS=1

# EMAIL SYSTEM
EMAIL_PROVIDER=sendgrid
EMAILS_FROM_EMAIL=info@profibot.hu
EMAILS_FROM_NAME='Profibot Service Finder'
SENDGRID_API_KEY=SG.xxxxxxxxxxxxxxxxxxxx

## 4. Corporate Onboarding (Céges regisztráció)
A folyamat célja, hogy egy már létező Person (vagy új User) saját szervezetet (Organization) alapítson.
- **Többszintű validáció:** Kötelező adószám (VAT/Tax ID) ellenőrzés (HU esetén formátum + VIES API).
- **Hierarchia:** A regisztráló automatikusan `owner` rangot kap.
- **Izoláció:** Minden cég saját mappastruktúrát kap a NAS-on az okmányok izolált kezelése érdekében.