Coverage for schemas.py: 100%

39 statements  

« prev     ^ index     » next       coverage.py v7.14.1, created at 2026-05-31 21:56 +0000

1from pydantic import BaseModel 

2from typing import List, Optional 

3from datetime import date 

4 

5# --- Vehicle Schemas --- 

6class VehicleResponse(BaseModel): 

7 vrm: str 

8 make: str 

9 model: str 

10 year: int 

11 color: Optional[str] = None 

12 mot_expiry: Optional[date] = None 

13 generation_id: Optional[int] = None 

14 

15# --- MOT Schemas --- 

16class MOTItemResponse(BaseModel): 

17 item_type: str # e.g., 'ADVISORY', 'FAIL', 'MINOR' 

18 description: str 

19 pos_code: Optional[str] = None # Positional code e.g. "Nearside Front" 

20 

21class MOTTestResponse(BaseModel): 

22 test_number: str 

23 test_date: date 

24 result: str # 'PASS' or 'FAIL' 

25 odometer_reading: Optional[int] = None 

26 odometer_unit: Optional[str] = None 

27 items: List[MOTItemResponse] = [] 

28 

29class VehicleMOTHistoryResponse(BaseModel): 

30 vrm: str 

31 tests: List[MOTTestResponse] 

32 

33# --- Predictive & Reliability Schemas --- 

34class ReliabilityCategoryResponse(BaseModel): 

35 category: str 

36 incidence_rate: float 

37 

38class ReliabilitySummaryResponse(BaseModel): 

39 generation_id: int 

40 top_categories: List[ReliabilityCategoryResponse] 

41 

42class DefectIncidenceResponse(BaseModel): 

43 category: str 

44 defect_description: str 

45 incidence_rate: float 

46 

47class PopulationResponse(BaseModel): 

48 generation_id: int 

49 total_on_road: int 

50 total_sorn: int