45 lines
1.6 KiB
Python
45 lines
1.6 KiB
Python
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 |