deda4a222fa6406d129fc14e9be87d9e8134e827
视频主设备管理系统
基于 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
安装依赖
pip install -r requirements.txt
数据库迁移
python manage.py makemigrations
python manage.py migrate
创建管理员
python manage.py createsuperuser
启动服务
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/- 附件管理
认证
# 获取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- 附件管理表
部署方式(可选)
# Docker + Nginx + Gunicorn
# 详见Django官方部署文档
许可证
BSD License
Description
Languages
Python
58.7%
HTML
41.3%