Spaces:
Runtime error
Runtime error
| """FastAPI application for component detection.""" | |
| import logging | |
| from contextlib import asynccontextmanager | |
| from fastapi import FastAPI | |
| from component_detection.models.schemas import HealthResponse | |
| from component_detection.routes.detection import router as detection_router | |
| from component_detection.services.dependencies import get_detection_service | |
| logging.basicConfig(level=logging.INFO, format="%(asctime)s - %(name)s - %(levelname)s - %(message)s") | |
| logger = logging.getLogger(__name__) | |
| async def lifespan(app: FastAPI): | |
| """Ensure model is loaded on startup, cleanup on shutdown.""" | |
| service = get_detection_service() | |
| if not service.is_loaded: | |
| service.load_model() | |
| logger.info("Application started - model ready for inference.") | |
| yield | |
| logger.info("Application shutting down.") | |
| app = FastAPI( | |
| title="Component Detection API", | |
| description="Detect solar panel components (Lfoot, microinverter, rail, solar panel) using RF-DETR.", | |
| version="0.1.0", | |
| lifespan=lifespan, | |
| ) | |
| app.include_router(detection_router) | |
| async def health_check() -> HealthResponse: | |
| """Health check endpoint.""" | |
| service = get_detection_service() | |
| return HealthResponse(status="ok", model_loaded=service.is_loaded) | |