285 lines
4.9 KiB
Markdown
285 lines
4.9 KiB
Markdown
# 边检CV算法管理系统 API 文档
|
||
|
||
## 概述
|
||
|
||
本系统提供了完整的边检计算机视觉算法管理API,包括设备管理、算法管理、事件管理、监控管理、告警管理等功能。
|
||
|
||
## 快速开始
|
||
|
||
### 1. 启动服务
|
||
|
||
```bash
|
||
# 安装依赖
|
||
pip install -r requirements.txt
|
||
|
||
# 启动服务
|
||
python app.py
|
||
```
|
||
|
||
服务将在 `http://localhost:8000` 启动
|
||
|
||
### 2. API文档
|
||
|
||
访问 `http://localhost:8000/docs` 查看完整的API文档
|
||
|
||
## 核心功能模块
|
||
|
||
### 1. 仪表板统计 (`/api/dashboard`)
|
||
|
||
#### 获取KPI指标
|
||
```http
|
||
GET /api/dashboard/kpi
|
||
```
|
||
|
||
#### 获取告警趋势
|
||
```http
|
||
GET /api/dashboard/alarm-trend?days=7
|
||
```
|
||
|
||
#### 获取摄像头统计
|
||
```http
|
||
GET /api/dashboard/camera-stats
|
||
```
|
||
|
||
#### 获取算法统计
|
||
```http
|
||
GET /api/dashboard/algorithm-stats
|
||
```
|
||
|
||
#### 获取事件热点
|
||
```http
|
||
GET /api/dashboard/event-hotspots
|
||
```
|
||
|
||
### 2. 监控管理 (`/api/monitors`)
|
||
|
||
#### 获取监控列表
|
||
```http
|
||
GET /api/monitors?page=1&size=20&status=online&location=港口区
|
||
```
|
||
|
||
#### 获取监控详情
|
||
```http
|
||
GET /api/monitors/{monitor_id}
|
||
```
|
||
|
||
#### 获取监控视频流
|
||
```http
|
||
GET /api/monitors/{monitor_id}/stream
|
||
```
|
||
|
||
#### 获取检测数据
|
||
```http
|
||
GET /api/monitors/{monitor_id}/detections
|
||
```
|
||
|
||
### 3. 告警管理 (`/api/alarms`)
|
||
|
||
#### 获取告警列表
|
||
```http
|
||
GET /api/alarms?page=1&size=20&severity=high&status=pending
|
||
```
|
||
|
||
#### 获取告警详情
|
||
```http
|
||
GET /api/alarms/{alarm_id}
|
||
```
|
||
|
||
#### 处理告警
|
||
```http
|
||
PATCH /api/alarms/{alarm_id}/resolve
|
||
Content-Type: application/json
|
||
|
||
{
|
||
"resolution_notes": "已确认船舶靠泊,无异常",
|
||
"resolved_by": "operator1"
|
||
}
|
||
```
|
||
|
||
#### 获取告警统计
|
||
```http
|
||
GET /api/alarms/stats
|
||
```
|
||
|
||
### 4. 场景管理 (`/api/scenes`)
|
||
|
||
#### 获取场景列表
|
||
```http
|
||
GET /api/scenes
|
||
```
|
||
|
||
#### 获取场景详情
|
||
```http
|
||
GET /api/scenes/{scene_id}
|
||
```
|
||
|
||
#### 创建场景
|
||
```http
|
||
POST /api/scenes
|
||
Content-Type: application/json
|
||
|
||
{
|
||
"name": "新场景",
|
||
"description": "场景描述"
|
||
}
|
||
```
|
||
|
||
### 5. 文件上传 (`/api/upload`)
|
||
|
||
#### 上传视频
|
||
```http
|
||
POST /api/upload/video
|
||
Content-Type: multipart/form-data
|
||
|
||
file: [视频文件]
|
||
device_id: 1
|
||
description: "视频描述"
|
||
```
|
||
|
||
#### 上传图片
|
||
```http
|
||
POST /api/upload/image
|
||
Content-Type: multipart/form-data
|
||
|
||
file: [图片文件]
|
||
event_id: 1
|
||
description: "图片描述"
|
||
```
|
||
|
||
#### 获取文件列表
|
||
```http
|
||
GET /api/upload/files?file_type=video&page=1&size=20
|
||
```
|
||
|
||
### 6. 用户认证 (`/api/auth`)
|
||
|
||
#### 用户登录
|
||
```http
|
||
POST /api/auth/login
|
||
Content-Type: application/x-www-form-urlencoded
|
||
|
||
username=admin&password=admin123
|
||
```
|
||
|
||
#### 获取用户信息
|
||
```http
|
||
GET /api/auth/profile
|
||
Authorization: Bearer {token}
|
||
```
|
||
|
||
## 数据模型
|
||
|
||
### 设备 (Device)
|
||
```json
|
||
{
|
||
"id": 1,
|
||
"name": "港口区监控1",
|
||
"device_type": "camera",
|
||
"ip_address": "192.168.1.100",
|
||
"location": "港口A区",
|
||
"status": "online",
|
||
"is_enabled": true
|
||
}
|
||
```
|
||
|
||
### 算法 (Algorithm)
|
||
```json
|
||
{
|
||
"id": 1,
|
||
"name": "船舶靠泊识别",
|
||
"description": "识别船舶靠泊行为",
|
||
"version": "1.0.0",
|
||
"status": "active",
|
||
"accuracy": 95.2,
|
||
"is_enabled": true
|
||
}
|
||
```
|
||
|
||
### 事件 (Event)
|
||
```json
|
||
{
|
||
"id": 1,
|
||
"event_type": "船舶靠泊",
|
||
"device_id": 1,
|
||
"algorithm_id": 1,
|
||
"severity": "high",
|
||
"status": "pending",
|
||
"is_alert": true,
|
||
"description": "检测到船舶靠泊行为"
|
||
}
|
||
```
|
||
|
||
## 错误处理
|
||
|
||
所有API都遵循统一的错误响应格式:
|
||
|
||
```json
|
||
{
|
||
"detail": "错误描述信息"
|
||
}
|
||
```
|
||
|
||
常见HTTP状态码:
|
||
- `200`: 成功
|
||
- `400`: 请求参数错误
|
||
- `401`: 未授权
|
||
- `404`: 资源不存在
|
||
- `500`: 服务器内部错误
|
||
|
||
## 测试
|
||
|
||
运行测试脚本验证接口:
|
||
|
||
```bash
|
||
python test_api.py
|
||
```
|
||
|
||
## 开发说明
|
||
|
||
### TODO 项目
|
||
1. 实现真实的告警趋势统计
|
||
2. 实现真实的检测数据获取
|
||
3. 实现真实的视频流URL生成
|
||
4. 实现真实的JWT验证中间件
|
||
5. 实现真实的场景管理数据库模型
|
||
6. 添加Redis缓存支持
|
||
7. 添加WebSocket实时数据推送
|
||
|
||
### 文件结构
|
||
```
|
||
server/
|
||
├── app.py # 主应用文件
|
||
├── requirements.txt # 依赖文件
|
||
├── test_api.py # API测试脚本
|
||
├── routers/ # 路由模块
|
||
│ ├── dashboard.py # 仪表板接口
|
||
│ ├── monitors.py # 监控管理接口
|
||
│ ├── alarms.py # 告警管理接口
|
||
│ ├── scenes.py # 场景管理接口
|
||
│ ├── upload.py # 文件上传接口
|
||
│ └── auth.py # 用户认证接口
|
||
├── models/ # 数据模型
|
||
├── core/ # 核心配置
|
||
└── uploads/ # 上传文件目录
|
||
```
|
||
|
||
## 部署
|
||
|
||
### 生产环境配置
|
||
1. 修改 `SECRET_KEY` 为安全的密钥
|
||
2. 配置数据库连接
|
||
3. 设置CORS允许的域名
|
||
4. 配置静态文件服务
|
||
5. 添加日志记录
|
||
6. 配置反向代理
|
||
|
||
### Docker部署
|
||
```dockerfile
|
||
FROM python:3.9
|
||
WORKDIR /app
|
||
COPY requirements.txt .
|
||
RUN pip install -r requirements.txt
|
||
COPY . .
|
||
EXPOSE 8000
|
||
CMD ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "8000"]
|
||
``` |