# /opt/docker/dev/service_finder/backend/app/schemas/auth.py from pydantic import BaseModel, EmailStr, Field, ConfigDict from typing import Optional, Dict, List from datetime import date, datetime class DocumentDetail(BaseModel): number: Optional[str] = None expiry_date: Optional[date] = None class ICEContact(BaseModel): name: str phone: str relationship: str class UserLiteRegister(BaseModel): """ Step 1: Gyors regisztráció (Alap azonosítás). """ email: EmailStr password: str = Field(..., min_length=8, description="Minimum 8 karakter hosszú jelszó") first_name: str last_name: str region_code: Optional[str] = "HU" lang: Optional[str] = "hu" timezone: Optional[str] = "Europe/Budapest" referred_by_code: Optional[str] = None # Meghívó referral kódja (opcionális) model_config = ConfigDict(from_attributes=True) class UserKYCComplete(BaseModel): """ Step 2: Teljes körű személyazonosítás és címadatok (Soft KYC). """ first_name: Optional[str] = None last_name: Optional[str] = None phone_number: Optional[str] = Field(default=None, pattern=r"^\+?[0-9]{7,15}$") birth_place: Optional[str] = None birth_date: Optional[date] = None mothers_last_name: Optional[str] = None mothers_first_name: Optional[str] = None region_code: Optional[str] = "HU" # Soft KYC: Csak az irányítószám és város kötelező, a többi opcionális address_zip: str address_city: str address_street_name: Optional[str] = None address_street_type: Optional[str] = None # utca, út, tér... address_house_number: Optional[str] = None address_stairwell: Optional[str] = None address_floor: Optional[str] = None address_door: Optional[str] = None address_hrsz: Optional[str] = None # Külterület/Helyrajzi szám # Okmányok és Vészhelyzet (Opcionális Soft KYC) identity_docs: Optional[Dict[str, DocumentDetail]] = None # pl: {"ID_CARD": {...}, "LICENSE": {...}} ice_contact: Optional[ICEContact] = None preferred_language: str = "hu" preferred_currency: str = "HUF" class Token(BaseModel): access_token: str refresh_token: Optional[str] = None token_type: str = "bearer" is_active: bool