Járműkezelés majdnem kész frontend
This commit is contained in:
@@ -104,6 +104,9 @@ class AssetResponse(BaseModel):
|
||||
# === PROFILE COMPLETION ===
|
||||
profile_completion_percentage: int = Field(default=0, ge=0, le=100)
|
||||
|
||||
# === PRIMARY VEHICLE FLAG ===
|
||||
is_primary: bool = Field(default=False, description="Elsődleges jármű (tárolva: individual_equipment JSONB)")
|
||||
|
||||
model_config = ConfigDict(from_attributes=True)
|
||||
|
||||
|
||||
@@ -143,6 +146,9 @@ class AssetCreate(BaseModel):
|
||||
audio_system_type: Optional[str] = Field(None, max_length=100, description="Hangrendszer")
|
||||
individual_equipment: Dict[str, Any] = Field(default_factory=dict, description="Egyedi felszerelések")
|
||||
|
||||
# === MILEAGE (Optional) ===
|
||||
current_mileage: Optional[int] = Field(None, ge=0, description="Aktuális km óra állás")
|
||||
|
||||
# === TIMELINE (Optional) ===
|
||||
year_of_manufacture: Optional[int] = Field(None, ge=1900, le=2100, description="Gyártási év")
|
||||
first_registration_date: Optional[datetime] = Field(None, description="Első forgalomba helyezés dátuma")
|
||||
@@ -151,6 +157,12 @@ class AssetCreate(BaseModel):
|
||||
organization_id: Optional[int] = Field(None, description="Szervezet ID (alapértelmezett a felhasználó szervezete)")
|
||||
branch_id: Optional[UUID] = Field(None, description="Garázs (Branch) ID, ahova a járművet rendeljük. Ha nincs megadva, a szervezet központi garázsába kerül.")
|
||||
|
||||
# === PRIMARY VEHICLE FLAG ===
|
||||
is_primary: bool = Field(default=False, description="Elsődleges jármű (tárolva: individual_equipment JSONB)")
|
||||
|
||||
# === DATA STATUS (for transfer/duplicate scenarios) ===
|
||||
data_status: Optional[str] = Field(None, description="Adat státusz (pl. 'draft' tulajdonosváltáskor)")
|
||||
|
||||
# === STATUS VALIDATION ===
|
||||
@validator('status', pre=True, always=True)
|
||||
def determine_status(cls, v, values):
|
||||
@@ -170,4 +182,51 @@ class AssetCreate(BaseModel):
|
||||
# === COMPUTED FIELD: status ===
|
||||
status: Optional[str] = Field(None, description="Automatikusan számított státusz (draft/active)")
|
||||
|
||||
model_config = ConfigDict(from_attributes=True)
|
||||
|
||||
|
||||
class AssetUpdate(BaseModel):
|
||||
""" Jármű adatainak frissítése - minden mező opcionális. """
|
||||
# === CORE IDENTIFICATION ===
|
||||
license_plate: Optional[str] = Field(None, min_length=2, max_length=20, description="Rendszám")
|
||||
vin: Optional[str] = Field(None, min_length=1, max_length=50, description="VIN szám")
|
||||
|
||||
# === CLASSIFICATION ===
|
||||
brand: Optional[str] = Field(None, max_length=100, description="Márka")
|
||||
model: Optional[str] = Field(None, max_length=100, description="Modell")
|
||||
vehicle_class: Optional[str] = Field(None, max_length=50, description="Járműosztály")
|
||||
fuel_type: Optional[str] = Field(None, max_length=50, description="Üzemanyag típus")
|
||||
|
||||
# === TECHNICAL SPECS ===
|
||||
catalog_id: Optional[int] = Field(None, description="Katalógus ID")
|
||||
engine_capacity: Optional[int] = Field(None, ge=0, description="Hengerűrtartalom (cm³)")
|
||||
power_kw: Optional[int] = Field(None, ge=0, description="Teljesítmény (kW)")
|
||||
torque_nm: Optional[int] = Field(None, ge=0, description="Nyomaték (Nm)")
|
||||
cylinder_layout: Optional[str] = Field(None, max_length=50, description="Hengerelrendezés")
|
||||
transmission_type: Optional[str] = Field(None, max_length=50, description="Váltó típus")
|
||||
drive_type: Optional[str] = Field(None, max_length=50, description="Hajtás")
|
||||
euro_classification: Optional[str] = Field(None, max_length=10, description="EURO besorolás")
|
||||
|
||||
# === PHYSICAL DIMENSIONS ===
|
||||
curb_weight: Optional[int] = Field(None, ge=0, description="Saját tömeg (kg)")
|
||||
max_weight: Optional[int] = Field(None, ge=0, description="Össztömeg (kg)")
|
||||
cargo_volume_x: Optional[float] = Field(None, ge=0, description="Csomagtartó hossz (cm)")
|
||||
cargo_volume_y: Optional[float] = Field(None, ge=0, description="Csomagtartó szélesség (cm)")
|
||||
door_count: Optional[int] = Field(None, ge=0, description="Ajtók száma")
|
||||
seat_count: Optional[int] = Field(None, ge=0, description="Ülések száma")
|
||||
|
||||
# === EQUIPMENT ===
|
||||
trim_level: Optional[str] = Field(None, max_length=100, description="Felszereltségi szint")
|
||||
roof_type: Optional[str] = Field(None, max_length=50, description="Tető típus")
|
||||
audio_system_type: Optional[str] = Field(None, max_length=100, description="Hangrendszer")
|
||||
individual_equipment: Optional[Dict[str, Any]] = Field(None, description="Egyedi felszerelések")
|
||||
|
||||
# === TIMELINE ===
|
||||
year_of_manufacture: Optional[int] = Field(None, ge=1900, le=2100, description="Gyártási év")
|
||||
first_registration_date: Optional[datetime] = Field(None, description="Első forgalomba helyezés dátuma")
|
||||
|
||||
# === STATUS ===
|
||||
current_mileage: Optional[int] = Field(None, ge=0, description="Aktuális km óra állás")
|
||||
is_primary: Optional[bool] = Field(None, description="Elsődleges jármű")
|
||||
|
||||
model_config = ConfigDict(from_attributes=True)
|
||||
Reference in New Issue
Block a user