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}

View File

@@ -1,3 +1,4 @@
from datetime import date
from uuid import UUID
from pydantic import BaseModel
@@ -22,6 +23,16 @@ class RiderUpdate(BaseModel):
experience_level: str | None = None
class FitnessHistoryResponse(BaseModel):
model_config = {"from_attributes": True}
date: date
ctl: float
atl: float
tsb: float
ramp_rate: float | None = None
class RiderResponse(BaseModel):
model_config = {"from_attributes": True}
@@ -36,3 +47,5 @@ class RiderResponse(BaseModel):
zones_config: dict | None = None
goals: str | None = None
experience_level: str | None = None
coaching_profile: dict | None = None
onboarding_completed: bool = False