Files
service-finder/backend/app/schemas/organization.py
2026-06-10 08:06:07 +00:00

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)