37 lines
1.2 KiB
Python
37 lines
1.2 KiB
Python
from __future__ import annotations
|
|
|
|
from fastapi import APIRouter, Depends
|
|
|
|
from apps.api.auth import require_auth
|
|
from packages.config import get_settings
|
|
from packages.db import Repository
|
|
from packages.domain import LEVERAGE_FORMULA_VERSION
|
|
|
|
router = APIRouter(tags=["meta"], dependencies=[Depends(require_auth)])
|
|
|
|
|
|
@router.get("/meta/latest")
|
|
def latest() -> dict:
|
|
s = get_settings()
|
|
repo = Repository(s.db_path)
|
|
try:
|
|
hb = repo.get_heartbeat()
|
|
by_side = repo.latest_quotes_by_side()
|
|
return {
|
|
"formula_version": LEVERAGE_FORMULA_VERSION,
|
|
"leverage_def": "index_px / ask",
|
|
"timezone": s.tz,
|
|
"underlying": s.underlying,
|
|
"min_option_leverage": s.min_option_leverage,
|
|
"heartbeat": {
|
|
"last_ok_ts_ms": hb.get("last_ok_ts_ms"),
|
|
"last_error": hb.get("last_error"),
|
|
"consecutive_failures": hb.get("consecutive_failures"),
|
|
"meta": hb.get("meta"),
|
|
},
|
|
"call": by_side.get("C"),
|
|
"put": by_side.get("P"),
|
|
}
|
|
finally:
|
|
repo.close()
|