Files
service-finder/backend/app/schemas/fleet.py

56 lines
1.5 KiB
Python
Executable File

from pydantic import BaseModel, ConfigDict
from typing import Optional, List
from datetime import date, datetime
from app.models.expense import ExpenseCategory
# --- Vehicle Schemas ---
class VehicleBase(BaseModel):
license_plate: str
make: str
model: str
year: int
fuel_type: Optional[str] = None
vin: Optional[str] = None
initial_odometer: int = 0
mot_expiry_date: Optional[date] = None
insurance_expiry_date: Optional[date] = None
class VehicleCreate(VehicleBase):
pass
class VehicleResponse(VehicleBase):
id: int
current_odometer: int
created_at: datetime
model_config = ConfigDict(from_attributes=True)
# --- Event / Expense Schemas ---
class EventBase(BaseModel):
event_type: ExpenseCategory
date: date
odometer_value: int
cost_amount: int
description: Optional[str] = None
is_diy: bool = False
# Ad-Hoc Provider mező: Ha stringet kapunk, a service megkeresi vagy létrehozza
provider_name: Optional[str] = None
provider_id: Optional[int] = None # Ha már ismert ID-t küldünk
class EventCreate(EventBase):
pass
class EventResponse(EventBase):
id: int
vehicle_id: int
odometer_anomaly: bool
service_provider_id: Optional[int]
image_paths: Optional[List[str]] = []
model_config = ConfigDict(from_attributes=True)
class TCOStats(BaseModel):
vehicle_id: int
total_cost: int
breakdown: dict[str, int] # Kategóriánkénti bontás
cost_per_km: Optional[float] = 0.0