from typing import Any, Dict, List, Union from fastapi import APIRouter, Depends, Query from app.core.response import success_response from app.core.security import verify_api_token from app.schemas.platform import AiAlarmSettingIn, ChannelConfigIn, DeviceConfigIn, DevicePasswordUpdateIn, LineAlarmSettingIn, NetConfigItem, SystemConfigIn, TimeSyncConfigIn, UartConfigItem from app.services.platform_service import platform_service router = APIRouter(prefix="/config", tags=["config"]) @router.get("/device", dependencies=[Depends(verify_api_token)]) def get_device_config() -> Dict[str, Any]: return success_response(platform_service.get_device_config(), msg="获取设备配置成功") @router.post("/device", dependencies=[Depends(verify_api_token)]) def save_device_config(payload: DeviceConfigIn) -> Dict[str, Any]: return success_response(platform_service.save_device_config(payload)) @router.post("/device/password", dependencies=[Depends(verify_api_token)]) def save_device_password(payload: DevicePasswordUpdateIn) -> Dict[str, Any]: return success_response(platform_service.save_device_password(payload), msg="保存设备密码成功") @router.post("/device/self-check", dependencies=[Depends(verify_api_token)]) def startup_self_check() -> Dict[str, Any]: result = platform_service.startup_self_check() if result["success"]: return success_response(result, msg="开机自检通过") return success_response(result, msg="开机自检(通讯链路)异常") @router.get("/device/net", dependencies=[Depends(verify_api_token)]) def get_net_config(nic: str = Query(..., min_length=1)) -> Dict[str, Any]: return success_response(platform_service.get_net_config(nic=nic), msg="获取网卡配置成功") @router.post("/device/net", dependencies=[Depends(verify_api_token)]) def save_net_config(payload: Union[NetConfigItem, List[NetConfigItem]]) -> Dict[str, Any]: return success_response(platform_service.save_net_config(payload), msg="保存网卡配置成功") @router.get("/device/uart", dependencies=[Depends(verify_api_token)]) def get_uart_config(port: str = Query(..., min_length=1)) -> Dict[str, Any]: return success_response(platform_service.get_uart_config(port=port), msg="获取串口配置成功") @router.post("/device/uart", dependencies=[Depends(verify_api_token)]) def save_uart_config(payload: Union[UartConfigItem, List[UartConfigItem]]) -> Dict[str, Any]: return success_response(platform_service.save_uart_config(payload), msg="保存串口配置成功") @router.get("/channel", dependencies=[Depends(verify_api_token)]) def get_channel_config() -> Dict[str, Any]: return success_response(platform_service.get_channel_config(), msg="获取通道配置成功") @router.post("/channel", dependencies=[Depends(verify_api_token)]) def save_channel_config(payload: ChannelConfigIn) -> Dict[str, Any]: return success_response(platform_service.save_channel_config(payload)) @router.get("/line_alarm_setting", dependencies=[Depends(verify_api_token)]) def get_line_alarm_setting(line_no: int = Query(default=1, ge=1)) -> Dict[str, Any]: return success_response(platform_service.get_line_alarm_setting(line_no=line_no), msg="获取线路报警设置成功") @router.post("/line_alarm_setting", dependencies=[Depends(verify_api_token)]) def save_line_alarm_setting(payload: LineAlarmSettingIn) -> Dict[str, Any]: return success_response(platform_service.save_line_alarm_setting(payload)) @router.get("/ai_alarm_setting", dependencies=[Depends(verify_api_token)]) def get_ai_alarm_setting() -> Dict[str, Any]: return success_response(platform_service.get_ai_alarm_setting(), msg="获取AI报警设置成功") @router.post("/ai_alarm_setting", dependencies=[Depends(verify_api_token)]) def save_ai_alarm_setting(payload: List[AiAlarmSettingIn]) -> Dict[str, Any]: return success_response(platform_service.save_ai_alarm_setting(payload)) @router.get("/system", dependencies=[Depends(verify_api_token)]) def get_system_config() -> Dict[str, Any]: return success_response(platform_service.get_system_config(), msg="获取系统设置成功") @router.post("/system", dependencies=[Depends(verify_api_token)]) def save_system_config(payload: SystemConfigIn) -> Dict[str, Any]: return success_response(platform_service.save_system_config(payload)) @router.get("/time-sync", dependencies=[Depends(verify_api_token)]) def get_time_sync_config() -> Dict[str, Any]: return success_response(platform_service.get_time_sync_config(), msg="获取对时设置成功") @router.post("/time-sync", dependencies=[Depends(verify_api_token)]) def save_time_sync_config(payload: TimeSyncConfigIn) -> Dict[str, Any]: return success_response(platform_service.save_time_sync_config(payload), msg="设备对时成功")