"""抓取服务健康检查路由""" from fastapi import APIRouter, Depends from app.scraping.container import ScrapingContainer from app.scraping.models.scrape import HealthData from app.shared.api import ApiResponse, get_container router = APIRouter(tags=["health"]) @router.get("/health", response_model=ApiResponse[HealthData]) async def health(container: ScrapingContainer = Depends(get_container)) -> ApiResponse[HealthData]: """抓取服务健康状态 sessions 里给出乐天的 PC / 手机两条抓取通道的 cookie 预热情况,以及 ラクマ 通道的就绪状态(ラクマ 无需预热,只报是否已初始化); browser_fallback_* 反映浏览器兜底当前是否可用(未安装 playwright 时为不可用, 属于预期降级,不影响主链路)。 账号登录态不在这里——它属于交易服务,查它请打交易服务的 /health。 """ return ApiResponse[HealthData]( success=True, msg="success", data=HealthData( status="ok", browser_fallback_enabled=container.browser_fallback.enabled, browser_fallback_ready=container.browser_fallback.ready, browser_fallback_error=container.browser_fallback.unavailable_reason, sessions={ **container.site_session.profile_status(), "rakuma": container.rakuma_session.status(), }, ), code=0, )