refactor: 更新项目结构和文档,明确芋道模块定位

- 添加 .gitignore 文件,排除 .trae/ 目录
- 更新 README.md,明确项目是芋道大前端中的告警模块后端
- 删除 .trae/ 规划文件(已移至 docs/ 对接文档)
This commit is contained in:
2026-02-02 09:51:58 +08:00
parent 12e127f1f0
commit ec03d38920
4 changed files with 150 additions and 226 deletions

110
README.md
View File

@@ -1,25 +1,57 @@
# AI 告警平台
# AI 告警平台后端服务
轻量级告警接收与处理平台,接收边缘端告警数据,存储到数据库并提供可视化查询能力
> ⚠️ **重要**:本项目是芋道大前端中的**告警业务模块后端**,不是独立前端项目
## 功能特性
## 项目定位
- 告警接收:支持边缘端通过 multipart/form-data 上报告警
- 图片存储:阿里云 OSS 对象存储
- 告警管理:查询、筛选、处理告警
- 大模型分析:异步告警智能分析
**职责**接收边缘端ai_edge告警、保存告警证据、提供 REST API
**不负责**
- 设备管理(由 IoT 平台负责)
- 推理逻辑(由边缘端 ai_edge 负责)
- 用户体系(复用芋道前端用户体系)
## 在芋道中的定位
```
yudao-ui-admin-vben (芋道前端项目)
├─ 用户管理(已有)
├─ 权限管理(已有)
├─ 系统配置(已有)
└─ 业务模块
└─ 告警管理(本项目后端对接)
├─ 告警列表
├─ 告警详情
├─ 人工处理
└─ 大模型分析结果展示
```
## 技术栈
| 层级 | 技术 |
|------|------|
| 后端框架 | FastAPI + Uvicorn |
| 数据库 | SQLite轻量或 MySQL |
| 图片存储 | 阿里云 OSS |
| 异步任务 | asyncio预留 Celery |
## 快速开始
```bash
# 安装依赖
# 1. 激活 yolo 环境
conda activate yolo
# 2. 进入项目目录
cd c:\Users\16337\PycharmProjects\service
# 3. 安装依赖
pip install -r requirements.txt
# 配置环境变量
# 4. 配置环境变量
cp .env.example .env
# 编辑 .env 文件,配置数据库和 OSS
# 编辑 .env 文件,配置阿里云 OSS
# 启动服务
# 5. 启动服务
python -m app.main
```
@@ -28,23 +60,59 @@ python -m app.main
```
alert_platform/
├── app/
│ ├── main.py # FastAPI 入口
│ ├── config.py # 配置
│ ├── models.py # 数据模型
│ ├── schemas.py # Pydantic 模型
│ ├── api/
│ │ └── alert.py # 告警 API
│ ├── main.py # FastAPI 入口 + API 接口
│ ├── config.py # 配置管理
│ ├── models.py # SQLAlchemy 告警模型
│ ├── schemas.py # Pydantic 请求/响应模型
│ ├── services/
│ │ ├── alert_service.py # 告警业务
│ │ ── oss_storage.py # OSS 存储
│ │ ├── alert_service.py # 告警业务逻辑
│ │ ── oss_storage.py # 阿里云 OSS 上传
│ │ └── ai_analyzer.py # 异步大模型分析
│ └── utils/
│ └── logger.py # 日志工具
├── data/ # 数据库目录
├── docs/
│ └── 芋道前端对接文档.md # 芋道前端集成指南
├── data/ # SQLite 数据库
├── uploads/ # 本地临时存储
├── requirements.txt
── .env.example
── .env.example
└── .gitignore
```
## API 文档
启动后访问http://localhost:8000/docs
## 对接文档
详细的前端集成指南请参考:`docs/芋道前端对接文档.md`
## 边缘端对接示例
在 ai_edge 项目中调用:
```python
import requests
import json
alert_data = {
"camera_id": "cam-001",
"roi_id": "roi-01",
"alert_type": "leave_post",
"algorithm": "LeavePostAlgorithm",
"confidence": 85,
"duration_minutes": 5,
"trigger_time": "2024-01-20T10:30:00Z",
"message": "离岗告警"
}
files = {
"snapshot": ("alert.jpg", image_bytes, "image/jpeg"),
"data": (None, json.dumps(alert_data), "application/json"),
}
response = requests.post(
"http://localhost:8000/api/v1/alerts",
files=files
)
```