Files
yunrui_asset/README.md
T

864 lines
31 KiB
Markdown
Raw Normal View History

# IDC设备资产系统
2025-12-18 10:45:13 +08:00
2026-02-26 13:23:27 +08:00
[![License](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)
[![Node.js](https://img.shields.io/badge/Node.js-20.x-green.svg)](https://nodejs.org/)
[![React](https://img.shields.io/badge/React-18.2.0-blue.svg)](https://react.dev/)
[![Platform](https://img.shields.io/badge/platform-Windows%20%7C%20macOS%20%7C%20Linux-lightgrey.svg)]()
2026-01-21 15:21:46 +08:00
一个现代化的数据中心(IDC)设备管理系统,提供机房、机柜、设备的全生命周期管理,具备3D可视化展示功能。
2025-12-18 10:45:13 +08:00
## 代码仓库
2026-02-26 13:23:27 +08:00
- **GitHub**: https://github.com/gituib/idc_assest
- **Gitee**: https://gitee.com/zhang96110/idc_assest
2026-02-26 13:23:27 +08:00
---
2026-01-21 15:21:46 +08:00
## 系统概述
2025-12-18 10:45:13 +08:00
### 核心功能
2025-12-18 10:45:13 +08:00
2026-02-05 13:59:28 +08:00
| 功能模块 | 描述 |
|---------|------|
2026-02-26 13:23:27 +08:00
| **机房管理** | 多机房管理,支持位置、面积、负责人等详细信息 |
2026-02-05 13:59:28 +08:00
| **机柜管理** | 机柜增删改查,容量统计,3D可视化展示 |
| **设备管理** | 服务器、网络设备、存储设备全生命周期管理,支持批量导入/导出 |
| **端口管理** | 设备端口配置与管理,支持网卡绑定 |
| **线缆管理** | 机柜间线缆连接管理,可视化追踪 |
| **工单管理** | 故障报修、维护工单全流程管理,支持自定义字段、故障分类 |
| **耗材管理** | 耗材库存、领用记录、统计报表管理,支持SN序列号追踪 |
2026-02-26 13:23:27 +08:00
| **盘点管理** | 盘点计划制定与执行,盘点任务分配与结果记录 |
| **数据看板** | 实时监控数据中心整体运行状态,设备趋势图表 |
| **3D可视化** | 三维机柜可视化展示,支持设备悬停详情、LOD优化、性能模式 |
| **系统配置** | 设备字段、工单字段自定义管理,背景配置,系统设置 |
| **用户权限** | 基于角色的权限控制(RBAC),用户审核机制 |
| **备份管理** | 数据库备份与恢复,自动定时备份,多协议远程备份(FTP/SFTP/WebDAV/SMB |
| **统计分析** | 设备、工单、耗材等多维度统计报表,用户增长趋势分析 |
### 项目截图
![数据看板](docs/images/dashboard-full.png)
*数据看板 - 实时监控数据中心运行状态*
![3D机柜可视化](docs/images/3d-visualization-full.png)
*3D机柜可视化 - 三维展示机柜设备布局*
![机房管理](docs/images/room-management-full.png)
*机房管理 - 多机房分类管理*
![机柜管理](docs/images/rack-management.png)
*机柜管理 - 机柜容量与设备布局管理*
![设备管理](docs/images/device-management-full.png)
*设备管理 - 设备全生命周期管理*
![耗材管理](docs/images/consumable-management.png)
*耗材管理 - 耗材库存与领用管理*
![工单管理](docs/images/ticket-management.png)
*工单管理 - 故障报修与维护工单处理*
![数据备份](docs/images/backup-management.png)
*数据备份 - 数据库备份与恢复管理*
2026-02-26 13:23:27 +08:00
---
2026-02-26 13:23:27 +08:00
## 技术栈
### 前端技术栈
2026-02-05 13:59:28 +08:00
| 技术 | 版本 | 用途 |
2026-01-21 15:21:46 +08:00
|------|------|------|
2026-02-05 13:59:28 +08:00
| React | 18.2.0 | 前端框架(用户界面开发库) |
| Vite | 4.4.9 | 构建工具(前端项目打包工具) |
| Ant Design | 5.8.6 | UI组件库(企业级设计系统) |
| Three.js | 0.183.2 | 3D渲染引擎 |
2026-02-26 13:23:27 +08:00
| @react-three/fiber | 8.18.0 | React Three.js 集成 |
| @react-three/drei | 9.122.0 | Three.js 辅助组件库 |
2026-02-05 13:59:28 +08:00
| React Router | 6.15.0 | 路由管理 |
| Axios | 1.13.6 | HTTP客户端 |
2026-02-05 13:59:28 +08:00
| Day.js | 1.11.19 | 日期处理库 |
| SheetJS (xlsx) | 0.18.5 | Excel文件处理 |
| PapaParse | 5.5.3 | CSV文件解析 |
2026-02-26 13:23:27 +08:00
| Framer Motion | 12.34.0 | 动画库 |
| Styled Components | 6.3.9 | CSS-in-JS 样式方案 |
| SWR | 2.4.0 | 数据请求与缓存 |
| @ant-design/icons | 6.1.0 | 图标库 |
| Vitest | 4.0.16 | 前端测试框架 |
2026-02-05 13:59:28 +08:00
2026-02-26 13:23:27 +08:00
### 后端技术栈
2026-02-05 13:59:28 +08:00
| 技术 | 版本 | 用途 |
|------|------|------|
2026-02-26 13:23:27 +08:00
| Node.js | ≥14.0.0(推荐 20.x LTS | 运行环境 |
2026-02-05 13:59:28 +08:00
| Express | 4.18.2 | Web框架(后端服务框架) |
| Sequelize | 6.37.8 | ORM框架(数据库对象关系映射) |
| SQLite | 5.1.7 | 嵌入式数据库(开发/小规模) |
2026-02-26 13:23:27 +08:00
| MySQL | 8.0+ | 关系型数据库(生产环境) |
2026-02-05 13:59:28 +08:00
| JWT | 9.0.3 | 身份认证 |
| bcryptjs | 3.0.3 | 密码加密 |
| Winston | 3.19.0 | 日志管理 |
| Winston Daily Rotate File | 5.0.0 | 日志文件轮转 |
2026-02-26 13:23:27 +08:00
| Joi | 18.0.2 | 数据验证 |
2026-02-05 13:59:28 +08:00
| Jest | 30.2.0 | 测试框架 |
| Multer | 2.1.1 | 文件上传处理 |
| Express File Upload | 1.5.2 | 文件上传中间件 |
| Node Cron | 4.2.1 | 定时任务调度 |
| Axios | 1.13.6 | HTTP客户端 |
| CSV Parser | 3.2.0 | CSV文件解析 |
| CSV Writer | 1.6.0 | CSV文件生成 |
| SheetJS (xlsx) | 0.18.5 | Excel文件处理 |
| Day.js | 1.11.19 | 日期处理库 |
| Basic FTP | 5.0.3 | FTP协议支持 |
| SSH2 SFTP Client | 9.1.0 | SFTP协议支持 |
| WebDAV | 5.3.1 | WebDAV协议支持 |
| SMB2 | 0.2.2 | SMB/CIFS协议支持 |
| MySQL2 | 3.19.1 | MySQL数据库驱动 |
| Nodemon | 3.0.1 | 开发环境自动重启 |
| Supertest | 7.1.4 | API测试工具 |
2026-02-26 13:23:27 +08:00
---
2025-12-18 10:45:13 +08:00
2026-02-26 13:23:27 +08:00
## 环境要求
### 运行环境
| 项目 | 最低要求 | 推荐配置 |
|------|----------|----------|
| **操作系统** | Windows 10/11、macOS 12+、Linux (Ubuntu 20.04+/CentOS 8+) | 同最低要求 |
| **Node.js** | ≥14.0.0 | 20.x LTS |
| **npm** | ≥6.0.0 | 10.x |
| **内存** | 4GB | 8GB+ |
| **磁盘空间** | 2GB | 10GB+ |
### 生产环境额外要求
| 项目 | 要求 |
|------|------|
| **数据库** | MySQL 8.0+ (推荐) 或 SQLite (小型部署) |
| **Web服务器** | Nginx 1.18+ (反向代理/静态文件服务) |
| **进程管理** | PM2 5.x+ |
| **SSL证书** | Let's Encrypt (可选) |
### 开发环境要求
| 项目 | 要求 |
|------|------|
| **代码编辑器** | VS Code (推荐) |
| **浏览器** | Chrome 90+、Firefox 90+、Safari 14+、Edge 90+ |
| **Git** | 2.30+ |
---
2025-12-18 10:45:13 +08:00
2026-01-21 15:21:46 +08:00
## 快速开始
2025-12-18 10:45:13 +08:00
2026-02-05 13:59:28 +08:00
### 方式一:一键部署脚本(推荐)⭐
2025-12-18 10:45:13 +08:00
我们提供了交互式安装脚本,自动完成所有部署步骤:
2026-01-21 15:21:46 +08:00
```bash
2026-03-05 10:54:00 +08:00
# 克隆项目(选择其一)
# Gitee(国内推荐)
git clone https://gitee.com/zhang96110/idc_assest.git
2026-03-05 10:54:00 +08:00
# GitHub
git clone https://github.com/gituib/idc_assest.git
cd idc_assest
# 运行交互式安装脚本
npm run deploy
# 或
node install.js
```
**脚本功能:**
- ✅ 自动检测 Node.js、npm、PM2、Nginx
-**Linux 支持自动安装 Node.js**(交互式)
- ✅ 交互式配置数据库(SQLite/MySQL
- ✅ 交互式选择运行环境(development/production
- ✅ 交互式选择前端部署方式(Nginx/PM2 serve
- ✅ 自动安装项目依赖
- ✅ 自动初始化数据库
- ✅ 自动构建前端项目
- ✅ 使用 PM2 启动和管理服务
### 方式二:手动安装
2026-02-26 13:23:27 +08:00
#### 1. 克隆项目
```bash
2026-03-05 10:54:00 +08:00
# 选择其一
# Gitee(国内推荐)
git clone https://gitee.com/zhang96110/idc_assest.git
2026-03-05 10:54:00 +08:00
# GitHub
git clone https://github.com/gituib/idc_assest.git
cd idc_assest
2026-02-26 13:23:27 +08:00
```
2026-02-26 13:23:27 +08:00
#### 2. 安装依赖
```bash
# 一键安装所有依赖(推荐)
npm run install:all
# 或分别安装
2026-02-26 13:23:27 +08:00
# 安装后端依赖
2026-01-21 15:21:46 +08:00
cd backend
npm install
2026-02-26 13:23:27 +08:00
# 安装前端依赖
2026-01-21 15:21:46 +08:00
cd ../frontend
npm install
2026-02-26 13:23:27 +08:00
```
2026-01-21 15:21:46 +08:00
2026-02-26 13:23:27 +08:00
#### 3. 配置环境变量
```bash
2026-01-21 15:21:46 +08:00
cd ../backend
cp .env.example .env
2026-02-26 13:23:27 +08:00
```
2026-01-21 15:21:46 +08:00
2026-02-26 13:23:27 +08:00
根据需要编辑 `.env` 文件(开发环境使用默认 SQLite 配置即可):
```env
# 开发环境配置示例
NODE_ENV=development
PORT=8000
DB_TYPE=sqlite
DB_PATH=./idc_management.db
```
#### 4. 初始化数据库
```bash
node scripts/init-database.js
```
#### 5. 数据库迁移
当项目更新后,可能需要执行数据库迁移脚本以更新表结构。迁移脚本支持幂等执行,重复执行不会出错。
**执行迁移脚本:**
```bash
cd backend
node scripts/migrate-all.js
```
**迁移脚本包含以下内容:**
| 迁移名称 | 说明 |
|----------|------|
| v2.0 - 网卡和端口表 | 创建 network_cards 表,为 device_ports 添加 nic_id 字段 |
| 用户表 pending 状态 | 为用户表添加 pending 状态支持 |
| 耗材乐观锁 | 为 consumables 表添加 version 字段 |
| 耗材操作日志表结构 | 添加 isEditable、originalLogId 等修改记录字段 |
| 耗材日志解耦 | 添加 isConsumableDeleted 和 consumableSnapshot 字段 |
| 移除日志外键约束 | 移除 consumable_logs 表的外键约束,防止级联删除 |
| 耗材日志归档表 | 创建 consumable_log_archives 归档表 |
| 耗材SN序列号字段 | 为 consumables、consumable_records、consumable_logs 添加 snList 字段 |
**注意事项:**
- 迁移脚本支持 SQLite 和 MySQL 两种数据库
- 建议在执行迁移前备份数据库
- 迁移脚本会自动检测已执行的迁移,避免重复执行
#### 6. 启动服务
2026-02-26 13:23:27 +08:00
**开发环境(同时启动前后端):**
```bash
# 在项目根目录运行
npm start
```
**或分别启动:**
2026-02-26 13:23:27 +08:00
```bash
2026-01-21 15:21:46 +08:00
# 启动后端(端口8000
cd backend
2026-01-21 15:21:46 +08:00
npm run dev
# 启动前端(端口3000- 新终端
cd ../frontend
npm run dev
```
2026-02-26 13:23:27 +08:00
**访问地址:**
2026-01-21 15:21:46 +08:00
- 前端应用:http://localhost:3000
- 后端APIhttp://localhost:8000/api
2026-02-05 13:59:28 +08:00
- 健康检查:http://localhost:8000/health
2026-02-26 13:23:27 +08:00
---
## 基本使用方法
### 首次登录
系统采用**首次注册自动成为管理员**的机制:
- 第一个注册的用户会自动获得「管理员」角色
- 后续注册的用户默认为「访客」角色,需要管理员审核后才能激活
- 首次访问系统时,请通过注册功能创建管理员账号
**注册方式:**
1. 打开系统登录页面
2. 点击「注册账号」链接
3. 填写用户名、密码、邮箱等信息
4. 提交后自动登录,成为系统管理员
> ⚠️ **安全建议**:首次登录后请立即修改默认密码!
### 常用操作指南
#### 1. 机房管理
- 进入「机房管理」页面,点击「新增机房」按钮
- 填写机房名称、位置、面积、负责人等信息
- 支持机房图片上传
#### 2. 机柜管理
- 在机房详情页或「机柜管理」页面管理机柜
- 设置机柜高度(U数)、位置坐标
- 查看机柜容量使用情况
#### 3. 设备管理
- 「设备管理」页面进行设备增删改查
- 支持 Excel/CSV 批量导入设备
- 设备状态:采购中 → 待安装 → 运行中 → 维护中 → 已报废
#### 4. 3D可视化
- 进入「3D可视化」页面查看机房3D模型
- 支持鼠标拖拽旋转、滚轮缩放
- 悬停设备查看详情,点击设备弹出操作面板
#### 5. 工单管理
- 创建故障报修或维护工单
- 分配负责人,设置优先级
- 记录处理过程,更新工单状态
#### 6. 耗材管理
- 管理耗材库存,设置库存预警阈值
- 记录耗材领用,追踪使用去向
- 查看耗材统计报表
- 支持SN序列号追踪
- 耗材操作日志归档
#### 7. 备份管理
- **手动备份**:立即创建数据库备份
- **自动备份**:配置定时自动备份(支持cron表达式)
- **备份恢复**:从备份文件恢复数据库
- **远程备份**:支持多种协议(FTP/SFTP/WebDAV/SMB)上传备份到远程服务器
- **备份列表**:查看和管理所有备份文件
#### 8. 统计分析
- **设备统计**:设备总数、状态分布、趋势图表
- **工单统计**:工单数量、处理时效、分类统计
- **耗材统计**:库存状况、领用趋势、分类统计
- **用户统计**:用户增长趋势、活跃用户分析
- **数据看板**:实时展示关键指标
2026-02-26 13:23:27 +08:00
---
## 项目结构
```
jigui/
├── frontend/ # 前端项目
│ ├── src/
│ │ ├── api/ # API接口封装
│ │ │ ├── index.js # API请求封装
│ │ │ └── cache.js # 缓存管理
2026-02-26 13:23:27 +08:00
│ │ ├── components/ # 通用组件
│ │ │ ├── 3d/ # 3D可视化组件
│ │ │ │ ├── materials/ # 3D材质组件
│ │ │ │ │ ├── constants.jsx
│ │ │ │ │ ├── devicePanel.jsx
│ │ │ │ │ ├── index.jsx
│ │ │ │ │ ├── rackFrame.jsx
│ │ │ │ │ └── utils.jsx
2026-02-26 13:23:27 +08:00
│ │ │ │ ├── DeviceModel.jsx # 设备模型
│ │ │ │ ├── RackModel.jsx # 机柜模型
│ │ │ │ ├── Scene.jsx # 3D场景
│ │ │ │ └── LODManager.jsx # LOD管理器
│ │ │ ├── dashboard/ # 数据看板组件
│ │ │ │ ├── AnimatedCounter.jsx
│ │ │ │ ├── CircularProgress.jsx
│ │ │ │ ├── DeviceTrendChart.jsx
│ │ │ │ ├── NavigationGrid.jsx
│ │ │ │ ├── PowerGauge.jsx
│ │ │ │ ├── QuickStats.jsx
│ │ │ │ ├── StatCard.jsx
│ │ │ │ ├── StatusLegend.jsx
│ │ │ │ └── SystemInfo.jsx
│ │ │ ├── device/ # 设备管理组件
│ │ │ │ ├── BatchStatusModal.jsx
│ │ │ │ ├── DeviceDetailModal.jsx
│ │ │ │ ├── DeviceFormModal.jsx
│ │ │ │ ├── ExportModal.jsx
│ │ │ │ ├── FieldConfigModal.jsx
│ │ │ │ ├── ImportModal.jsx
│ │ │ │ └── ResizableTitle.jsx
│ │ │ ├── CableCreateModal.jsx
│ │ │ ├── CloseButton.jsx
│ │ │ ├── DeviceDetailDrawer.jsx
│ │ │ ├── ErrorBoundary.jsx
│ │ │ ├── NetworkCardCreateModal.jsx
│ │ │ ├── NetworkCardPanel.jsx
│ │ │ ├── PortCreateModal.jsx
│ │ │ ├── PortManagementPanel.jsx
│ │ │ ├── PortPanel.jsx
│ │ │ ├── ProtectedRoute.jsx
│ │ │ ├── ServerBackplanePanel.jsx
│ │ │ └── VirtualDeviceList.jsx
│ │ ├── config/ # 配置文件
│ │ │ ├── api.js # API配置
│ │ │ └── theme.js # 主题配置
│ │ ├── constants/ # 常量定义
│ │ │ └── deviceManagementConstants.js
2026-02-26 13:23:27 +08:00
│ │ ├── context/ # React Context状态管理
│ │ │ ├── AuthContext.jsx # 认证上下文
│ │ │ ├── ConfigContext.jsx # 配置上下文
│ │ │ └── Scene3DContext.jsx # 3D场景上下文
│ │ ├── hooks/ # 自定义Hooks
│ │ │ ├── useApi.js # API请求Hook
2026-02-26 13:23:27 +08:00
│ │ │ ├── useDebounce.js # 防抖Hook
│ │ │ ├── useDesignTokens.js # 设计令牌Hook
│ │ │ ├── useIdleTimeout.js # 空闲超时Hook
│ │ │ └── useSWR.js # SWR数据请求Hook
2026-02-26 13:23:27 +08:00
│ │ ├── pages/ # 页面模块
│ │ │ ├── Dashboard.jsx # 数据看板
│ │ │ ├── Login.jsx # 登录页面
2026-02-26 13:23:27 +08:00
│ │ │ ├── RoomManagement.jsx # 机房管理
│ │ │ ├── RackManagement.jsx # 机柜管理
│ │ │ ├── DeviceManagement.jsx # 设备管理
│ │ │ ├── DeviceFieldManagement.jsx # 设备字段管理
│ │ │ ├── PendingDeviceManagement.jsx # 待审核设备管理
2026-02-26 13:23:27 +08:00
│ │ │ ├── PortManagement.jsx # 端口管理
│ │ │ ├── CableManagement.jsx # 线缆管理
│ │ │ ├── TicketManagement.jsx # 工单管理
│ │ │ ├── TicketCategoryManagement.jsx # 工单分类管理
│ │ │ ├── TicketFieldManagement.jsx # 工单字段管理
│ │ │ ├── TicketStatistics.jsx # 工单统计
2026-02-26 13:23:27 +08:00
│ │ │ ├── ConsumableManagement.jsx # 耗材管理
│ │ │ ├── CategoryManagement.jsx # 耗材分类管理
│ │ │ ├── ConsumableLogs.jsx # 耗材日志
│ │ │ ├── ConsumableStatistics.jsx # 耗材统计
2026-02-26 13:23:27 +08:00
│ │ │ ├── InventoryManagement.jsx # 盘点管理
│ │ │ ├── InventoryTaskExecution.jsx # 盘点任务执行
2026-02-26 13:23:27 +08:00
│ │ │ ├── UserManagement.jsx # 用户管理
│ │ │ ├── RolesManagement.jsx # 角色管理
2026-02-26 13:23:27 +08:00
│ │ │ ├── SystemSettings.jsx # 系统设置
│ │ │ ├── BackupManagement.jsx # 备份管理
│ │ │ ├── AutoBackupSettings.jsx # 自动备份设置
│ │ │ ├── RemoteBackupSettings.jsx # 远程备份设置
│ │ │ ├── Rack3DVisualization.jsx # 3D可视化
│ │ │ └── ErrorBoundaryTest.jsx # 错误边界测试
2026-02-26 13:23:27 +08:00
│ │ ├── styles/ # 样式文件
│ │ │ └── deviceManagementStyles.js
2026-02-26 13:23:27 +08:00
│ │ ├── utils/ # 工具函数
│ │ │ ├── common.js
│ │ │ ├── crypto.js
│ │ │ └── deviceUtils.jsx
2026-02-26 13:23:27 +08:00
│ │ ├── App.jsx # 应用入口
│ │ ├── main.jsx # 渲染入口
│ │ └── index.css # 全局样式
│ ├── public/ # 公共资源
│ │ ├── assets/3d/ # 3D资源
│ │ │ └── env.hdr # 环境贴图
│ │ └── fonts/ # 字体文件
│ │ └── Inter-Regular.woff2
2026-02-26 13:23:27 +08:00
│ ├── vite.config.mjs # Vite配置
│ ├── .env.example # 环境变量示例
2026-02-26 13:23:27 +08:00
│ └── package.json # 前端依赖
├── backend/ # 后端项目
│ ├── config/ # 配置文件
│ │ ├── index.js # 配置统一导出
│ │ ├── constants.js # 常量配置
│ │ ├── security.js # 安全配置
│ │ ├── auto-backup-settings.json # 自动备份设置
│ │ └── remote-backup-configs.json # 远程备份配置
2026-02-26 13:23:27 +08:00
│ ├── middleware/ # 中间件
│ │ ├── auth.js # 认证中间件
│ │ └── validation.js # 验证中间件
│ ├── models/ # 数据模型(Sequelize
│ │ ├── Room.js # 机房模型
│ │ ├── Rack.js # 机柜模型
│ │ ├── Device.js # 设备模型
│ │ ├── DeviceField.js # 设备字段模型
│ │ ├── DevicePort.js # 设备端口模型
│ │ ├── NetworkCard.js # 网卡模型
2026-02-26 13:23:27 +08:00
│ │ ├── Cable.js # 线缆模型
│ │ ├── Ticket.js # 工单模型
│ │ ├── TicketField.js # 工单字段模型
│ │ ├── TicketCategory.js # 工单分类模型
│ │ ├── TicketOperationRecord.js # 工单操作记录模型
│ │ ├── FaultCategory.js # 故障分类模型
│ │ ├── Consumable.js # 耗材模型
│ │ ├── ConsumableCategory.js # 耗材分类模型
│ │ ├── ConsumableRecord.js # 耗材领用记录模型
│ │ ├── ConsumableLog.js # 耗材日志模型
│ │ ├── ConsumableLogArchive.js # 耗材日志归档模型
│ │ ├── InventoryPlan.js # 盘点计划模型
│ │ ├── InventoryTask.js # 盘点任务模型
│ │ ├── InventoryRecord.js # 盘点记录模型
│ │ ├── User.js # 用户模型
│ │ ├── Role.js # 角色模型
│ │ ├── Permission.js # 权限模型
│ │ ├── UserRole.js # 用户角色关联模型
│ │ ├── SystemSetting.js # 系统设置模型
│ │ ├── PendingDevice.js # 待审核设备模型
│ │ └── ticketIndex.js # 工单模型初始化
2026-02-26 13:23:27 +08:00
│ ├── routes/ # API路由
│ │ ├── auth.js # 认证路由
│ │ ├── rooms.js # 机房路由
│ │ ├── racks.js # 机柜路由
│ │ ├── devices.js # 设备路由
│ │ ├── deviceFields.js # 设备字段路由
│ │ ├── devicePorts.js # 设备端口路由
│ │ ├── networkCards.js # 网卡路由
│ │ ├── cables.js # 线缆路由
2026-02-26 13:23:27 +08:00
│ │ ├── tickets.js # 工单路由
│ │ ├── ticketCategories.js # 工单分类路由
│ │ ├── ticketFields.js # 工单字段路由
│ │ ├── consumables.js # 耗材路由
│ │ ├── consumableCategories.js # 耗材分类路由
│ │ ├── consumableRecords.js # 耗材记录路由
│ │ ├── inventory.js # 盘点路由
2026-02-26 13:23:27 +08:00
│ │ ├── users.js # 用户路由
│ │ ├── roles.js # 角色路由
│ │ ├── systemSettings.js # 系统设置路由
│ │ ├── background.js # 背景配置路由
│ │ ├── backup.js # 备份管理路由
│ │ ├── statistics.js # 统计分析路由
│ │ └── ticketCategories.js # 工单分类路由
2026-02-26 13:23:27 +08:00
│ ├── scripts/ # 数据库脚本
│ │ ├── init-database.js # 数据库初始化
│ │ ├── migrate-all.js # 执行所有迁移脚本
│ │ ├── archive/ # 归档迁移脚本
│ │ │ ├── migrate-v2.js
│ │ │ ├── migrate-consumable-logs.js
│ │ │ ├── migrate-consumable-version.js
│ │ │ ├── migrate-consumable-log-decouple.js
│ │ │ ├── migrate-consumable-log-archive.js
│ │ │ ├── remove-consumable-log-fk.js
│ │ │ └── migrate-add-pending-status.js
│ │ ├── backup.js # 备份脚本
│ │ ├── restore.js # 恢复脚本
│ │ ├── ensure_nic_schema.js # 确保网卡表结构
│ │ ├── add-isSystem-column.js
│ │ ├── add-isSystem-mysql.js
│ │ ├── add-isSystem-sqlite.js
│ │ ├── update-system-fields.js
│ │ └── update-system-fields-v2.js
│ ├── utils/ # 工具函数
│ │ ├── autoBackupScheduler.js # 自动备份调度器
│ │ ├── backup.js # 备份工具
│ │ ├── remoteBackup.js # 远程备份工具
│ │ └── remoteBackupConfig.js # 远程备份配置
2026-02-26 13:23:27 +08:00
│ ├── validation/ # 数据验证Schema
│ │ ├── deviceSchema.js
│ │ ├── rackSchema.js
│ │ └── roomSchema.js
│ ├── uploads/ # 文件上传目录
│ │ └── avatars/ # 用户头像目录
│ ├── .env.example # 环境变量示例
2026-02-26 13:23:27 +08:00
│ ├── server.js # 服务入口
│ ├── db.js # 数据库连接
│ ├── initConfig.js # 初始化配置
│ ├── initDeviceFields.js # 初始化设备字段
│ ├── initTicketFields.js # 初始化工单字段
│ ├── create_indexes.js # 创建数据库索引
│ ├── backgroundSettings.json # 背景设置
│ ├── unlock_user.js # 用户解锁脚本
2026-02-26 13:23:27 +08:00
│ └── package.json # 后端依赖
├── docs/ # 项目文档
│ ├── api/ # 接口文档
│ │ └── README.md
│ ├── images/ # 文档图片
│ │ ├── dashboard.png
│ │ ├── 3d-visualization.png
│ │ ├── device-management.png
│ │ └── room-management.png
│ └── USER_GUIDE.md # 用户指南
2026-02-26 13:23:27 +08:00
├── scripts/ # 项目脚本
│ └── frontend-manager.js # 前端管理脚本
├── install.js # 交互式安装脚本 ⭐
├── update.js # 一键更新脚本 ⭐
├── uninstall.js # 卸载脚本
├── package.json # 项目根依赖
├── README.md # 项目说明
├── CHANGELOG.md # 版本记录
├── DEPLOYMENT.md # 部署指南
├── LICENSE # 许可证
├── .eslintrc.js # ESLint配置
├── .prettierrc # Prettier配置
└── .prettierignore # Prettier忽略文件
2026-02-26 13:23:27 +08:00
```
---
## 更新升级
2026-02-05 13:59:28 +08:00
### 一键更新(推荐)⭐
```bash
npm run update
```
功能:自动备份 → 拉取代码 → 更新依赖 → 重建前端 → 重启服务
### 手动更新
```bash
2026-02-26 13:23:27 +08:00
# 1. 拉取最新代码
git pull
2026-02-26 13:23:27 +08:00
# 2. 更新后端依赖
cd backend && npm install
2026-02-26 13:23:27 +08:00
# 3. 更新前端依赖并构建
cd ../frontend && npm install && npm run build
2026-02-26 13:23:27 +08:00
# 4. 重启服务
pm2 restart idc-backend
```
2026-02-26 13:23:27 +08:00
---
2026-01-21 15:21:46 +08:00
## API接口
完整接口文档请参考 [docs/api/README.md](docs/api/README.md)。
### 基础信息
2026-02-05 13:59:28 +08:00
| 项目 | 值 |
|------|-----|
| Base URL | `http://localhost:8000/api` |
| Content-Type | `application/json` |
| 认证方式 | Bearer Token (JWT) |
### API端点列表
| 模块 | 路由端点 | 功能说明 |
|------|----------|----------|
| 认证 | `/api/auth` | 登录、注册、登出、令牌刷新 |
| 机房 | `/api/rooms` | 机房增删改查 |
| 机柜 | `/api/racks` | 机柜增删改查 |
| 设备 | `/api/devices` | 设备管理、批量导入导出 |
| 设备字段 | `/api/deviceFields` | 设备自定义字段配置 |
| 设备端口 | `/api/device-ports` | 设备端口管理 |
| 网卡 | `/api/network-cards` | 网卡管理 |
| 线缆 | `/api/cables` | 线缆连接管理 |
| 工单 | `/api/tickets` | 工单管理、状态更新 |
| 工单分类 | `/api/ticket-categories` | 工单分类管理 |
| 工单字段 | `/api/ticket-fields` | 工单自定义字段配置 |
| 耗材 | `/api/consumables` | 耗材库存管理 |
| 耗材分类 | `/api/consumable-categories` | 耗材分类管理 |
| 耗材记录 | `/api/consumable-records` | 耗材领用记录 |
| 盘点 | `/api/inventory` | 盘点计划、任务、记录 |
| 用户 | `/api/users` | 用户管理 |
| 角色 | `/api/roles` | 角色权限管理 |
| 系统设置 | `/api/system-settings` | 系统配置管理 |
| 背景配置 | `/api/background` | 系统背景配置 |
| 备份管理 | `/api/backup` | 数据库备份、恢复、自动备份设置 |
| 统计分析 | `/api/statistics` | 多维度数据统计报表 |
| 健康检查 | `/health` | 后端服务健康状态 |
### 通用响应格式
2026-02-05 13:59:28 +08:00
**成功响应:**
```json
{
"success": true,
"data": {...},
"message": "操作成功"
}
```
2026-02-05 13:59:28 +08:00
**错误响应:**
```json
{
"success": false,
"error": "错误信息",
"message": "详细描述"
}
```
2026-02-26 13:23:27 +08:00
---
2026-01-21 15:21:46 +08:00
## 部署
2026-01-21 15:21:46 +08:00
详细部署指南请参考 [DEPLOYMENT.md](DEPLOYMENT.md)。
2026-01-21 15:21:46 +08:00
### 开发环境
2026-01-21 15:21:46 +08:00
默认使用SQLite数据库,无需额外配置即可启动。
2026-01-21 15:21:46 +08:00
### 生产环境
2026-01-21 15:21:46 +08:00
- 推荐使用MySQL数据库
- 使用Nginx作为反向代理
2026-02-26 13:23:27 +08:00
- 配置SSL证书(可选)
2026-01-21 15:21:46 +08:00
- 建议使用PM2管理进程
### 服务管理命令
```bash
# 查看服务状态
pm2 status
# 查看日志
pm2 logs idc-backend
2026-02-26 13:23:27 +08:00
pm2 logs idc-frontend
# 重启服务
pm2 restart idc-backend
2026-02-26 13:23:27 +08:00
pm2 restart idc-frontend
# 停止服务
pm2 stop idc-backend
2026-02-26 13:23:27 +08:00
# 删除服务
pm2 delete idc-backend
```
2026-01-21 15:21:46 +08:00
---
2026-02-26 13:23:27 +08:00
## 贡献指南
欢迎提交 Issue 或 Pull Request 为项目贡献力量。
### 贡献流程
1. **Fork 本项目**
2. **克隆 Fork 的仓库**
```bash
git clone https://github.com/YOUR_USERNAME/idc_assest.git
cd idc_assest
```
3. **创建功能分支**
```bash
# 功能开发
git checkout -b feature/your-feature-name
# Bug 修复
git checkout -b fix/your-fix-name
```
4. **进行开发**
- 保持代码风格一致,遵循 ESLint + Prettier 规范
- 编写有意义的提交信息
- 确保代码通过 lint 检查
5. **提交更改**
```bash
git add .
git commit -m 'feat: 添加新功能描述'
# 或
git commit -m 'fix: 修复问题描述'
```
**提交信息规范**
| 类型 | 说明 |
|------|------|
| feat | 新功能 |
| fix | Bug 修复 |
| docs | 文档更新 |
| style | 代码格式调整 |
| refactor | 代码重构 |
| perf | 性能优化 |
| test | 测试相关 |
| chore | 构建/工具链变动 |
6. **推送到远程**
```bash
git push origin feature/your-feature-name
```
7. **创建 Pull Request**
- 描述您的改动内容和目的
- 关联相关 Issue(如果有)
- 等待代码审查
### 开发规范
- 使用 ES6+ 语法
- 前端遵循 React Hooks 规范
- 后端使用 async/await 处理异步
- 保持函数简洁,单一职责
- 适当添加注释说明复杂逻辑
### 代码审查标准
- ✅ 代码功能正确性
- ✅ 符合项目编码规范
- ✅ 必要的测试覆盖
- ✅ 文档更新(如有必要)
- ✅ 性能影响评估
---
## 许可证
本项目基于 **MIT 许可证** 开源。
```
MIT License
Copyright (c) 2024 IDC Device Management System
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
```
---
## 致谢
感谢以下开源项目:
- [React](https://react.dev/) - 前端框架
- [Ant Design](https://ant.design/) - UI 组件库
- [Three.js](https://threejs.org/) - 3D 渲染引擎
- [Express](https://expressjs.com/) - Node.js Web 框架
- [Sequelize](https://sequelize.org/) - Node.js ORM
---
## 联系与支持
2026-03-05 10:54:00 +08:00
- **Gitee Issues**: https://gitee.com/zhang96110/idc_assest/issues
- **GitHub Issues**: https://github.com/gituib/idc_assest/issues
2026-02-26 13:23:27 +08:00
- 功能建议:提交 Issue 并标注 `feature-request`
- QQ群:1081123775
2026-02-26 13:23:27 +08:00
---
**⭐ 如果这个项目对您有帮助,请给我们一个 Star!**