Add files via upload
基于 RBAC 权限模型 + LightGBM 智能修复引擎的气田生产数据监测平台
本项目面向天然气气田生产场景,提供 实时数据监测、异常检测、时序数据智能修复 与 多角色权限管控 能力。
系统采用前后端分离架构:
核心场景:现场传感器(压力、流量、温度、累计量)在采集过程中经常出现 缺失值 与 异常值。系统通过 LightGBM 等模型对异常数据进行检测与修复,修复结果需满足 WMAPE、S-score 等评估指标,并支持甲方(客户)对修复方案进行审批。
/dashboard/overview
/dashboard/monitor
/dashboard/repair
/dashboard/sys
/dashboard/points
菜单为动态下发:用户只能看到其角色被授权的模块,未授权模块不会出现在左侧菜单中。
/api
utf8mb4
gas_field_rbac
天然气气田数据实时监测与修复系统/ ├── backend/ # Spring Boot 后端 │ ├── pom.xml │ └── src/main/ │ ├── java/com/gasfield/ │ │ ├── GasFieldApplication.java # 启动类 │ │ ├── AuthController.java # 登录接口 │ │ ├── RbacService.java # RBAC 认证与菜单授权 │ │ ├── config/CorsConfig.java # 跨域配置 │ │ ├── controller/ │ │ │ ├── PointController.java # 点位管理接口 │ │ │ └── MonitorController.java # 监测数据接口 │ │ ├── entity/ # SysUser / SysRole / SysModule / PointInfo / RealTimeData │ │ └── mapper/ # SysUserMapper / SysModuleMapper / PointInfoMapper / RealTimeDataMapper │ └── resources/application.yml # 端口与数据源配置 ├── frontend/ # React 前端 │ ├── package.json │ ├── vite.config.js # 端口 3000,代理 /api -> 8080 │ ├── index.html │ └── src/ │ ├── App.jsx # 路由与登录态 │ ├── main.jsx │ ├── pages/ │ │ ├── Login.jsx # 登录页(含角色快速切换) │ │ └── Dashboard.jsx # 主框架(左侧动态菜单 + 顶部 Header) │ ├── components/ │ │ ├── DashboardOverview.jsx # 气田总览 │ │ ├── ProductionMonitor.jsx # 生产监测 │ │ ├── DataRepair.jsx # 数据修复 │ │ ├── UserManagement.jsx # 用户管理 │ │ └── PointManagement.jsx # 点位管理 │ ├── api/ │ │ ├── request.js # Axios 实例 + 拦截器 │ │ └── auth.js # 登录接口封装 │ └── utils/auth.js # token / 用户信息本地存储 ├── sql/ │ ├── init.sql # RBAC 五表 + 初始账号/角色/菜单 │ ├── business-tables.sql # 12 张业务表结构 │ └── sample-data.sql # 示例数据 ├── init-database.bat # 一键初始化数据库 ├── start-backend.bat # 一键启动后端 ├── start-frontend.bat # 一键启动前端 └── 说明文档(含安装部署说明).docx # 课程说明文档
init.sql
sys_user
sys_role
role_key
sys_module
parent_id
path
sys_user_role
sys_role_module
business-tables.sql
point_info
real_time_data
anomaly_detection
repair_strategy
repair_record
model_config
model_version
alarm_rule
alarm_record
operation_log
report_template
system_config
方式一:一键脚本(推荐,Windows)
在项目根目录创建 database.local.ini(脚本会读取其中的账号密码):
database.local.ini
mysql_user=root mysql_password=你的MySQL密码
双击运行 init-database.bat。脚本会自动查找 mysql.exe,依次导入:
init-database.bat
mysql.exe
sql/init.sql
sql/business-tables.sql
sql/sample-data.sql
方式二:手动导入
mysql -u root -p --default-character-set=utf8mb4 < sql/init.sql mysql -u root -p --default-character-set=utf8mb4 gas_field_rbac < sql/business-tables.sql mysql -u root -p --default-character-set=utf8mb4 gas_field_rbac < sql/sample-data.sql
编辑 backend/src/main/resources/application.yml,将 password 改为你的 MySQL 密码:
backend/src/main/resources/application.yml
password
server: port: 8080 spring: datasource: url: jdbc:mysql://localhost:3306/gas_field_rbac?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai username: root password: 3306 # ← 改成你自己的密码 driver-class-name: com.mysql.cj.jdbc.Driver mybatis: configuration: map-underscore-to-camel-case: true
cd backend mvn spring-boot:run
或双击 start-backend.bat。启动成功后控制台输出 ====== 气田管理系统后端启动成功 ======,服务地址:http://localhost:8080
start-backend.bat
====== 气田管理系统后端启动成功 ======
cd frontend npm install npm run dev
或双击 start-frontend.bat。浏览器访问:http://localhost:3000
start-frontend.bat
Vite 已配置代理:前端所有 /api/** 请求转发到 http://localhost:8080,因此无需修改前端接口地址。
/api/**
http://localhost:8080
所有账号初始密码均为 123456(登录页支持一键切换角色演示)。
123456
admin
ADMIN
client_01
CLIENT
algo_dev
ALGO_DEV
field_eng
FIELD_ENGINEER
权限控制逻辑:登录成功后返回用户的 roleId,后端根据 sys_role_module 查询该角色的授权菜单并下发前端,前端据此渲染左侧菜单。
roleId
/api/auth
/api/auth/login
{ "username": "...", "password": "..." }
token
user
menus
/api/points
/api/points/stats
/api/points/{id}
/api/points/feature-type/{type}
/api/points/well-station/{station}
/api/points/group/{groupName}
/api/points/filters
/api/points/{id}/status
{ "status": 1 }
/api/monitor
/api/monitor/realtime/{pointId}?hours=24
/api/monitor/latest/{pointId}?limit=100
/api/monitor/all?startTime=&endTime=
/api/monitor/quality/{pointId}?hours=24
/api/monitor/dashboard
/api/monitor/data
时间参数格式为 yyyy-MM-dd HH:mm:ss。
yyyy-MM-dd HH:mm:ss
server.port
spring.datasource
localhost:3306/gas_field_rbac
mybatis.configuration.map-underscore-to-camel-case
frontend/vite.config.js
server.proxy['/api'].target
backend/.../config/CorsConfig.java
localhost:3000 / 5173 / 8081
1. 登录提示「用户名或密码错误」 确认密码为 123456,且用户名在 admin / client_01 / algo_dev / field_eng 之内。当前认证逻辑为演示实现(见 RbacService.authenticate),返回的 token 为 mock 字符串。
RbacService.authenticate
2. 数据库初始化脚本报错找不到密码 init-database.bat 依赖项目根目录的 database.local.ini,需手动创建并填写 mysql_user 与 mysql_password。
mysql_user
mysql_password
3. 前端请求 404 / 跨域失败 确认后端已在 8080 端口启动;若前端端口不是 3000,需在 CorsConfig.java 中补充对应的 allowedOrigins,或修改 vite.config.js 的代理端口。
CorsConfig.java
allowedOrigins
vite.config.js
4. 点位管理页数据为空 示例数据由 sql/sample-data.sql 写入,请确认该脚本已成功导入,可通过 SELECT COUNT(*) FROM point_info; 校验(默认 10 条)。
SELECT COUNT(*) FROM point_info;
5. 中文乱码 建库时需使用 utf8mb4 字符集,导入时添加 --default-character-set=utf8mb4 参数(一键脚本已包含)。
--default-character-set=utf8mb4
本项目为「软件开发案例」课程实践项目,部分业务数据(气田地图、修复对比曲线、模型评估指标等)为前端静态演示数据,用于展示系统交互与可视化效果。
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802047560号
天然气气田数据实时监测与修复系统
基于 RBAC 权限模型 + LightGBM 智能修复引擎的气田生产数据监测平台
一、项目简介
本项目面向天然气气田生产场景,提供 实时数据监测、异常检测、时序数据智能修复 与 多角色权限管控 能力。
系统采用前后端分离架构:
核心场景:现场传感器(压力、流量、温度、累计量)在采集过程中经常出现 缺失值 与 异常值。系统通过 LightGBM 等模型对异常数据进行检测与修复,修复结果需满足 WMAPE、S-score 等评估指标,并支持甲方(客户)对修复方案进行审批。
二、功能模块
/dashboard/overview/dashboard/monitor/dashboard/repair/dashboard/sys/dashboard/points三、技术栈
后端
前端
/api代理)数据库
utf8mb4,库名gas_field_rbac四、目录结构
五、数据库设计
1. RBAC 权限表(
init.sql)sys_usersys_rolerole_key)sys_moduleparent_id、路由path)sys_user_rolesys_role_module2. 业务表(
business-tables.sql)point_inforeal_time_dataanomaly_detectionrepair_strategyrepair_recordmodel_configmodel_versionalarm_rulealarm_recordoperation_logreport_templatesystem_config六、快速开始
6.1 环境要求
6.2 初始化数据库
方式一:一键脚本(推荐,Windows)
在项目根目录创建
database.local.ini(脚本会读取其中的账号密码):双击运行
init-database.bat。脚本会自动查找mysql.exe,依次导入:sql/init.sql(创建库gas_field_rbac与 RBAC 表)sql/business-tables.sql(创建业务表)sql/sample-data.sql(写入示例数据)方式二:手动导入
6.3 修改后端数据源
编辑
backend/src/main/resources/application.yml,将password改为你的 MySQL 密码:6.4 启动后端
或双击
start-backend.bat。启动成功后控制台输出====== 气田管理系统后端启动成功 ======,服务地址:http://localhost:80806.5 启动前端
或双击
start-frontend.bat。浏览器访问:http://localhost:3000七、默认账号与权限
所有账号初始密码均为
123456(登录页支持一键切换角色演示)。adminADMINclient_01CLIENTalgo_devALGO_DEVfield_engFIELD_ENGINEER权限控制逻辑:登录成功后返回用户的
roleId,后端根据sys_role_module查询该角色的授权菜单并下发前端,前端据此渲染左侧菜单。八、接口清单
认证
/api/auth/api/auth/login{ "username": "...", "password": "..." },返回token、user、menus点位
/api/points/api/points/api/points/stats/api/points/{id}/api/points/feature-type/{type}/api/points/well-station/{station}/api/points/group/{groupName}/api/points/filters/api/points/api/points/{id}/api/points/{id}/status{ "status": 1 }/api/points/{id}监测
/api/monitor/api/monitor/realtime/{pointId}?hours=24/api/monitor/latest/{pointId}?limit=100/api/monitor/all?startTime=&endTime=/api/monitor/quality/{pointId}?hours=24/api/monitor/dashboard/api/monitor/data九、配置说明
backend/src/main/resources/application.yml→server.portspring.datasourcelocalhost:3306/gas_field_rbacmybatis.configuration.map-underscore-to-camel-casefrontend/vite.config.js→server.portserver.proxy['/api'].targethttp://localhost:8080backend/.../config/CorsConfig.javalocalhost:3000 / 5173 / 8081十、常见问题
1. 登录提示「用户名或密码错误」 确认密码为
123456,且用户名在admin/client_01/algo_dev/field_eng之内。当前认证逻辑为演示实现(见RbacService.authenticate),返回的 token 为 mock 字符串。2. 数据库初始化脚本报错找不到密码
init-database.bat依赖项目根目录的database.local.ini,需手动创建并填写mysql_user与mysql_password。3. 前端请求 404 / 跨域失败 确认后端已在 8080 端口启动;若前端端口不是 3000,需在
CorsConfig.java中补充对应的allowedOrigins,或修改vite.config.js的代理端口。4. 点位管理页数据为空 示例数据由
sql/sample-data.sql写入,请确认该脚本已成功导入,可通过SELECT COUNT(*) FROM point_info;校验(默认 10 条)。5. 中文乱码 建库时需使用
utf8mb4字符集,导入时添加--default-character-set=utf8mb4参数(一键脚本已包含)。十一、后续规划
十二、说明
本项目为「软件开发案例」课程实践项目,部分业务数据(气田地图、修复对比曲线、模型评估指标等)为前端静态演示数据,用于展示系统交互与可视化效果。