feat: 初始化告警平台后端项目

- 创建 FastAPI 项目结构
- 实现告警数据模型(SQLAlchemy)
- 实现 multipart/form-data 告警接收接口
- 实现阿里云 OSS 图片上传模块
- 实现告警查询和处理 API
- 实现异步大模型分析模块
This commit is contained in:
2026-02-02 09:40:02 +08:00
commit baa895a6f1
14 changed files with 1069 additions and 0 deletions

View File

@@ -0,0 +1,54 @@
## 安保设备管理 & 事件告警平台实现计划
按照你的架构设计,我将分 8 个阶段实现:
### 阶段 1项目骨架1-2 小时)
- 创建目录结构 `security_platform/`
- 配置 `settings.py`应用名、数据库、Redis
- 配置 `requirements.txt`FastAPI、SQLAlchemy 等依赖)
### 阶段 2数据库层2-3 小时)
- 创建 `infra/db.py`SQLAlchemy engine 和 session 管理)
- 创建 `core/device/models.py`Device 设备模型)
- 创建 `core/event/models.py`Event 事件模型)
- 创建 Repository 基类和设备/事件仓储实现
### 阶段 3设备管理模块2-3 小时)
- 创建 `schemas/device.py`Pydantic 请求/响应模型)
- 实现 `core/device/service.py`(设备业务逻辑)
- 创建 `api/device.py`(设备 CRUD + 心跳接口)
- 支持对接 IoT 平台的设备注册
### 阶段 4事件告警模块2-3 小时)
- 创建 `schemas/event.py`(事件 Pydantic 模型)
- 实现 `core/event/service.py`(事件处理逻辑)
- 实现 `core/event/rules.py`(告警规则引擎)
- 创建 `api/event.py`(事件上报、查询接口)
### 阶段 5WebSocket 实时推送1-2 小时)
- 实现 `api/realtime.py`WebSocket 端点)
- 告警实时推送机制
- 连接管理和消息广播
### 阶段 6辅助模块1 小时)
- 创建 `api/health.py`(健康检查)
- 创建 `utils/logger.py`(日志工具)
- 创建 `utils/time.py`(时间工具)
### 阶段 7部署配置1 小时)
- 创建 `deploy/Dockerfile`
- 创建 `deploy/docker-compose.yml`
- 创建 `deploy/nginx.conf`
### 阶段 8文档和测试1 小时)
- 生成 `README.md`
- 编写基础 API 文档
**预计总工时11-15 小时**
---
**核心技术栈确认:**
- FastAPI + Uvicorn + Gunicorn
- SQLite本地或 MySQL云端
- Redis可选用于 WebSocket 订阅)
- SQLAlchemy 2.0

View File

@@ -0,0 +1,151 @@
## AI 告警平台开发计划
### 项目定位
**职责**:仅接收边缘端告警、保存告警证据、提供可视化与人工处理能力
**不负责**:设备管理、推理逻辑、用户体系(复用芋道前端用户体系)
---
### 一、边缘端 → 告警平台 数据协议
**传输方式**multipart/form-dataJSON + 图片文件)
**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
)
```
---