2025-08-05 10:22:39 +08:00

177 lines
5.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 边检CV算法接口服务
### 技术栈
- **后端框架**: FastAPI
- **数据库**: SQLite (SQLAlchemy ORM)
- **AI模型**: YOLOv11n
- **进程管理**: Supervisor
- **开发语言**: Python 3.8+
### 项目结构
```
server/
├── app.py # FastAPI主应用
├── start.py # 启动脚本
├── requirements.txt # Python依赖
├── env.example # 环境变量示例
├── init_data.py # 示例数据初始化
├── core/ # 核心配置
│ └── database.py # 数据库配置
├── models/ # 数据模型
│ ├── __init__.py
│ ├── base.py # 基础模型
│ ├── algorithm.py # 算法模型
│ ├── device.py # 设备模型
│ └── event.py # 事件模型
├── schemas/ # Pydantic模型
│ ├── __init__.py
│ ├── algorithm.py # 算法相关模型
│ ├── device.py # 设备相关模型
│ └── event.py # 事件相关模型
└── routers/ # API路由
├── __init__.py
├── algorithms.py # 算法管理接口
├── devices.py # 设备管理接口
└── events.py # 事件管理接口
```
### 功能模块
#### 1. 算法管理模块
- 算法的增删改查
- 算法状态管理(启用/禁用)
- 算法版本管理
- 算法性能指标(准确率、推理时间等)
#### 2. 设备管理模块
- 设备信息管理(摄像头、传感器等)
- 设备状态监控
- 设备类型管理
- 设备地理位置信息
#### 3. 事件管理模块
- 事件记录和查询
- 事件状态管理
- 事件统计分析
- 告警管理
### API接口
#### 算法管理接口
- `POST /api/algorithms/` - 创建算法
- `GET /api/algorithms/` - 获取算法列表
- `GET /api/algorithms/{id}` - 获取算法详情
- `PUT /api/algorithms/{id}` - 更新算法
- `DELETE /api/algorithms/{id}` - 删除算法
- `PATCH /api/algorithms/{id}/status` - 更新算法状态
- `PATCH /api/algorithms/{id}/enable` - 启用/禁用算法
#### 设备管理接口
- `POST /api/devices/` - 创建设备
- `GET /api/devices/` - 获取设备列表
- `GET /api/devices/{id}` - 获取设备详情
- `PUT /api/devices/{id}` - 更新设备
- `DELETE /api/devices/{id}` - 删除设备
- `PATCH /api/devices/{id}/status` - 更新设备状态
- `PATCH /api/devices/{id}/enable` - 启用/禁用设备
- `GET /api/devices/types/list` - 获取设备类型列表
- `GET /api/devices/status/stats` - 获取设备状态统计
#### 事件管理接口
- `POST /api/events/` - 创建事件
- `GET /api/events/` - 获取事件列表
- `GET /api/events/{id}` - 获取事件详情
- `PUT /api/events/{id}` - 更新事件
- `DELETE /api/events/{id}` - 删除事件
- `PATCH /api/events/{id}/status` - 更新事件状态
- `GET /api/events/types/list` - 获取事件类型列表
- `GET /api/events/stats/summary` - 获取事件统计摘要
- `GET /api/events/stats/by-type` - 按类型统计事件
### 安装和运行
#### 1. 环境准备
```bash
# 创建虚拟环境
conda create -n border_inspection python=3.8
conda activate border_inspection
# 安装依赖
pip install -r requirements.txt
```
#### 2. 初始化数据库
```bash
# 启动服务(会自动创建数据库表)
python app.py
```
#### 3. 初始化示例数据
```bash
python init_data.py
```
#### 4. 启动服务
```bash
python app.py
```
服务将在 `http://localhost:8000` 启动
### API文档
启动服务后可以访问以下地址查看API文档
- Swagger UI: `http://localhost:8000/docs`
- ReDoc: `http://localhost:8000/redoc`
### 数据库设计
#### 算法表 (algorithms)
- 基本信息:名称、描述、版本
- 模型信息:模型路径、配置文件路径
- 性能指标:准确率、推理时间、输入尺寸
- 状态管理:启用状态、算法状态
- 分类信息:检测类别、标签
#### 设备表 (devices)
- 基本信息:名称、类型、位置
- 连接信息IP地址、端口、用户名、密码
- 视频流RTSP地址、分辨率、帧率
- 状态信息:在线状态、最后心跳时间
- 地理位置:经纬度坐标
#### 事件表 (events)
- 事件信息类型、设备ID、算法ID
- 检测结果:置信度、边界框、检测对象
- 状态管理:事件状态、严重程度
- 告警信息:是否告警、告警发送状态
- 处理信息:处理人员、处理备注、解决时间
### 开发说明
1. **添加新模型**: 在 `models/` 目录下创建新的模型文件
2. **添加新接口**: 在 `routers/` 目录下创建新的路由文件
3. **添加新Schema**: 在 `schemas/` 目录下创建新的Pydantic模型
4. **数据库迁移**: 修改模型后重启服务,数据库表会自动更新
### 部署说明
#### 使用Supervisor管理进程
```ini
[program:border_inspection]
command=python /path/to/server/start.py
directory=/path/to/server
user=www-data
autostart=true
autorestart=true
stderr_logfile=/var/log/border_inspection.err.log
stdout_logfile=/var/log/border_inspection.out.log
```
#### 环境变量配置
复制 `env.example``.env` 并修改相应配置:
```bash
cp env.example .env
# 编辑 .env 文件
```