61 lines
1.3 KiB
Python
61 lines
1.3 KiB
Python
from datetime import datetime
|
|
from decimal import Decimal
|
|
|
|
from pydantic import BaseModel, ConfigDict
|
|
|
|
|
|
class MissingItem(BaseModel):
|
|
code: str
|
|
title: str
|
|
description: str
|
|
weight: int
|
|
|
|
|
|
class VehicleScoreRead(BaseModel):
|
|
model_config = ConfigDict(from_attributes=True)
|
|
|
|
vehicle_id: int
|
|
completeness_score: int
|
|
verified_history_score: int
|
|
maintenance_health_score: int
|
|
maintenance_status: str
|
|
profile_quality: str
|
|
verified_history_status: str
|
|
missing_items: list[MissingItem] = []
|
|
computed_at: datetime
|
|
|
|
|
|
class AchievementRead(BaseModel):
|
|
code: str
|
|
scope: str
|
|
title: str
|
|
description: str
|
|
icon: str | None = None
|
|
category: str | None = None
|
|
unlocked_at: datetime | None = None
|
|
vehicle_id: int | None = None
|
|
service_center_id: int | None = None
|
|
|
|
|
|
class TimelineItem(BaseModel):
|
|
id: str
|
|
date: datetime | str
|
|
type: str
|
|
title: str
|
|
status: str | None = None
|
|
description: str | None = None
|
|
amount: Decimal | float | int | None = None
|
|
metadata: dict | None = None
|
|
|
|
|
|
class ServiceCenterScoreRead(BaseModel):
|
|
model_config = ConfigDict(from_attributes=True)
|
|
|
|
service_center_id: int
|
|
trust_score: int
|
|
trust_level: str
|
|
confirmed_visits_count: int
|
|
confirmation_rate: Decimal | float
|
|
dispute_rate: Decimal | float
|
|
computed_at: datetime
|