STABLE: Final schema sync, optimized gitignore
This commit is contained in:
@@ -1,72 +1,54 @@
|
||||
from pydantic import BaseModel, EmailStr, Field
|
||||
from typing import Optional, Dict, Any
|
||||
from datetime import date
|
||||
|
||||
# --- STEP 1: LITE REGISTRATION ---
|
||||
class UserLiteRegister(BaseModel):
|
||||
email: EmailStr
|
||||
password: str = Field(..., min_length=8)
|
||||
first_name: str
|
||||
last_name: str
|
||||
region_code: str = "HU"
|
||||
lang: str = Field("hu", description="Választott nyelv kódja")
|
||||
timezone: str = Field("Europe/Budapest", description="Felhasználó időzónája")
|
||||
|
||||
class UserLogin(BaseModel):
|
||||
email: EmailStr
|
||||
password: str
|
||||
|
||||
# --- STEP 2: KYC & ONBOARDING ---
|
||||
class ICEContact(BaseModel):
|
||||
name: str
|
||||
phone: str
|
||||
relationship: Optional[str] = None
|
||||
# /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: str
|
||||
expiry_date: date
|
||||
|
||||
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
|
||||
|
||||
model_config = ConfigDict(from_attributes=True)
|
||||
|
||||
class UserKYCComplete(BaseModel):
|
||||
phone_number: str
|
||||
""" Step 2: Teljes körű személyazonosítás és címadatok. """
|
||||
phone_number: str = Field(..., pattern=r"^\+?[0-9]{7,15}$")
|
||||
birth_place: str
|
||||
birth_date: date
|
||||
mothers_last_name: str
|
||||
mothers_first_name: str
|
||||
# Bontott címmezők (B pont szerint)
|
||||
|
||||
# Atomizált címadatok a pontos GPS-hez és Robot-munkához
|
||||
address_zip: str
|
||||
address_city: str
|
||||
address_street_name: str
|
||||
address_street_type: str
|
||||
address_street_type: str # utca, út, tér...
|
||||
address_house_number: str
|
||||
address_stairwell: Optional[str] = None # Lépcsőház
|
||||
address_floor: Optional[str] = None # Emelet
|
||||
address_door: Optional[str] = None # Ajtó
|
||||
address_hrsz: Optional[str] = None # Helyrajzi szám
|
||||
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
|
||||
|
||||
identity_docs: Dict[str, DocumentDetail]
|
||||
# Okmányok és Vészhelyzet
|
||||
identity_docs: Dict[str, DocumentDetail] # pl: {"ID_CARD": {...}, "LICENSE": {...}}
|
||||
ice_contact: ICEContact
|
||||
preferred_currency: Optional[str] = Field("HUF", max_length=3)
|
||||
|
||||
# --- COMMON & SECURITY ---
|
||||
class PasswordResetRequest(BaseModel):
|
||||
email: EmailStr
|
||||
|
||||
class PasswordResetConfirm(BaseModel):
|
||||
email: EmailStr
|
||||
token: str
|
||||
password: str = Field(..., min_length=8)
|
||||
password_confirm: str = Field(..., min_length=8)
|
||||
|
||||
preferred_language: str = "hu"
|
||||
preferred_currency: str = "HUF"
|
||||
|
||||
class Token(BaseModel):
|
||||
access_token: str
|
||||
token_type: str
|
||||
is_active: bool
|
||||
|
||||
class TokenPayload(BaseModel):
|
||||
"""JWT Token payload struktúrája validációhoz."""
|
||||
sub: Optional[str] = None
|
||||
role: Optional[str] = None
|
||||
rank: Optional[int] = 0
|
||||
scope_level: Optional[str] = None
|
||||
scope_id: Optional[str] = None
|
||||
region: Optional[str] = None
|
||||
refresh_token: Optional[str] = None
|
||||
token_type: str = "bearer"
|
||||
is_active: bool
|
||||
Reference in New Issue
Block a user