STABLE: Final schema sync, optimized gitignore
This commit is contained in:
@@ -1,45 +1,38 @@
|
||||
from pydantic import BaseModel, Field
|
||||
from typing import Optional, Dict, Any
|
||||
from pydantic import BaseModel, Field, ConfigDict
|
||||
from typing import Optional, List
|
||||
|
||||
class ServiceCreateInternal(BaseModel):
|
||||
name: str = Field(..., description="A szolgáltató neve")
|
||||
|
||||
# --- HIERARCHIA ---
|
||||
# Ha a robot felismeri, hogy egy lánc része, itt tároljuk a szülő ID-t
|
||||
parent_id: Optional[int] = Field(None, description="Szülő egység ID-ja (pl. Franchise központ)")
|
||||
|
||||
# --- CÍM ADATOK ---
|
||||
postal_code: Optional[str] = None
|
||||
city: str
|
||||
street_name: Optional[str] = None
|
||||
street_type: Optional[str] = "utca"
|
||||
house_number: Optional[str] = None
|
||||
stairwell: Optional[str] = None
|
||||
floor: Optional[str] = None
|
||||
door: Optional[str] = None
|
||||
hrsz: Optional[str] = None
|
||||
|
||||
full_address: Optional[str] = Field(None, description="Eredeti, nyers cím szövege")
|
||||
|
||||
# --- ELÉRHETŐSÉG ---
|
||||
contact_phone: Optional[str] = None
|
||||
email: Optional[str] = None
|
||||
website: Optional[str] = None
|
||||
|
||||
# --- SOCIAL & AI ---
|
||||
# A Deep Dive fázishoz előkészítve
|
||||
social_links: Optional[Dict[str, str]] = Field(default_factory=dict)
|
||||
vibe_analysis: Optional[Dict[str, Any]] = Field(default_factory=dict)
|
||||
|
||||
# --- IDENTITÁS ÉS FORRÁS ---
|
||||
source: str # 'google', 'osm', 'manual', 'fb_scraper'
|
||||
external_id: Optional[str] = None
|
||||
|
||||
# Ez a robot "horgonya" a duplikációk ellen
|
||||
fingerprint: str = Field(..., description="Egyedi ujjlenyomat: Hash(Name+City+Street)")
|
||||
|
||||
trust_score: int = Field(30, ge=0, le=100)
|
||||
raw_data: Optional[Dict[str, Any]] = {}
|
||||
class ContactCreate(BaseModel):
|
||||
full_name: str
|
||||
email: str
|
||||
phone: Optional[str] = None
|
||||
contact_type: str = "primary"
|
||||
|
||||
class Config:
|
||||
from_attributes = True
|
||||
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)
|
||||
Reference in New Issue
Block a user