"""基础设施健康检查路由。""" from __future__ import annotations from fastapi import APIRouter from fastapi.responses import JSONResponse from config import database from utils.response import fail, success router = APIRouter() @router.get("/health/ready") async def ready(): """按需探测四库,并返回适合负载均衡器使用的 HTTP 就绪状态。""" databases = await database.check_ready_detail() is_ready = all(item.get("status") == "ok" for item in databases.values()) payload = {"ready": is_ready, "databases": databases} if is_ready: return JSONResponse(status_code=200, content=success(payload).model_dump()) return JSONResponse( status_code=503, content=fail(503, "基础设施尚未就绪", payload).model_dump(), )