Files
netmeeting-infra/README.md

166 lines
4.5 KiB
Markdown
Raw Permalink 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.
# 视频主设备管理系统
基于 Django REST Framework 的视频设备全生命周期管理后端API服务。
## 项目背景
随着视频监控、视频会议等业务的扩展视频主设备如视频编码器、解码器、矩阵、NVR等数量快速增长。当前采用人工表格管理方式存在设备信息分散、维护记录缺失、IP地址冲突、序列号追溯困难等问题。
## 功能特性
### 核心模块
| 模块 | 功能说明 |
|------|----------|
| **设备管理** | 设备增删改查;按地点/楼栋/状态筛选;服役时长自动计算 |
| **序列号管理** | 支持多序列号(主序列号+辅助);唯一性校验 |
| **IP地址管理** | 支持多IP管理/业务/备用主IP标识唯一性校验 |
| **维修记录** | 故障描述/维修内容/更换配件/维修人/费用;历史追溯 |
| **附件与缩略图** | 照片/说明书上传;自动生成缩略图展示 |
| **巡检管理** | 最后巡检时间记录;保修到期预警 |
| **Excel导入导出** | 批量导入设备导出设备列表含主IP/序列号/维修简述) |
### 技术栈
| 层级 | 技术选型 |
|------|----------|
| 后端框架 | Django 4.2 + Django REST Framework 3.15 |
| 数据库 | SQLite3 (可切换MySQL/PostgreSQL) |
| 对象存储 | 本地文件系统 (可扩展MinIO) |
| 图片处理 | Pillow |
| 身份认证 | JWT + Session |
| API文档 | drf-yasg (Swagger/Redoc) |
| Excel处理 | openpyxl + pandas |
| 日志系统 | loguru |
## 快速开始
### 环境要求
- Python 3.8+
- pip
### 安装依赖
```bash
pip install -r requirements.txt
```
### 数据库迁移
```bash
python manage.py makemigrations
python manage.py migrate
```
### 创建管理员
```bash
python manage.py createsuperuser
```
### 启动服务
```bash
python manage.py runserver 0.0.0.0:8000
```
## 访问地址
| 服务 | 地址 |
|------|------|
| Swagger API文档 | http://localhost:8000/swagger/ |
| Redoc API文档 | http://localhost:8000/redoc/ |
| Django Admin后台 | http://localhost:8000/admin/ |
| 设备列表API | http://localhost:8000/api/devices/ |
## API端点
### 设备管理
| 方法 | 端点 | 说明 |
|------|------|------|
| GET | `/api/devices/` | 设备列表(分页/过滤/搜索) |
| POST | `/api/devices/` | 创建设备可同时创建主序列号和主IP |
| GET | `/api/devices/{id}/` | 设备详情(含序列号/IP/维修记录) |
| PUT | `/api/devices/{id}/` | 全量更新设备 |
| PATCH | `/api/devices/{id}/` | 部分更新设备 |
| DELETE | `/api/devices/{id}/` | 删除设备(级联删除子表) |
| GET | `/api/devices/export_excel/` | 导出Excel |
| POST | `/api/devices/import_excel/` | 导入Excel |
| POST | `/api/devices/{id}/upload_attachment/` | 上传附件 |
### 其他资源
- `/api/serials/` - 序列号管理
- `/api/ips/` - IP地址管理
- `/api/maintenance/` - 维修记录管理
- `/api/attachments/` - 附件管理
### 认证
```bash
# 获取JWT Token
POST /api/token/
Body: {
"username": "your_username",
"password": "your_password"
}
# 使用Token
Authorization: Bearer <your_access_token>
```
## Excel导入模板列名
| 列名 | 说明 | 必填 |
|------|------|------|
| 地点 | 设备所在地点 | 是 |
| 楼栋 | 所在楼栋 | 否 |
| 设备名称 | 设备标识名 | 是 |
| 型号 | 设备型号 | 否 |
| 品牌 | 设备品牌 | 否 |
| 状态 | normal/warning/offline/repair/scrap | 否默认normal |
| 运维人员 | 运维负责人 | 否 |
| 主序列号 | 设备主键号 | 否 |
| 主IP | 主要管理IP地址 | 否 |
## 项目结构
```
netmeeting-infra/
├── config/
│ ├── settings.py # Django配置
│ ├── urls.py # 主路由
│ └── wsgi.py
├── device_management/
│ ├── models.py # 5个数据库模型
│ ├── serializers.py # DRF序列化器
│ ├── views.py # ViewSet视图
│ ├── urls.py # API路由
│ ├── admin.py # Admin配置
│ └── migrations/ # 数据库迁移文件
├── manage.py
├── requirements.txt
└── README.md
```
## 数据库表结构
- `device` - 设备主表15个业务字段
- `device_serial` - 序列号子表(唯一约束)
- `device_ip` - IP地址子表唯一约束
- `maintenance_record` - 维修记录子表
- `device_attachment` - 附件管理表
## 部署方式(可选)
```bash
# Docker + Nginx + Gunicorn
# 详见Django官方部署文档
```
## 许可证
BSD License