Cleanup: MB 2.0 Gap Analysis előtti állapot (adatok kizárva)
This commit is contained in:
47
backend/app/schemas/evidence.py
Normal file
47
backend/app/schemas/evidence.py
Normal file
@@ -0,0 +1,47 @@
|
||||
# app/schemas/evidence.py
|
||||
from pydantic import BaseModel, Field
|
||||
from typing import Optional
|
||||
|
||||
class RegistrationDocumentExtracted(BaseModel):
|
||||
"""A magyar forgalmi engedély teljes adattartalma."""
|
||||
# A - Okmány adatok
|
||||
license_plate: Optional[str] = Field(None, alias="A", description="Rendszám")
|
||||
first_registration_date: Optional[str] = Field(None, alias="B", description="Első nyilvántartásba vétel")
|
||||
doc_serial_number: Optional[str] = Field(None, description="Okmány sorszáma (jobb felső sarok)")
|
||||
|
||||
# C - Tulajdonos/Üzembentartó adatok
|
||||
owner_last_name: Optional[str] = Field(None, alias="C.1.1", description="Családi név vagy cégnév")
|
||||
owner_first_name: Optional[str] = Field(None, alias="C.1.2", description="Utónév")
|
||||
owner_address: Optional[str] = Field(None, alias="C.1.3", description="Lakcím/Székhely")
|
||||
owner_status: Optional[str] = Field(None, alias="C.4", description="Jogosultság státusza (a=tulaj, b=nem tulaj)")
|
||||
|
||||
# D - Jármű technikai adatai
|
||||
make: Optional[str] = Field(None, alias="D.1", description="Gyártmány")
|
||||
vehicle_type: Optional[str] = Field(None, alias="D.2", description="Típus")
|
||||
commercial_description: Optional[str] = Field(None, alias="D.3", description="Kereskedelmi leírás")
|
||||
vin: Optional[str] = Field(None, alias="E", description="Alvázszám (17 karakter)")
|
||||
|
||||
# G, F - Tömeg adatok
|
||||
weight_kg: Optional[int] = Field(None, alias="G", description="Saját tömeg")
|
||||
max_weight_kg: Optional[int] = Field(None, alias="F.1", description="Együttes tömeg")
|
||||
|
||||
# P, V - Motor és Környezetvédelem
|
||||
engine_capacity: Optional[int] = Field(None, alias="P.1", description="Hengerűrtartalom (cm3)")
|
||||
engine_power: Optional[float] = Field(None, alias="P.2", description="Teljesítmény (kW)")
|
||||
fuel_type: Optional[str] = Field(None, alias="P.3", description="Hajtóanyag")
|
||||
engine_code: Optional[str] = Field(None, alias="P.5", description="Motorkód")
|
||||
env_category: Optional[str] = Field(None, alias="V.9", description="Környezetvédelmi osztály")
|
||||
|
||||
# R, S, H - Egyéb
|
||||
color: Optional[str] = Field(None, alias="R", description="Szín")
|
||||
seats: Optional[int] = Field(None, alias="S.1", description="Ülések száma")
|
||||
expiry_date: Optional[str] = Field(None, alias="H", description="Műszaki érvényesség")
|
||||
transmission_type: Optional[str] = Field(None, description="Sebességváltó fajtája")
|
||||
|
||||
class Config:
|
||||
populate_by_name = True
|
||||
|
||||
class OcrResponse(BaseModel):
|
||||
success: bool
|
||||
message: str
|
||||
data: Optional[RegistrationDocumentExtracted] = None
|
||||
@@ -1,20 +1,45 @@
|
||||
from pydantic import BaseModel
|
||||
from typing import Optional
|
||||
from pydantic import BaseModel, Field
|
||||
from typing import Optional, Dict, Any
|
||||
|
||||
class ServiceCreateInternal(BaseModel):
|
||||
name: str
|
||||
postal_code: str
|
||||
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: str
|
||||
street_type: str
|
||||
house_number: 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
|
||||
source: str
|
||||
external_id: 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
|
||||
Reference in New Issue
Block a user