""" System-related API routes. """ import logging from datetime import datetime from typing import Optional from fastapi import FastAPI, HTTPException from ...core.config import Config from ...core.state_manager import StateManager from ...video.integration import VideoModule from ..models import SuccessResponse, SystemStatusResponse def register_system_routes( app: FastAPI, state_manager: StateManager, video_module: Optional[VideoModule], server_start_time: datetime, logger: logging.Logger ): """Register system-related routes""" @app.get("/", response_model=SuccessResponse) async def root(): return SuccessResponse(message="USDA Vision Camera System API") @app.get("/health") async def health_check(): return {"status": "healthy", "timestamp": datetime.now().isoformat()} @app.get("/system/status", response_model=SystemStatusResponse) async def get_system_status(): """Get overall system status""" try: summary = state_manager.get_system_summary() uptime = (datetime.now() - server_start_time).total_seconds() return SystemStatusResponse( system_started=summary["system_started"], mqtt_connected=summary["mqtt_connected"], last_mqtt_message=summary["last_mqtt_message"], machines=summary["machines"], cameras=summary["cameras"], active_recordings=summary["active_recordings"], total_recordings=summary["total_recordings"], uptime_seconds=uptime ) except Exception as e: logger.error(f"Error getting system status: {e}") raise HTTPException(status_code=500, detail=str(e)) @app.get("/system/video-module") async def get_video_module_status(): """Get video module status and configuration""" try: if video_module: status = video_module.get_module_status() status["enabled"] = True return status else: return {"enabled": False, "error": "Video module not initialized"} except Exception as e: logger.error(f"Error getting video module status: {e}") raise HTTPException(status_code=500, detail=str(e))