feat: v0.8.x 功能更新与数据维护优化

- MAC地址格式统一为小写 xxxx-xxxx-xxxx,支持三种格式输入
- 更换设备MAC时自动清理OLT新发现列表中的冲突ONU记录
- 设备编辑新增场所类型字段(手动输入),区域改为下拉快速填充
- 编辑/更换设备时自动移除new_devices中同MAC的待入库记录
- 新增登录过期自动跳转(401拦截 + 过期提示)
- 新增关于页面(/about),支持Markdown渲染,管理员可在设置中编辑内容
- 新增device_status_history每日自动清理任务(保留30天)
- 更新README.md和about.md
This commit is contained in:
2026-04-24 08:53:28 +08:00
parent d222978ae4
commit eaabebbceb
15 changed files with 616 additions and 243 deletions
+98 -232
View File
@@ -1,282 +1,148 @@
# H3C ONU设备管理系统
# H3C ONU 设备管理系统
基于Python FastAPI + Vue 3H3C OLT设备监控管理系统,用于监控和管理4000+ ONU设备的在线状态。
基于 Python FastAPI + Vue 3H3C OLT 设备监控管理系统,用于监控和管理大规模 ONU 设备的在线状态。
## 功能特性
### 核心功能
- H3C OLT设备SSH连接和状态查询
- ONU设备在线状态监控(4000+设备)
- ✅ Excel数据导入和批量管理
- ✅ 定时自动状态检查(每30分钟
- ✅ 手动刷新功能(5分钟冷却限制
- ✅ 90天状态历史记录
### 设备监控与管理
- H3C OLT 设备 SSH 连接和状态查询
- ONU 设备在线状态监控(支持 4000+ 设备)
- 定时自动状态检查(可配置间隔,最小 5 分钟)
- 手动刷新功能(5 分钟冷却限制
- 设备信息编辑(区域、学校、楼宇、场所类型、备注
- 设备 MAC 地址更换,保留完整变更历史
- OLT 扫描新发现设备自动入库流程
### 数据管理
- Excel 批量导入设备信息
- 设备状态历史记录(保留 30 天)
- 每日状态快照(用于趋势图)
- 重复 MAC 地址检测
### 统计分析
- 实时在线率统计
- 7 天趋势折线图
- 区域分布饼图
### 权限管理
- Casdoor统一认证集成
- 基于RBAC的多级权限控制
- ✅ 区域/学校级别的数据隔离
- ✅ 设备信息变更审核流程
- ✅ 用户角色和权限管理
- Casdoor 统一认证OIDC
- 基于 RBAC 的多级权限控制(管理员 / 区域管理员 / 学校管理员 / 普通用户)
- 区域 / 学校级别的数据隔离
- 角色权限精细配置
### 界面功能
- ✅ 响应式Web界面
- ✅ 设备列表表格展示
- ✅ 高级筛选和搜索
- ✅ 实时统计图表
- ✅ 设备详情和历史趋势
- ✅ 数据导入和管理界面
### 运维功能
- 用户操作审计日志(保留 90 天)
- 业务下发(ONU 服务配置)
- 库存序列号管理
- 关于页面(支持 Markdown,管理员可编辑)
- 登录过期自动跳转
## 技术栈
### 后端
- **Python FastAPI** - 高性能异步Web框架
- **PostgreSQL** - 关系型数据库
- **Paramiko** - SSH连接库
- **Celery + Redis** - 异步任务队列
- **Pandas** - Excel数据处理
- **SQLAlchemy** - ORM框架
- **Casdoor SDK** - 统一认证
### 前端
- **Vue 3 + Composition API** - 前端框架
- **Element Plus** - UI组件库
- **Axios** - HTTP客户端
- **Vue Router** - 路由管理
- **Pinia** - 状态管理
- **ECharts** - 图表库
### 部署
- **Docker + Docker Compose** - 容器化部署
- **Nginx** - 反向代理
- **外部PostgreSQL/Redis** - 数据库服务
| 层级 | 技术 |
|------|------|
| 后端 | Python · FastAPI · SQLAlchemy · Celery · Redis · Paramiko · Pandas |
| 前端 | Vue 3 · Element Plus · ECharts · marked |
| 数据库 | PostgreSQL |
| 认证 | CasdoorOIDC |
| 部署 | Docker Compose · Nginx |
## 快速开始
### 环境要求
- Docker 20.10+
- Docker Compose 2.0+
- 外部PostgreSQL数据库
- 外部Redis服务
- Casdoor认证服务器
- 外部 PostgreSQL 数据库
- 外部 Redis 服务
- Casdoor 认证服务器
### 配置步骤
### 启动步骤
1. **克隆项目**
1. 克隆项目
```bash
git clone <repository-url>
cd H3ConuMS2
```
2. **配置环境变量**
2. 配置环境变量
```bash
cp deploy/.env.example deploy/.env
# 编辑deploy/.env文件,配置数据库和Casdoor信息
# 编辑 deploy/.env,填写数据库、Redis、Casdoor 等配置
```
3. **启动服务**
3. 启动服务
```bash
cd deploy
docker-compose up -d
docker compose up -d
```
4. **访问系统**
- 前端界面: http://localhost:8080
- API文档: http://localhost:8000/docs
- 健康检查: http://localhost:8000/health
4. 运行数据库迁移
```bash
docker compose exec backend alembic upgrade head
```
5. 访问系统
- 前端界面:http://localhost:8080
- API 文档:http://localhost:8000/docs
## 项目结构
```
H3ConuMS2/
├── backend/ # Python后端代码
├── backend/
│ ├── app/
│ │ ├── api/ # API路由
│ │ ├── core/ # 核心配置
│ │ ├── models/ # 数据模型
│ │ ├── schemas/ # Pydantic模式
│ │ ├── services/ # 业务逻辑
│ │ ── tasks/ # Celery任务
│ └── utils/ # 工具函
── alembic/ # 数据库迁移
│ ├── tests/ # 测试代码
│ ├── requirements.txt # Python依赖
│ └── Dockerfile # 后端Dockerfile
├── frontend/ # Vue前端代码
│ ├── public/ # 静态资源
│ │ ├── api/ # API 路由
│ │ ├── core/ # 配置、数据库、Celery
│ │ ├── middleware/ # 权限、审计中间件
│ │ ├── models/ # 数据模型
│ │ ├── services/ # 业务逻辑
│ │ ── tasks/ # Celery 定时任务
├── alembic/ # 数据库迁移
── Dockerfile
├── frontend/
│ ├── src/
│ │ ├── api/ # API调用
│ │ ├── assets/ # 资源文
│ │ ├── components/ # 组件
│ │ ├── router/ # 路由配置
│ │ ── stores/ # 状态管理
│ ├── views/ # 页面组件
│ │ └── utils/ # 工具函数
│ ├── package.json # 前端依赖
│ └── Dockerfile # 前端Dockerfile
├── deploy/ # 部署配置
│ ├── docker-compose.yml # Docker编排
│ ├── nginx.conf # Nginx配置
│ └── .env.example # 环境变量示例
├── docs/ # 文档
│ ├── api/ # API文档
│ ├── deployment/ # 部署文档
│ └── user-guide/ # 用户指南
├── scripts/ # 脚本文件
│ ├── init-db.sh # 数据库初始化
│ ├── backup.sh # 数据备份
│ └── monitor.sh # 系统监控
└── 系统设计文档.md # 详细设计文档
│ │ ├── api/ # API 调用
│ │ ├── components/ # 公共组
│ │ ├── router/ # 路由配置
│ │ ├── views/ # 页面组件
│ │ ── utils/ # 工具函数
└── Dockerfile
├── deploy/ # 部署配置(docker-compose、nginx、.env
└── about.md # 系统介绍(关于页面内容)
```
## 数据库初始化
## 定时任务
1. **创建数据库**
```sql
CREATE DATABASE h3c_onu_ms;
CREATE USER h3c_user WITH PASSWORD 'your_password';
GRANT ALL PRIVILEGES ON DATABASE h3c_onu_ms TO h3c_user;
```
2. **运行迁移**
```bash
cd backend
alembic upgrade head
```
3. **初始化数据**
```bash
python scripts/init_data.py
```
| 任务 | 执行时间 | 说明 |
|------|----------|------|
| 设备状态检查 | 每 5 分钟触发,内部节流 | 轮询所有 OLT 采集 ONU 状态 |
| 每日快照聚合 | 每天凌晨 1:00 | 生成趋势图数据 |
| 审计日志清理 | 每天凌晨 2:00 | 删除 90 天前的审计记录 |
| 状态历史清理 | 每天凌晨 3:00 | 删除 30 天前的状态历史 |
## 配置说明
### Casdoor配置
1. 在Casdoor中创建应用
2. 配置回调地址: `http://your-domain/api/auth/callback`
3. 获取Client ID、Client SecretCertificate
4. 在.env文件中配置Casdoor参数
### Casdoor
1. 在 Casdoor 中创建应用
2. 配置回调地址`http://your-domain/api/auth/callback`
3. 在 `.env` 中填写 Client ID、Client SecretCertificate
### OLT设备配置
1. 通过系统界面添加OLT设备
2. 配置SSH连接信息(IP、用户名、密码)
3. 设置插槽命令(如`display onu slot 1`
### 权限配置
1. 在Casdoor中配置用户角色
2. 在系统中配置角色权限映射
3. 分配用户区域和学校权限
## 开发指南
### 后端开发
```bash
cd backend
python -m venv venv
source venv/bin/activate # Linux/Mac
# venv\Scripts\activate # Windows
pip install -r requirements.txt
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000
```
### 前端开发
```bash
cd frontend
npm install
npm run dev
```
### 测试
```bash
# 后端测试
cd backend
pytest
# 前端测试
cd frontend
npm run test
```
## API文档
启动后端服务后,访问以下地址查看API文档:
- Swagger UI: http://localhost:8000/docs
- ReDoc: http://localhost:8000/redoc
## 监控和日志
### 健康检查
```
GET /health
```
### 指标监控
```
GET /metrics
```
### 日志查看
```bash
# 查看后端日志
docker-compose logs backend
# 查看Celery日志
docker-compose logs celery-worker
# 查看Nginx日志
docker-compose logs nginx
```
## 故障排除
### 常见问题
1. **SSH连接失败**
- 检查网络连通性
- 验证SSH凭证
- 检查防火墙设置
2. **数据库连接失败**
- 检查数据库服务状态
- 验证连接字符串
- 检查网络权限
3. **Casdoor登录失败**
- 检查Casdoor服务状态
- 验证应用配置
- 检查回调地址配置
### 日志级别
- DEBUG: 开发环境详细日志
- INFO: 生产环境常规日志
- ERROR: 错误信息记录
## 贡献指南
1. Fork项目
2. 创建功能分支 (`git checkout -b feature/AmazingFeature`)
3. 提交更改 (`git commit -m 'Add some AmazingFeature'`)
4. 推送到分支 (`git push origin feature/AmazingFeature`)
5. 创建Pull Request
## 许可证
本项目采用MIT许可证 - 查看LICENSE文件了解详情。
## 联系方式
- 项目维护者: [Your Name]
- 问题反馈: [GitHub Issues]
- 文档更新: [GitHub Wiki]
### OLT 设备
通过系统界面添加 OLT 设备,配置 SSH 连接信息(IP、用户名、密码)和插槽命令。
## 更新日志
### v1.0.0 (计划中)
- 基础设备监控功能
- Casdoor认证集成
- 权限管理系统
- Docker化部署
### v0.8.0
- 新增审计日志功能
- 新增关于页面(Markdown 编辑,管理员可配置)
- 新增登录过期自动跳转提示
- 设备编辑支持场所类型字段,区域改为下拉快速填充
- MAC 地址统一格式为 `xxxx-xxxx-xxxx`(小写)
- 更换设备 MAC 时自动清理 OLT 新发现列表中的冲突记录
- 状态历史自动清理(保留 30 天)
### v0.7.x 及以前
- 基础设备监控、OLT 管理、权限系统、Excel 导入、库存管理等核心功能
---
**重要提示**: 生产环境部署前,请务必修改默认密码和密钥,并配置适当的防火墙规则。
**注意**生产环境部署前修改默认密码和密钥,并配置适当的防火墙规则。