Add CarPass gamification scoring foundation
This commit is contained in:
60
app/schemas/gamification.py
Normal file
60
app/schemas/gamification.py
Normal file
@@ -0,0 +1,60 @@
|
||||
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
|
||||
Reference in New Issue
Block a user