""" Health Check Endpoints - ServiceManagerWeb Endpoints para health checks y monitoring """ from fastapi import APIRouter, Depends, status from sqlalchemy.ext.asyncio import AsyncSession import structlog from app.core.database import get_db, check_database_health from app.core.config import get_settings router = APIRouter() logger = structlog.get_logger(__name__) settings = get_settings() @router.get("/health") async def health_check(): """ Basic health check endpoint. Returns basic service information and status. """ return { "status": "healthy", "service": "ServiceManagerWeb API", "version": settings.API_VERSION, "environment": settings.ENVIRONMENT } @router.get("/health/detailed") async def detailed_health_check(db: AsyncSession = Depends(get_db)): """ Detailed health check with database connectivity. Checks database connection and returns detailed status. """ # Check database db_healthy = await check_database_health() # TODO: Add Redis health check # TODO: Add Celery health check overall_status = "healthy" if db_healthy else "unhealthy" status_code = status.HTTP_200_OK if db_healthy else status.HTTP_503_SERVICE_UNAVAILABLE health_data = { "status": overall_status, "service": "ServiceManagerWeb API", "version": settings.API_VERSION, "environment": settings.ENVIRONMENT, "checks": { "database": "healthy" if db_healthy else "unhealthy", "redis": "not_implemented", "celery": "not_implemented" } } if not db_healthy: logger.error("Health check failed - database unhealthy") return health_data @router.get("/readiness") async def readiness_check(): """ Kubernetes readiness probe endpoint. Returns 200 if service is ready to accept traffic. """ # For now, just return ready # In production, this might check for startup completion, # database migrations, etc. return {"status": "ready"} @router.get("/liveness") async def liveness_check(): """ Kubernetes liveness probe endpoint. Returns 200 if service is alive and should not be restarted. """ return {"status": "alive"}