diff --git a/backend/routers/charts.py b/backend/routers/charts.py index 93cfae2..b810418 100644 --- a/backend/routers/charts.py +++ b/backend/routers/charts.py @@ -62,13 +62,13 @@ from data_layer.correlations import ( ) from data_layer.utils import serialize_dates, safe_float, calculate_confidence -router = APIRouter() +router = APIRouter(prefix="/api/charts", tags=["charts"]) # ── Body Charts ───────────────────────────────────────────────────────────── -@router.get("/charts/weight-trend") +@router.get("/weight-trend") def get_weight_trend_chart( days: int = Query(default=90, ge=7, le=365, description="Analysis window in days"), session: dict = Depends(require_auth) @@ -185,7 +185,7 @@ def get_weight_trend_chart( } -@router.get("/charts/body-composition") +@router.get("/body-composition") def get_body_composition_chart( days: int = Query(default=90, ge=7, le=365), session: dict = Depends(require_auth) @@ -249,7 +249,7 @@ def get_body_composition_chart( } -@router.get("/charts/circumferences") +@router.get("/circumferences") def get_circumferences_chart( max_age_days: int = Query(default=90, ge=7, le=365), session: dict = Depends(require_auth) @@ -321,7 +321,7 @@ def get_circumferences_chart( # ── Nutrition Charts ──────────────────────────────────────────────────────── -@router.get("/charts/energy-balance") +@router.get("/energy-balance") def get_energy_balance_chart( days: int = Query(default=28, ge=7, le=90), session: dict = Depends(require_auth) @@ -419,7 +419,7 @@ def get_energy_balance_chart( } -@router.get("/charts/macro-distribution") +@router.get("/macro-distribution") def get_macro_distribution_chart( days: int = Query(default=28, ge=7, le=90), session: dict = Depends(require_auth) @@ -509,7 +509,7 @@ def get_macro_distribution_chart( } -@router.get("/charts/protein-adequacy") +@router.get("/protein-adequacy") def get_protein_adequacy_chart( days: int = Query(default=28, ge=7, le=90), session: dict = Depends(require_auth) @@ -623,7 +623,7 @@ def get_protein_adequacy_chart( } -@router.get("/charts/nutrition-consistency") +@router.get("/nutrition-consistency") def get_nutrition_consistency_chart( days: int = Query(default=28, ge=7, le=90), session: dict = Depends(require_auth) @@ -707,7 +707,7 @@ def get_nutrition_consistency_chart( # ── Activity Charts ───────────────────────────────────────────────────────── -@router.get("/charts/training-volume") +@router.get("/training-volume") def get_training_volume_chart( weeks: int = Query(default=12, ge=4, le=52), session: dict = Depends(require_auth) @@ -787,7 +787,7 @@ def get_training_volume_chart( } -@router.get("/charts/training-type-distribution") +@router.get("/training-type-distribution") def get_training_type_distribution_chart( days: int = Query(default=28, ge=7, le=90), session: dict = Depends(require_auth) @@ -853,7 +853,7 @@ def get_training_type_distribution_chart( } -@router.get("/charts/quality-sessions") +@router.get("/quality-sessions") def get_quality_sessions_chart( days: int = Query(default=28, ge=7, le=90), session: dict = Depends(require_auth) @@ -930,7 +930,7 @@ def get_quality_sessions_chart( } -@router.get("/charts/load-monitoring") +@router.get("/load-monitoring") def get_load_monitoring_chart( days: int = Query(default=28, ge=14, le=90), session: dict = Depends(require_auth) @@ -1018,7 +1018,7 @@ def get_load_monitoring_chart( } -@router.get("/charts/monotony-strain") +@router.get("/monotony-strain") def get_monotony_strain_chart( days: int = Query(default=7, ge=7, le=28), session: dict = Depends(require_auth) @@ -1078,7 +1078,7 @@ def get_monotony_strain_chart( } -@router.get("/charts/ability-balance") +@router.get("/ability-balance") def get_ability_balance_chart( days: int = Query(default=28, ge=7, le=90), session: dict = Depends(require_auth) @@ -1152,7 +1152,7 @@ def get_ability_balance_chart( } -@router.get("/charts/volume-by-ability") +@router.get("/volume-by-ability") def get_volume_by_ability_chart( days: int = Query(default=28, ge=7, le=90), session: dict = Depends(require_auth) @@ -1242,7 +1242,7 @@ def get_volume_by_ability_chart( # ── Recovery Charts ───────────────────────────────────────────────────────── -@router.get("/charts/recovery-score") +@router.get("/recovery-score") def get_recovery_score_chart( days: int = Query(default=28, ge=7, le=90), session: dict = Depends(require_auth) @@ -1349,7 +1349,7 @@ def get_recovery_score_chart( } -@router.get("/charts/hrv-rhr-baseline") +@router.get("/hrv-rhr-baseline") def get_hrv_rhr_baseline_chart( days: int = Query(default=28, ge=7, le=90), session: dict = Depends(require_auth) @@ -1451,7 +1451,7 @@ def get_hrv_rhr_baseline_chart( } -@router.get("/charts/sleep-duration-quality") +@router.get("/sleep-duration-quality") def get_sleep_duration_quality_chart( days: int = Query(default=28, ge=7, le=90), session: dict = Depends(require_auth) @@ -1559,7 +1559,7 @@ def get_sleep_duration_quality_chart( } -@router.get("/charts/sleep-debt") +@router.get("/sleep-debt") def get_sleep_debt_chart( days: int = Query(default=28, ge=7, le=90), session: dict = Depends(require_auth) @@ -1660,7 +1660,7 @@ def get_sleep_debt_chart( } -@router.get("/charts/vital-signs-matrix") +@router.get("/vital-signs-matrix") def get_vital_signs_matrix_chart( days: int = Query(default=7, ge=7, le=30), session: dict = Depends(require_auth) @@ -1787,7 +1787,7 @@ def get_vital_signs_matrix_chart( # ── Correlation Charts ────────────────────────────────────────────────────── -@router.get("/charts/weight-energy-correlation") +@router.get("/weight-energy-correlation") def get_weight_energy_correlation_chart( max_lag: int = Query(default=14, ge=7, le=28), session: dict = Depends(require_auth) @@ -1852,7 +1852,7 @@ def get_weight_energy_correlation_chart( } -@router.get("/charts/lbm-protein-correlation") +@router.get("/lbm-protein-correlation") def get_lbm_protein_correlation_chart( max_lag: int = Query(default=14, ge=7, le=28), session: dict = Depends(require_auth) @@ -1915,7 +1915,7 @@ def get_lbm_protein_correlation_chart( } -@router.get("/charts/load-vitals-correlation") +@router.get("/load-vitals-correlation") def get_load_vitals_correlation_chart( max_lag: int = Query(default=14, ge=7, le=28), session: dict = Depends(require_auth) @@ -1991,7 +1991,7 @@ def get_load_vitals_correlation_chart( } -@router.get("/charts/recovery-performance") +@router.get("/recovery-performance") def get_recovery_performance_chart( session: dict = Depends(require_auth) ) -> Dict: @@ -2087,7 +2087,7 @@ def get_recovery_performance_chart( # ── Health Endpoint ────────────────────────────────────────────────────────── -@router.get("/charts/health") +@router.get("/health") def health_check() -> Dict: """ Health check endpoint for charts API.