from pydantic import BaseModel, Field from typing import Optional, Dict, Any 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 Config: from_attributes = True