This commit is contained in:
xds
2026-03-16 14:46:20 +03:00
parent 00db55720c
commit de8c2472e2
45 changed files with 3714 additions and 140 deletions

View File

@@ -17,6 +17,19 @@ class ActivityMetricsResponse(BaseModel):
max_hr: int | None = None
avg_cadence: int | None = None
avg_speed: float | None = None
calories: int | None = None
class IntervalResponse(BaseModel):
model_config = {"from_attributes": True}
id: UUID
start_ts: datetime
end_ts: datetime
interval_type: str
avg_power: float | None = None
avg_hr: int | None = None
duration: int | None = None
class ActivityResponse(BaseModel):
@@ -31,6 +44,7 @@ class ActivityResponse(BaseModel):
distance: float | None = None
elevation_gain: float | None = None
metrics: ActivityMetricsResponse | None = None
intervals: list[IntervalResponse] = []
class ActivityListResponse(BaseModel):
@@ -50,3 +64,29 @@ class DataPointResponse(BaseModel):
longitude: float | None = None
altitude: float | None = None
temperature: int | None = None
class ZoneItem(BaseModel):
zone: int
name: str
seconds: int
percentage: float
class PowerZoneItem(ZoneItem):
min_watts: int
max_watts: int | None = None
class HrZoneItem(ZoneItem):
min_bpm: int
max_bpm: int | None = None
class ZonesResponse(BaseModel):
power_zones: list[PowerZoneItem] = []
hr_zones: list[HrZoneItem] = []
class PowerCurveResponse(BaseModel):
curve: dict[int, int] # {duration_seconds: max_power}