feat(aiot): 本地截图回退访问 + 告警API前端兼容

- 挂载 Edge 截图目录为 /captures 静态文件(COS 不可用时回退)
- 挂载 /uploads 静态文件目录
- _alarm_to_camel 支持 local: 前缀转 /captures/ URL
- 告警分页/详情/处理/删除接口兼容前端旧字段名(id、cameraId、status 等)
- 设备告警汇总添加前端兼容别名(cameraId、pendingCount 等)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-02-11 09:56:15 +08:00
parent 9f4cea0810
commit 0f5e3ebce2
2 changed files with 103 additions and 19 deletions

View File

@@ -3,6 +3,7 @@ from contextlib import asynccontextmanager
from fastapi import FastAPI, UploadFile, File, Form, HTTPException, Depends, Query, WebSocket, WebSocketDisconnect
from fastapi.middleware.cors import CORSMiddleware
from fastapi.responses import FileResponse
from fastapi.staticfiles import StaticFiles
from typing import Optional
from datetime import datetime
from pathlib import Path
@@ -85,6 +86,16 @@ app.include_router(yudao_aiot_storage_router)
# 注册芋道格式异常处理器
app.add_exception_handler(HTTPException, yudao_exception_handler)
# ==================== 静态文件(本地截图) ====================
_uploads_dir = Path("uploads")
_uploads_dir.mkdir(parents=True, exist_ok=True)
app.mount("/uploads", StaticFiles(directory=str(_uploads_dir)), name="uploads")
# Edge 本地截图目录COS 未配置时的回退访问路径)
_edge_captures_dir = Path(r"C:\Users\16337\PycharmProjects\ai_edge\data\captures")
if _edge_captures_dir.exists():
app.mount("/captures", StaticFiles(directory=str(_edge_captures_dir)), name="captures")
def get_alert_svc():
return alert_service