Schema completo flusso valutazioni (!)
This commit is contained in:
@@ -0,0 +1,156 @@
|
||||
from datetime import datetime, date
|
||||
from decimal import Decimal
|
||||
from typing import Any
|
||||
from pydantic import BaseModel, Field
|
||||
|
||||
|
||||
class ValuationCreate(BaseModel):
|
||||
plate: str = Field(..., min_length=5, max_length=10)
|
||||
motornet_code: str | None = None
|
||||
mileage: int | None = Field(None, ge=0)
|
||||
retake_regime: str | None = None
|
||||
expected_return_date: date | None = None
|
||||
interest_fuel: str | None = None
|
||||
priority: str = "valutazione"
|
||||
notes: str | None = None
|
||||
|
||||
|
||||
class CommentCreate(BaseModel):
|
||||
content: str = Field(..., min_length=1)
|
||||
visible_to_all: bool = True
|
||||
|
||||
|
||||
class CommentResponse(BaseModel):
|
||||
id: int
|
||||
valuation_id: int
|
||||
user_id: int
|
||||
user_full_name: str | None = None
|
||||
content: str
|
||||
visible_to_all: bool
|
||||
created_at: datetime
|
||||
|
||||
model_config = {"from_attributes": True}
|
||||
|
||||
|
||||
class PhotoResponse(BaseModel):
|
||||
id: int
|
||||
valuation_id: int
|
||||
filename: str
|
||||
storage_path: str
|
||||
uploaded_by: int
|
||||
uploaded_at: datetime
|
||||
url: str | None = None
|
||||
|
||||
model_config = {"from_attributes": True}
|
||||
|
||||
|
||||
class HistoryResponse(BaseModel):
|
||||
id: int
|
||||
field_name: str
|
||||
old_value: str | None
|
||||
new_value: str | None
|
||||
changed_by: int
|
||||
changed_by_name: str | None = None
|
||||
changed_at: datetime
|
||||
|
||||
model_config = {"from_attributes": True}
|
||||
|
||||
|
||||
class VehicleInfo(BaseModel):
|
||||
plate: str
|
||||
vin: str | None
|
||||
vehicle_type: str | None
|
||||
registration_date: date | None
|
||||
version_label: str | None
|
||||
brand_name: str | None
|
||||
model_description: str | None
|
||||
gamma_description: str | None
|
||||
list_price: Decimal | None
|
||||
|
||||
|
||||
class MotornetValuationResponse(BaseModel):
|
||||
id: int
|
||||
valuation_id: int
|
||||
plate: str
|
||||
motornet_code: str | None
|
||||
fetched_at: datetime
|
||||
registration_year: int | None
|
||||
registration_month: int | None
|
||||
mileage: int | None
|
||||
motornet_id: int | None
|
||||
ediz_dati: str | None
|
||||
brand_name: str | None
|
||||
model_description: str | None
|
||||
allestimento: str | None
|
||||
alimentazione: str | None
|
||||
immagine_url: str | None
|
||||
xml_url: str | None
|
||||
percorrenza_media_km: int | None
|
||||
quotazione_blu: Decimal | None
|
||||
quotazione_blu_km: Decimal | None
|
||||
quotazione_giallo: Decimal | None
|
||||
quotazione_giallo_km: Decimal | None
|
||||
quotazione_blu_totale: Decimal | None
|
||||
quotazione_giallo_totale: Decimal | None
|
||||
variazione_km: Decimal | None
|
||||
prezzo_listino: Decimal | None
|
||||
prezzo_accessori: Decimal | None
|
||||
totale_riparazioni_carrozzeria: Decimal | None
|
||||
totale_riparazioni_meccanica: Decimal | None
|
||||
raw_response: Any | None = None
|
||||
|
||||
model_config = {"from_attributes": True}
|
||||
|
||||
|
||||
class ValuationResponse(BaseModel):
|
||||
id: int
|
||||
plate: str
|
||||
user_id: int
|
||||
group_id: int | None
|
||||
motornet_code: str | None
|
||||
mileage: int | None
|
||||
retake_regime: str | None
|
||||
expected_return_date: date | None
|
||||
interest_fuel: str | None
|
||||
priority: str
|
||||
notes: str | None
|
||||
status: str
|
||||
final_value: Decimal | None
|
||||
evaluator_notes: str | None
|
||||
is_frozen: bool
|
||||
priority_rank: int
|
||||
created_at: datetime
|
||||
updated_at: datetime
|
||||
vehicle: VehicleInfo | None = None
|
||||
photos: list[PhotoResponse] = []
|
||||
comments: list[CommentResponse] = []
|
||||
history: list[HistoryResponse] = []
|
||||
motornet_valuations: list[MotornetValuationResponse] = []
|
||||
|
||||
model_config = {"from_attributes": True}
|
||||
|
||||
|
||||
class ValuationListItem(BaseModel):
|
||||
id: int
|
||||
plate: str
|
||||
status: str
|
||||
priority: str
|
||||
priority_rank: int
|
||||
mileage: int | None
|
||||
is_frozen: bool
|
||||
created_at: datetime
|
||||
updated_at: datetime
|
||||
brand_name: str | None = None
|
||||
model_description: str | None = None
|
||||
version_label: str | None = None
|
||||
final_value: Decimal | None = None
|
||||
|
||||
model_config = {"from_attributes": True}
|
||||
|
||||
|
||||
class PaginatedValuations(BaseModel):
|
||||
items: list[ValuationListItem]
|
||||
total: int
|
||||
page: int
|
||||
page_size: int
|
||||
pages: int
|
||||
Reference in New Issue
Block a user