# hmbridge **Repository Path**: asmdas/hmbridge ## Basic Information - **Project Name**: hmbridge - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-08-15 - **Last Updated**: 2025-11-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # HMBridge 设备审批管理系统 基于 Rust + Axum + SQLite + Vue.js 的现代化设备审批管理系统,提供完整的设备管理、审批流程和权限控制功能。 ## ✨ 核心功能 ### 🔐 权限管理系统 - **基于角色的权限控制(RBAC)** - **三种用户角色**:管理员、审核者、请求者 - **模块级权限控制**:不同角色访问不同功能模块 - **JWT认证**:安全的用户身份验证 ### 📋 审批流程管理 - **设备审批申请**:创建、编辑、删除审批请求 - **审批状态跟踪**:实时跟踪审批进度 - **审批结果记录**:记录审批意见和结果 - **历史记录查询**:完整的审批历史追踪 ### 🏭 设备地址编码管理 - **设备配置管理**:创建设备编码和描述 - **地址自动计算**:自动计算设备通信地址 - **批量导入功能**:支持CSV文件批量导入设备 - **地址区域管理**:状态区、脉冲区、通过区、拒绝区 ### 📊 报表和统计 - **审批统计报表**:按状态、时间、用户等维度统计 - **设备使用统计**:设备配置和使用情况统计 - **用户活动统计**:用户操作和活动记录 ### 🌐 现代化前端界面 - **响应式设计**:支持桌面端和移动端 - **Vue.js 3 + Composition API**:现代化的前端架构 - **Tailwind CSS**:美观的UI组件库 - **实时通知**:操作结果实时反馈 ## 🚀 快速开始 ### 系统要求 - **Rust**: 1.70+ - **Node.js**: 18+ - **SQLite**: 3.0+ ### 1. 克隆项目 ```bash git clone cd hmbridge ``` ### 2. 安装依赖 ```bash # 后端依赖 cd backend cargo build cd .. # 前端依赖 cd frontend npm install cd .. ``` ### 3. 初始化数据库 ```bash # 自动创建数据库、运行迁移、插入默认数据 cd backend ./init_db.sh cd .. ``` **默认用户账户:** - 管理员: `admin` / `admin123` - 审核者: `reviewer` / `reviewer123` - 请求者: `requester` / `requester123` ### 4. 启动服务 ```bash # 启动后端服务 cd backend cargo run cd .. # 启动前端开发服务器(新终端) cd frontend npm run dev ``` **服务地址:** - 后端 API: `http://127.0.0.1:3000` - 前端界面: `http://localhost:5173` ## 🏗️ 项目结构 ``` hmbridge/ ├── backend/ # Rust 后端项目 │ ├── src/ # Rust 后端源码 │ │ ├── main.rs # 主程序入口 │ │ ├── models.rs # 数据模型定义 │ │ ├── repository.rs # 数据访问层 │ │ ├── handlers.rs # 请求处理器 │ │ ├── auth.rs # 认证中间件 │ │ └── modbus_server.rs # Modbus服务器 │ ├── migrations/ # 数据库迁移文件 │ ├── scripts/ # 管理脚本 │ │ ├── init_db.sh # 数据库初始化 │ │ ├── check_db.sh # 数据库状态检查 │ │ ├── reset_db.sh # 数据库重置 │ │ ├── run_server.sh # 服务启动 │ │ ├── clean_project.sh # 项目清理 │ │ └── generate_password.sh # 密码生成工具 │ └── Cargo.toml # Rust 依赖配置 ├── frontend/ # Vue.js 前端项目 │ ├── src/ # 源码目录 │ ├── public/ # 静态资源 │ ├── package.json # 前端依赖配置 │ └── Cargo.toml # 工作空间成员配置 ├── Cargo.toml # 工作空间根配置 └── README.md # 项目说明文档 ``` ## 🔐 权限控制详解 ### 用户角色定义 | 角色 | 权限级别 | 可访问模块 | | ------------- | -------- | ---------------------------------------------- | | **Admin** | 最高权限 | Dashboard, Requests, Approvals, Reports, Users | | **Reviewer** | 审核权限 | Dashboard, Approvals, Reports | | **Requester** | 申请权限 | Dashboard, Requests, Reports | ### 模块权限矩阵 | 模块 | Admin | Reviewer | Requester | 功能说明 | | ------------- | ----- | -------- | --------- | -------------------- | | **Dashboard** | ✅ | ✅ | ✅ | 系统概览和统计信息 | | **Requests** | ✅ | ❌ | ✅ | 审批申请管理 | | **Approvals** | ✅ | ✅ | ❌ | 审批流程处理 | | **Reports** | ✅ | ✅ | ✅ | 报表和统计查看 | | **Users** | ✅ | ❌ | ❌ | 用户管理(仅管理员) | ## 🔧 数据库管理 ### 核心数据表 - **approvals**: 审批记录表 - **users**: 用户信息表 - **command_code_address**: 命令代码地址表 - **device_code_address**: 设备地址编码表 ### 管理脚本 ```bash # 初始化数据库(首次使用) cd backend && ./init_db.sh # 检查数据库状态 cd backend && ./check_db.sh # 重置数据库(⚠️ 危险操作) cd backend && ./reset_db.sh # 清理项目文件 cd backend && ./clean_project.sh ``` ## 📱 批量导入功能 ### CSV文件格式 ```csv 设备编码,设备描述 DEVICE001,生产线1号设备 DEVICE002,生产线2号设备 DEVICE003,测试设备 ``` ### 地址计算规则 - **脉冲区地址**: 从30001开始递增 - **状态区地址**: 脉冲区地址 + 1000 - **通过区地址**: 脉冲区地址 + 10000 - **拒绝区地址**: 通过区地址 + 1000 ### 使用步骤 1. 准备CSV文件(UTF-8编码) 2. 点击"批量导入"按钮 3. 上传并预览数据 4. 确认导入 ## 🔌 API 接口文档 ### 认证接口 - `POST /auth/login` - 用户登录 - `POST /auth/register` - 用户注册 - `GET /auth/me` - 获取当前用户信息 - `GET /auth/permissions` - 获取用户权限信息 ### 用户管理接口 - `GET /users` - 获取所有用户 - `GET /users/{id}` - 获取指定用户 - `PUT /users/{id}` - 更新用户信息 - `DELETE /users/{id}` - 删除用户 - `PUT /users/{id}/password` - 修改密码 ### 审批管理接口 - `GET /approvals` - 获取审批列表 - `POST /approvals` - 创建审批申请 - `PUT /approvals/{id}` - 更新审批状态 - `DELETE /approvals/{id}` - 删除审批申请 ### 设备管理接口 - `GET /devices` - 获取设备列表 - `POST /devices` - 创建设备配置 - `PUT /devices/{id}` - 更新设备配置 - `DELETE /devices/{id}` - 删除设备配置 - `POST /devices/batch-import` - 批量导入设备 **认证要求:** 除登录和注册外,所有接口都需要 JWT 令牌。 ## 🛠️ 技术架构 ### 后端技术栈 - **Rust**: 高性能系统编程语言 - **Axum**: 现代化的Web框架 - **SQLite**: 轻量级数据库 - **sqlx**: 类型安全的数据库ORM - **JWT**: JSON Web Token认证 - **bcrypt**: 密码加密 ### 前端技术栈 - **Vue.js 3**: 渐进式JavaScript框架 - **Composition API**: 组合式API - **Tailwind CSS**: 实用优先的CSS框架 - **Vite**: 快速的前端构建工具 - **Vue Router**: 官方路由管理器 - **Pinia**: 状态管理库 ## 📋 变更日志 ### [2024-12-19] - 设备地址编码表结构更新 - **主要变更**:将`device_name`字段重命名为`device_code` - **新增功能**:`description`字段支持设备描述 - **批量导入增强**:支持CSV格式的设备编码和描述导入 - **数据库迁移**:创建完整的数据库结构迁移文件 ### [2024-12-18] - 权限系统完善 - **权限控制**:实现基于角色的访问控制 - **用户管理**:完整的用户CRUD操作 - **认证系统**:JWT令牌认证机制 ### [2024-12-17] - 基础功能实现 - **审批管理**:基本的审批流程功能 - **设备管理**:设备地址编码管理 - **前端界面**:Vue.js现代化界面 ## 🚨 注意事项 ### 部署前检查 - 确保所有依赖已正确安装 - 检查数据库连接配置 - 验证文件权限设置 ### 安全建议 - 定期更改默认密码 - 及时更新依赖包版本 - 定期备份数据库文件 ### 性能优化 - 定期清理日志文件 - 监控数据库性能 - 优化查询语句 ## 🤝 贡献指南 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](LICENSE) 文件了解详情。 ## 📞 技术支持 如果您在使用过程中遇到问题,请: 1. 查看本文档的使用说明 2. 检查错误日志信息 3. 联系技术支持团队 4. 提供详细的错误描述和复现步骤 --- **HMBridge** - 让设备管理更简单,让审批流程更高效 🚀 ## 环境变量配置 ### FRONTEND_DIST_PATH 用于自定义前端静态文件路径的环境变量。 - **默认值**: `frontend/dist` - **用途**: 指定前端编译后的静态文件目录路径 - **示例**: ```bash # 使用默认路径 export FRONTEND_DIST_PATH=frontend/dist # 使用自定义路径 export FRONTEND_DIST_PATH=/var/www/html # 在 Docker 中使用 docker run -e FRONTEND_DIST_PATH=/app/static hmbridge ``` ## 启动脚本 ### 1. 通用启动脚本 (`start.sh`) 适用于开发环境的通用启动脚本,支持交互式操作和环境变量配置。 ```bash # 交互式启动 ./start.sh # 仅启动后端 ./start.sh --backend # 仅启动前端 ./start.sh --frontend # 显示帮助 ./start.sh --help ``` **支持的环境变量:** - `FRONTEND_DIST_PATH`: 前端静态文件路径 - `BACKEND_PORT`: 后端服务端口 - `FRONTEND_PORT`: 前端服务端口 - `DATABASE_PATH`: 数据库文件路径 - `RUST_LOG`: Rust 日志级别 - `RUST_BACKTRACE`: 调试信息 ### 2. Docker 启动脚本 (`docker-start.sh`) 适用于 Docker 环境的启动脚本,支持容器管理和环境变量配置。 ```bash # 构建镜像 ./docker-start.sh build # 启动容器 ./docker-start.sh start # 停止容器 ./docker-start.sh stop # 查看日志 ./docker-start.sh logs # 进入容器 ./docker-start.sh shell ``` **支持的环境变量:** - `FRONTEND_DIST_PATH`: 前端静态文件路径 (默认: `/app/static`) - `BACKEND_PORT`: 后端服务端口 (默认: `8080`) - `FRONTEND_PORT`: 前端服务端口 (默认: `3000`) - `DATABASE_PATH`: 数据库文件路径 (默认: `/app/data/approval.db`) - `RUST_LOG`: Rust 日志级别 (默认: `info`) - `RUST_BACKTRACE`: 调试信息 (默认: `1`) ### 3. 生产环境启动脚本 (`start-prod.sh`) 适用于生产环境的启动脚本,支持 systemd 服务管理和安全配置。 ```bash # 构建生产版本 ./start-prod.sh build # 启动生产服务 ./start-prod.sh start # 停止服务 ./start-prod.sh stop # 查看服务状态 ./start-prod.sh status # 查看日志 ./start-prod.sh logs ``` **支持的环境变量:** - `FRONTEND_DIST_PATH`: 前端静态文件路径 (默认: `/var/www/html`) - `BACKEND_PORT`: 后端服务端口 (默认: `80`) - `DATABASE_PATH`: 数据库文件路径 (默认: `/var/lib/hmbridge/approval.db`) - `RUST_LOG`: Rust 日志级别 (默认: `warn`) - `RUST_BACKTRACE`: 调试信息 (默认: `0`) - `WORKERS`: 工作进程数 (默认: `4`) ## 环境变量配置文件 ### 配置文件 (`env.example`) 项目提供了环境变量配置示例文件,用户可以复制并自定义: ```bash # 复制配置文件 cp env.example .env # 编辑配置文件 nano .env ``` ### 配置示例 **开发环境:** ```bash FRONTEND_DIST_PATH=frontend/dist BACKEND_PORT=3000 FRONTEND_PORT=5173 DATABASE_PATH=backend/approval.db RUST_LOG=info RUST_BACKTRACE=1 ``` **生产环境:** ```bash FRONTEND_DIST_PATH=/var/www/html BACKEND_PORT=80 DATABASE_PATH=/var/lib/hmbridge/approval.db RUST_LOG=warn RUST_BACKTRACE=0 WORKERS=8 ``` **Docker 环境:** ```bash FRONTEND_DIST_PATH=/app/static BACKEND_PORT=8080 FRONTEND_PORT=3000 DATABASE_PATH=/app/data/approval.db RUST_LOG=info RUST_BACKTRACE=1 ``` ## 快速开始 ### 开发环境 ```bash # 1. 克隆项目 git clone cd hmbridge # 2. 启动项目 ./start.sh # 或者分别启动 ./start.sh --backend # 终端 1 ./start.sh --frontend # 终端 2 ``` ### Docker 环境 ```bash # 1. 构建并启动 ./docker-start.sh build ./docker-start.sh start # 2. 查看状态 ./docker-start.sh status ``` ### 生产环境 ```bash # 1. 构建并启动 ./start-prod.sh start # 2. 查看服务状态 ./start-prod.sh status ``` ## 功能特性 - 支持通过环境变量自定义静态文件路径 - 默认使用 `frontend/dist` 作为静态文件目录 - 支持 Docker 部署时的路径自定义 - 提供多种启动模式(开发、Docker、生产) - 支持环境变量配置文件 - 自动化的项目结构检查和依赖管理 - 彩色日志输出和友好的用户界面 - 支持 systemd 服务管理(生产环境) ## script ```sql INSERT OR IGNORE INTO command_code_address (word_bit_addr, action_name, action_desc) VALUES (0, 'Stop', 'Send stop request'), (1, 'Run', 'Send run request'), (2, 'Verify', 'Send verification request'), (3, 'Calibrate', 'Send calibration request'), (4, 'Pause', 'Pause request'), (5, 'Manual', 'Manual request'), (6, 'Reserved 1', 'Reserved 1'), (7, 'Reserved 2', 'Reserved 2'), (8, 'Reserved 3', 'Reserved 3'), (9, 'Reserved 4', 'Reserved 4'), (10, 'Reserved 5', 'Reserved 5'), (11, 'Reserved 6', 'Reserved 6'), (12, 'Reserved 7', 'Reserved 7'), (13, 'Reserved 8', 'Reserved 8'), (14, 'Reserved 9', 'Reserved 9'), (15, 'Reserved 10', 'Reserved 10'); ```