dfa8fa62a8ddd47ceb9c8b68ea1466c3e34c914e
feat(api): 添加OLT端口管理和设备发现功能 - 在check.py中更新discover_olt方法,使用scan_and_discover替代check_olt_devices - 在olt.py中添加get_olt_ports和toggle_olt_port接口,支持获取和控制OLT端口状态 - 添加TogglePortRequest模型用于端口操作请求验证 - 更新SSHService类,新增get_olt_ports和toggle_olt_port方法 - 优化CheckService中的MAC地址索引逻辑,支持模型信息更新 ```
H3C ONU设备管理系统
基于Python FastAPI + Vue 3的H3C OLT设备监控管理系统,用于监控和管理4000+ ONU设备的在线状态。
功能特性
核心功能
- ✅ H3C OLT设备SSH连接和状态查询
- ✅ ONU设备在线状态监控(4000+设备)
- ✅ Excel数据导入和批量管理
- ✅ 定时自动状态检查(每30分钟)
- ✅ 手动刷新功能(5分钟冷却限制)
- ✅ 90天状态历史记录
权限管理
- ✅ Casdoor统一认证集成
- ✅ 基于RBAC的多级权限控制
- ✅ 区域/学校级别的数据隔离
- ✅ 设备信息变更审核流程
- ✅ 用户角色和权限管理
界面功能
- ✅ 响应式Web界面
- ✅ 设备列表表格展示
- ✅ 高级筛选和搜索
- ✅ 实时统计图表
- ✅ 设备详情和历史趋势
- ✅ 数据导入和管理界面
技术栈
后端
- 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 - 数据库服务
快速开始
环境要求
- Docker 20.10+
- Docker Compose 2.0+
- 外部PostgreSQL数据库
- 外部Redis服务
- Casdoor认证服务器
配置步骤
-
克隆项目
git clone <repository-url> cd H3ConuMS2 -
配置环境变量
cp deploy/.env.example deploy/.env # 编辑deploy/.env文件,配置数据库和Casdoor信息 -
启动服务
cd deploy docker-compose up -d -
访问系统
- 前端界面: http://localhost:8080
- API文档: http://localhost:8000/docs
- 健康检查: http://localhost:8000/health
项目结构
H3ConuMS2/
├── backend/ # Python后端代码
│ ├── app/
│ │ ├── api/ # API路由
│ │ ├── core/ # 核心配置
│ │ ├── models/ # 数据模型
│ │ ├── schemas/ # Pydantic模式
│ │ ├── services/ # 业务逻辑
│ │ ├── tasks/ # Celery任务
│ │ └── utils/ # 工具函数
│ ├── alembic/ # 数据库迁移
│ ├── tests/ # 测试代码
│ ├── requirements.txt # Python依赖
│ └── Dockerfile # 后端Dockerfile
├── frontend/ # Vue前端代码
│ ├── public/ # 静态资源
│ ├── 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 # 详细设计文档
数据库初始化
-
创建数据库
CREATE DATABASE h3c_onu_ms; CREATE USER h3c_user WITH PASSWORD 'your_password'; GRANT ALL PRIVILEGES ON DATABASE h3c_onu_ms TO h3c_user; -
运行迁移
cd backend alembic upgrade head -
初始化数据
python scripts/init_data.py
配置说明
Casdoor配置
- 在Casdoor中创建应用
- 配置回调地址:
http://your-domain/api/auth/callback - 获取Client ID、Client Secret和Certificate
- 在.env文件中配置Casdoor参数
OLT设备配置
- 通过系统界面添加OLT设备
- 配置SSH连接信息(IP、用户名、密码)
- 设置插槽命令(如
display onu slot 1)
权限配置
- 在Casdoor中配置用户角色
- 在系统中配置角色权限映射
- 分配用户区域和学校权限
开发指南
后端开发
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
前端开发
cd frontend
npm install
npm run dev
测试
# 后端测试
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
日志查看
# 查看后端日志
docker-compose logs backend
# 查看Celery日志
docker-compose logs celery-worker
# 查看Nginx日志
docker-compose logs nginx
故障排除
常见问题
-
SSH连接失败
- 检查网络连通性
- 验证SSH凭证
- 检查防火墙设置
-
数据库连接失败
- 检查数据库服务状态
- 验证连接字符串
- 检查网络权限
-
Casdoor登录失败
- 检查Casdoor服务状态
- 验证应用配置
- 检查回调地址配置
日志级别
- DEBUG: 开发环境详细日志
- INFO: 生产环境常规日志
- ERROR: 错误信息记录
贡献指南
- Fork项目
- 创建功能分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 创建Pull Request
许可证
本项目采用MIT许可证 - 查看LICENSE文件了解详情。
联系方式
- 项目维护者: [Your Name]
- 问题反馈: [GitHub Issues]
- 文档更新: [GitHub Wiki]
更新日志
v1.0.0 (计划中)
- 基础设备监控功能
- Casdoor认证集成
- 权限管理系统
- Docker化部署
重要提示: 生产环境部署前,请务必修改默认密码和密钥,并配置适当的防火墙规则。
Description
Languages
Vue
46.4%
Python
42%
Shell
4.9%
CSS
3.9%
JavaScript
2.5%
Other
0.2%