68 lines
2.1 KiB
Python
Executable File
68 lines
2.1 KiB
Python
Executable File
from pydantic import BaseModel, Field, ConfigDict
|
|
from typing import Optional, List, Any
|
|
|
|
class ContactCreate(BaseModel):
|
|
full_name: str
|
|
email: str
|
|
phone: Optional[str] = None
|
|
contact_type: str = "primary"
|
|
|
|
class CorpOnboardIn(BaseModel):
|
|
""" Teljes onboarding adatcsomag atomizált címekkel. """
|
|
full_name: str = Field(..., description="Hivatalos cégnév")
|
|
name: str = Field(..., description="Rövid név")
|
|
display_name: str
|
|
|
|
tax_number: str
|
|
reg_number: Optional[str] = None
|
|
country_code: str = "HU"
|
|
language: str = "hu"
|
|
default_currency: str = "HUF"
|
|
|
|
# --- ATOMIZÁLT CÍM (Modell szinkron) ---
|
|
address_zip: str
|
|
address_city: str
|
|
address_street_name: str
|
|
address_street_type: str
|
|
address_house_number: str
|
|
address_stairwell: Optional[str] = None
|
|
address_floor: Optional[str] = None
|
|
address_door: Optional[str] = None
|
|
address_hrsz: Optional[str] = None
|
|
|
|
contacts: List[ContactCreate] = []
|
|
|
|
class CorpOnboardResponse(BaseModel):
|
|
organization_id: int
|
|
status: str
|
|
model_config = ConfigDict(from_attributes=True)
|
|
|
|
|
|
class OrganizationUpdate(BaseModel):
|
|
"""PATCH séma a szervezet adatainak részleges frissítéséhez.
|
|
Támogatja a visual_settings JSONB mező biztonságos részleges frissítését."""
|
|
visual_settings: Optional[dict] = None
|
|
display_name: Optional[str] = None
|
|
default_currency: Optional[str] = None
|
|
language: Optional[str] = None
|
|
|
|
|
|
class OrganizationResponse(BaseModel):
|
|
"""Szervezet adatainak visszaadása (DTO).
|
|
Tartalmazza a visual_settings mezőt a frontend számára."""
|
|
id: int
|
|
name: str
|
|
full_name: str
|
|
display_name: Optional[str] = None
|
|
tax_number: Optional[str] = None
|
|
country_code: str = "HU"
|
|
status: str
|
|
org_type: Optional[str] = None
|
|
is_active: bool = True
|
|
is_deleted: bool = False
|
|
subscription_plan: str = "FREE"
|
|
visual_settings: Optional[dict] = None
|
|
notification_settings: Optional[Any] = None
|
|
external_integration_config: Optional[Any] = None
|
|
|
|
model_config = ConfigDict(from_attributes=True) |