Improve the dahboard with the weather info 2

This commit is contained in:
Urtzi Alfaro
2025-08-18 13:53:27 +02:00
parent afca94dadd
commit 0a42fe628c
8 changed files with 164 additions and 61 deletions

View File

@@ -31,8 +31,8 @@ class TrafficDataUpdate(BaseModel):
average_speed: Optional[float] = Field(None, ge=0, le=200)
raw_data: Optional[str] = None
class TrafficDataResponse(TrafficDataBase):
"""Schema for traffic data responses"""
class TrafficDataResponseDB(TrafficDataBase):
"""Schema for traffic data responses from database"""
id: str = Field(..., description="Unique identifier")
created_at: datetime = Field(..., description="Creation timestamp")
updated_at: datetime = Field(..., description="Last update timestamp")
@@ -52,7 +52,7 @@ class TrafficDataResponse(TrafficDataBase):
class TrafficDataList(BaseModel):
"""Schema for paginated traffic data responses"""
data: List[TrafficDataResponse]
data: List[TrafficDataResponseDB]
total: int = Field(..., description="Total number of records")
page: int = Field(..., description="Current page number")
per_page: int = Field(..., description="Records per page")
@@ -72,12 +72,18 @@ class TrafficAnalytics(BaseModel):
avg_speed: Optional[float] = None
class TrafficDataResponse(BaseModel):
date: datetime
traffic_volume: Optional[int]
pedestrian_count: Optional[int]
congestion_level: Optional[str]
average_speed: Optional[float]
source: str
"""Schema for API traffic data responses"""
date: datetime = Field(..., description="Date and time of traffic measurement")
traffic_volume: Optional[int] = Field(None, ge=0, description="Vehicles per hour")
pedestrian_count: Optional[int] = Field(None, ge=0, description="Pedestrians per hour")
congestion_level: Optional[str] = Field(None, pattern="^(low|medium|high)$", description="Traffic congestion level")
average_speed: Optional[float] = Field(None, ge=0, le=200, description="Average speed in km/h")
source: str = Field(..., description="Data source")
class Config:
json_encoders = {
datetime: lambda v: v.isoformat()
}
class LocationRequest(BaseModel):
latitude: float