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:
@@ -1,282 +1,148 @@
|
||||
# H3C ONU设备管理系统
|
||||
# H3C ONU 设备管理系统
|
||||
|
||||
基于Python FastAPI + Vue 3的H3C OLT设备监控管理系统,用于监控和管理4000+ ONU设备的在线状态。
|
||||
基于 Python FastAPI + Vue 3 的 H3C 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 |
|
||||
| 认证 | Casdoor(OIDC) |
|
||||
| 部署 | 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 Secret和Certificate
|
||||
4. 在.env文件中配置Casdoor参数
|
||||
### Casdoor
|
||||
1. 在 Casdoor 中创建应用
|
||||
2. 配置回调地址:`http://your-domain/api/auth/callback`
|
||||
3. 在 `.env` 中填写 Client ID、Client Secret 和 Certificate
|
||||
|
||||
### 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 导入、库存管理等核心功能
|
||||
|
||||
---
|
||||
|
||||
**重要提示**: 生产环境部署前,请务必修改默认密码和密钥,并配置适当的防火墙规则。
|
||||
**注意**:生产环境部署前请修改默认密码和密钥,并配置适当的防火墙规则。
|
||||
|
||||
Reference in New Issue
Block a user