## AI 告警平台开发计划 ### 项目定位 **职责**:仅接收边缘端告警、保存告警证据、提供可视化与人工处理能力 **不负责**:设备管理、推理逻辑、用户体系(复用芋道前端用户体系) --- ### 一、边缘端 → 告警平台 数据协议 **传输方式**:multipart/form-data(JSON + 图片文件) **JSON 字段**: ```json { "camera_id": "cam-001", "roi_id": "roi-01", "alert_type": "leave_post", "algorithm": "LeavePostAlgorithm", "confidence": 0.85, "duration_minutes": 5, "trigger_time": "2024-01-20T10:30:00Z", "message": "离岗告警" } ``` **图片字段**:`snapshot`(二进制文件) --- ### 二、后端架构(FastAPI) ``` alert_platform/ ├── app/ │ ├── main.py # FastAPI 入口 │ ├── config.py # 配置(SQLite + 图片存储路径) │ ├── models.py # SQLAlchemy 告警模型 │ ├── schemas.py # Pydantic 请求/响应模型 │ ├── api/ │ │ └── alert.py # 告警接收 & 查询接口 │ ├── service/ │ │ ├── alert_service.py # 告警业务逻辑 │ │ └── analyzer.py # 异步大模型分析 │ └── storage.py # 图片存储 ├── data/ # SQLite + 图片目录 ├── requirements.txt └── Dockerfile ``` **核心接口**: | 方法 | 路径 | 描述 | |------|------|------| | POST | `/api/v1/alerts` | 接收边缘端告警(multipart/form-data) | | GET | `/api/v1/alerts` | 查询告警列表(分页 + 筛选) | | GET | `/api/v1/alerts/{id}` | 告警详情 | | PUT | `/api/v1/alerts/{id}/handle` | 处理告警(确认/忽略/备注) | | GET | `/api/v1/alerts/{id}/image` | 获取告警图片 | | GET | `/api/v1/alerts/statistics` | 告警统计 | --- ### 三、前端架构(芋道 UI) **在 yudao-ui-admin-vben 中新增模块**: ``` apps/web-antd/src/ ├── api/alert/ │ └── alert.ts # 告警 API ├── views/alert/ │ ├── list/ │ │ ├── data.ts # 列表表单/列配置 │ │ └── index.vue # 告警列表页 │ └── detail/ │ ├── data.ts │ └── index.vue # 告警详情页 └── router/routes/modules/ └── alert.ts # 告警路由 ``` **前端功能**: - 告警列表:时间/类型/状态筛选 + 分页 - 告警详情:图片展示 + 算法信息 + 离岗时长 - 人工处理:确认、忽略、备注操作 - 大模型分析结果展示(可选) --- ### 四、大模型分析(异步) **流程**: 1. 告警写入数据库后,触发异步任务 2. 任务队列发送图片 + 上下文到大模型服务 3. 大模型返回:风险等级、告警描述、误报建议 4. 结果写入告警记录的 `ai_analysis` 扩展字段 **实现方式**:Python `asyncio` 或 Celery(预留) --- ### 五、技术栈 | 层级 | 技术 | |------|------| | 后端框架 | FastAPI + Uvicorn | | 数据库 | SQLite(轻量)或 MySQL | | 图片存储 | 本地文件系统 / 对象存储 | | 前端框架 | Vue 3 + Vben Admin(芋道) | | 异步任务 | asyncio(预留 Celery) | --- ### 六、开发优先级 **Phase 1(核心)**: 1. 后端告警接收接口(multipart/form-data) 2. 图片存储与访问 3. SQLite 持久化 4. 告警查询接口 **Phase 2(前端)**: 1. 告警列表页 2. 告警详情页 3. 人工处理功能 **Phase 3(增强)**: 1. 异步大模型分析 2. 告警统计图表 3. Docker 部署 --- ### 七、与 ai_edge 对接示例 边缘端(ai_edge)调用: ```python import requests files = { 'snapshot': ('alert.jpg', image_bytes, 'image/jpeg'), 'data': (None, json.dumps(alert_data), 'application/json') } response = requests.post( "http://alert-platform/api/v1/alerts", files=files ) ``` ---