fix: add missing prefix to charts router
Charts router had no prefix, causing 404 errors. Fixed: - Added prefix="/api/charts" to APIRouter() - Changed all endpoint paths from "/charts/..." to "/..." (prefix already includes /api/charts) Now endpoints resolve correctly: /api/charts/energy-balance /api/charts/recovery-score etc. All 23 chart endpoints now accessible.
This commit is contained in:
parent
d4500ca00c
commit
176be3233e
|
|
@ -62,13 +62,13 @@ from data_layer.correlations import (
|
||||||
)
|
)
|
||||||
from data_layer.utils import serialize_dates, safe_float, calculate_confidence
|
from data_layer.utils import serialize_dates, safe_float, calculate_confidence
|
||||||
|
|
||||||
router = APIRouter()
|
router = APIRouter(prefix="/api/charts", tags=["charts"])
|
||||||
|
|
||||||
|
|
||||||
# ── Body Charts ─────────────────────────────────────────────────────────────
|
# ── Body Charts ─────────────────────────────────────────────────────────────
|
||||||
|
|
||||||
|
|
||||||
@router.get("/charts/weight-trend")
|
@router.get("/weight-trend")
|
||||||
def get_weight_trend_chart(
|
def get_weight_trend_chart(
|
||||||
days: int = Query(default=90, ge=7, le=365, description="Analysis window in days"),
|
days: int = Query(default=90, ge=7, le=365, description="Analysis window in days"),
|
||||||
session: dict = Depends(require_auth)
|
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(
|
def get_body_composition_chart(
|
||||||
days: int = Query(default=90, ge=7, le=365),
|
days: int = Query(default=90, ge=7, le=365),
|
||||||
session: dict = Depends(require_auth)
|
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(
|
def get_circumferences_chart(
|
||||||
max_age_days: int = Query(default=90, ge=7, le=365),
|
max_age_days: int = Query(default=90, ge=7, le=365),
|
||||||
session: dict = Depends(require_auth)
|
session: dict = Depends(require_auth)
|
||||||
|
|
@ -321,7 +321,7 @@ def get_circumferences_chart(
|
||||||
# ── Nutrition Charts ────────────────────────────────────────────────────────
|
# ── Nutrition Charts ────────────────────────────────────────────────────────
|
||||||
|
|
||||||
|
|
||||||
@router.get("/charts/energy-balance")
|
@router.get("/energy-balance")
|
||||||
def get_energy_balance_chart(
|
def get_energy_balance_chart(
|
||||||
days: int = Query(default=28, ge=7, le=90),
|
days: int = Query(default=28, ge=7, le=90),
|
||||||
session: dict = Depends(require_auth)
|
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(
|
def get_macro_distribution_chart(
|
||||||
days: int = Query(default=28, ge=7, le=90),
|
days: int = Query(default=28, ge=7, le=90),
|
||||||
session: dict = Depends(require_auth)
|
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(
|
def get_protein_adequacy_chart(
|
||||||
days: int = Query(default=28, ge=7, le=90),
|
days: int = Query(default=28, ge=7, le=90),
|
||||||
session: dict = Depends(require_auth)
|
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(
|
def get_nutrition_consistency_chart(
|
||||||
days: int = Query(default=28, ge=7, le=90),
|
days: int = Query(default=28, ge=7, le=90),
|
||||||
session: dict = Depends(require_auth)
|
session: dict = Depends(require_auth)
|
||||||
|
|
@ -707,7 +707,7 @@ def get_nutrition_consistency_chart(
|
||||||
# ── Activity Charts ─────────────────────────────────────────────────────────
|
# ── Activity Charts ─────────────────────────────────────────────────────────
|
||||||
|
|
||||||
|
|
||||||
@router.get("/charts/training-volume")
|
@router.get("/training-volume")
|
||||||
def get_training_volume_chart(
|
def get_training_volume_chart(
|
||||||
weeks: int = Query(default=12, ge=4, le=52),
|
weeks: int = Query(default=12, ge=4, le=52),
|
||||||
session: dict = Depends(require_auth)
|
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(
|
def get_training_type_distribution_chart(
|
||||||
days: int = Query(default=28, ge=7, le=90),
|
days: int = Query(default=28, ge=7, le=90),
|
||||||
session: dict = Depends(require_auth)
|
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(
|
def get_quality_sessions_chart(
|
||||||
days: int = Query(default=28, ge=7, le=90),
|
days: int = Query(default=28, ge=7, le=90),
|
||||||
session: dict = Depends(require_auth)
|
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(
|
def get_load_monitoring_chart(
|
||||||
days: int = Query(default=28, ge=14, le=90),
|
days: int = Query(default=28, ge=14, le=90),
|
||||||
session: dict = Depends(require_auth)
|
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(
|
def get_monotony_strain_chart(
|
||||||
days: int = Query(default=7, ge=7, le=28),
|
days: int = Query(default=7, ge=7, le=28),
|
||||||
session: dict = Depends(require_auth)
|
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(
|
def get_ability_balance_chart(
|
||||||
days: int = Query(default=28, ge=7, le=90),
|
days: int = Query(default=28, ge=7, le=90),
|
||||||
session: dict = Depends(require_auth)
|
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(
|
def get_volume_by_ability_chart(
|
||||||
days: int = Query(default=28, ge=7, le=90),
|
days: int = Query(default=28, ge=7, le=90),
|
||||||
session: dict = Depends(require_auth)
|
session: dict = Depends(require_auth)
|
||||||
|
|
@ -1242,7 +1242,7 @@ def get_volume_by_ability_chart(
|
||||||
# ── Recovery Charts ─────────────────────────────────────────────────────────
|
# ── Recovery Charts ─────────────────────────────────────────────────────────
|
||||||
|
|
||||||
|
|
||||||
@router.get("/charts/recovery-score")
|
@router.get("/recovery-score")
|
||||||
def get_recovery_score_chart(
|
def get_recovery_score_chart(
|
||||||
days: int = Query(default=28, ge=7, le=90),
|
days: int = Query(default=28, ge=7, le=90),
|
||||||
session: dict = Depends(require_auth)
|
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(
|
def get_hrv_rhr_baseline_chart(
|
||||||
days: int = Query(default=28, ge=7, le=90),
|
days: int = Query(default=28, ge=7, le=90),
|
||||||
session: dict = Depends(require_auth)
|
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(
|
def get_sleep_duration_quality_chart(
|
||||||
days: int = Query(default=28, ge=7, le=90),
|
days: int = Query(default=28, ge=7, le=90),
|
||||||
session: dict = Depends(require_auth)
|
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(
|
def get_sleep_debt_chart(
|
||||||
days: int = Query(default=28, ge=7, le=90),
|
days: int = Query(default=28, ge=7, le=90),
|
||||||
session: dict = Depends(require_auth)
|
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(
|
def get_vital_signs_matrix_chart(
|
||||||
days: int = Query(default=7, ge=7, le=30),
|
days: int = Query(default=7, ge=7, le=30),
|
||||||
session: dict = Depends(require_auth)
|
session: dict = Depends(require_auth)
|
||||||
|
|
@ -1787,7 +1787,7 @@ def get_vital_signs_matrix_chart(
|
||||||
# ── Correlation Charts ──────────────────────────────────────────────────────
|
# ── Correlation Charts ──────────────────────────────────────────────────────
|
||||||
|
|
||||||
|
|
||||||
@router.get("/charts/weight-energy-correlation")
|
@router.get("/weight-energy-correlation")
|
||||||
def get_weight_energy_correlation_chart(
|
def get_weight_energy_correlation_chart(
|
||||||
max_lag: int = Query(default=14, ge=7, le=28),
|
max_lag: int = Query(default=14, ge=7, le=28),
|
||||||
session: dict = Depends(require_auth)
|
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(
|
def get_lbm_protein_correlation_chart(
|
||||||
max_lag: int = Query(default=14, ge=7, le=28),
|
max_lag: int = Query(default=14, ge=7, le=28),
|
||||||
session: dict = Depends(require_auth)
|
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(
|
def get_load_vitals_correlation_chart(
|
||||||
max_lag: int = Query(default=14, ge=7, le=28),
|
max_lag: int = Query(default=14, ge=7, le=28),
|
||||||
session: dict = Depends(require_auth)
|
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(
|
def get_recovery_performance_chart(
|
||||||
session: dict = Depends(require_auth)
|
session: dict = Depends(require_auth)
|
||||||
) -> Dict:
|
) -> Dict:
|
||||||
|
|
@ -2087,7 +2087,7 @@ def get_recovery_performance_chart(
|
||||||
# ── Health Endpoint ──────────────────────────────────────────────────────────
|
# ── Health Endpoint ──────────────────────────────────────────────────────────
|
||||||
|
|
||||||
|
|
||||||
@router.get("/charts/health")
|
@router.get("/health")
|
||||||
def health_check() -> Dict:
|
def health_check() -> Dict:
|
||||||
"""
|
"""
|
||||||
Health check endpoint for charts API.
|
Health check endpoint for charts API.
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user