from __future__ import annotations import httpx from yuxi.channels.models import HealthStatus from .bridge import BridgeClient async def check_bridge_health(bridge: BridgeClient) -> HealthStatus: try: data = await bridge.check_health() ok = data.get("ok") or data.get("status") == "running" if ok: return HealthStatus( status="healthy", metadata={ "service": data.get("service", "zalo-bridge"), "bridge_url": bridge.base_url, }, ) return HealthStatus( status="degraded", last_error=data.get("message", "Bridge unhealthy"), ) except httpx.ConnectError: return HealthStatus( status="unhealthy", last_error=f"Cannot connect to bridge at {bridge.base_url}", ) except Exception as e: return HealthStatus(status="unhealthy", last_error=str(e))