added local api

This commit is contained in:
2026-06-11 08:38:08 +03:00
parent 81eaa95df3
commit 8fd7e85c83
39 changed files with 3224 additions and 723 deletions
+41 -1
View File
@@ -298,10 +298,50 @@ def paired_tracks_cancel(body: PairedTrackCancelBody):
raise HTTPException(400, detail=str(e)) from e
class ElevationPoint(BaseModel):
lat: float
lon: float
ts: Optional[float] = None
class ElevationProfileBody(BaseModel):
points: list[ElevationPoint] = Field(default_factory=list)
step_m: float = 10.0
@app.post("/api/elevation/profile")
def elevation_profile(body: ElevationProfileBody):
from core.elevation import build_elevation_profile
pts = [p.model_dump(exclude_none=True) for p in body.points]
return build_elevation_profile(pts, body.step_m)
@app.get("/api/tracks/{track_id}/elevation-profile")
def track_elevation_profile(
track_id: int,
step_m: float = Query(10.0, ge=5.0, le=10.0),
):
from core.elevation import build_elevation_profile
try:
track = storage.get_track(track_id)
except ValueError as e:
raise HTTPException(404, detail=str(e)) from e
return build_elevation_profile(track.get("points") or [], step_m)
@app.get("/api/health")
def health():
from core.elevation import elevation_status
status = storage.db_status()
return {"ok": status["db_ok"], "ts": time.time(), **status}
return {
"ok": status["db_ok"],
"ts": time.time(),
**status,
**elevation_status(),
}
if __name__ == "__main__":