Commit Graph
170 Commits
Author SHA1 Message Date
zhang1106 755712bdb6 feat(ports): add device-grouped port list API and frontend implementation
1. 新增按设备分组的端口查询后端API,修复端口过多时部分设备不显示的分页问题
2. 重构前端端口管理页面,改为设备维度分页并移除旧的端口级分页逻辑
3. 统一端口名称自然排序逻辑,优化页面展示顺序
4. 更新部署文档中的容器目录路径
5. 升级项目所有package.json版本到2.1.1
6. 新增两个提案文档到gitignore
2026-06-17 10:21:19 +08:00
zhang1106 413babb238 fix(systemSettings): 修复 package.json 路径错误(../../ ../) 2026-06-16 10:48:25 +08:00
zhang1106 3d39f72eb6 chore: 完善 Docker 部署目录结构与教程
- 新增 backend/logs/.gitkeep 和 backend/backups/.gitkeep 占位文件

- 调整 .gitignore 让 logs 和 backups 目录的 .gitkeep 能被追踪

- 教程更新:完整克隆项目时持久化目录已存在
2026-06-16 09:59:43 +08:00
zhang1106 584c8cf590 feat: 添加 Docker 化部署配置与 CI/CD 自动化
- 新增后端 Dockerfile(Node.js 20 Alpine 基础镜像)

- 新增前端 Dockerfile(多阶段构建:Vite build + Nginx)

- 新增 Nginx 配置(serve 前端静态文件 + 反代 /api)

- 新增 docker-compose.dev.yml 和 docker-compose.prod.yml

- 新增 GitHub Actions 工作流(自动构建推送阿里云镜像)

- 新增 .dockerignore 排除不需要的文件

- 新增部署方案文档
2026-06-15 16:14:08 +08:00
zhang1106 8d600e084b release: bump version to 2.1.0 and update changelog
更新了所有包的版本号为2.1.0
2026-06-12 16:09:07 +08:00
zhang1106 1b9a5571ae refactor(devices): 实现设备字段动态校验与配置同步
1. 新增动态设备校验Schema生成器,支持从数据库读取字段配置生成校验规则
2. 重构设备增改接口,使用动态校验替代硬编码Schema
3. 调整前端设备表单,适配字段配置并锁定核心系统字段
4. 修复前后端默认字段配置不一致问题
5. 新增字段管理页面防护,锁定核心字段的必填/可见配置
2026-06-12 16:01:41 +08:00
zhang1106 85d6b2c633 refactor: 重写系统设置模块,新增维护模式与登录策略功能
- 移除大量无实际效果的冗余配置项
- 新增维护模式拦截逻辑,支持管理员豁免
- 重构登录失败次数限制,从配置动态读取阈值
- 新增站点Logo支持与配置管理
- 优化用户管理页面数据拉取逻辑
- 新增端口批量创建范围模式功能
- 更新依赖包版本与缓存策略
2026-06-12 14:16:29 +08:00
zhang1106 170997ef61 feat(device): 增强导出功能,支持按筛选条件导出全部设备
- 导出接口从 GET 改为 POST,避免 URL 长度限制

- 新增 filters 参数支持按关键词、状态、类型、机房、机柜筛选导出

- 修复删除/编辑设备后分页跳回第一页的问题

- 导出模态框改为传递计数而非数组,支持显示总数

- 使用唯一文件名避免并发导出冲突

- 补充 idle 状态映射
2026-06-12 09:39:06 +08:00
zhang1106 a29e77156e fix(device): 修复添加设备时设备类型/状态下拉框为空
前端:DeviceManagement.jsx 中补充 options 的判断条件
- 原条件 !field.options 对空数组 [] 判定为 false,导致
  数据库里 options 被清空时下拉框没有选项
- 改为同时检查 null/undefined 和空数组,确保本地默认值
  能正确兜底(type、status 字段同步修复)

后端:initDeviceFields.js 加固系统字段 options 兜底逻辑
- 系统字段(isSystem: true)的 options 永远不应为空
- 启动时如果检测到系统字段 options 为空,强制重置为默认
  值,这样即使前端修复后 options 仍为空,后端重启时也能自愈
- 仅作用于系统字段,不影响用户自定义字段
2026-06-11 11:26:31 +08:00
root e7a0cbb9d1 修复盘点失败和机柜统计不准确的问题 2026-06-09 16:02:09 +08:00
zhang1106 8c9e82c8a7 refactor(server, init-db): 调整数据库模型同步逻辑与顺序
- 补充新增的业务模型同步配置
- 按依赖层级重构初始化脚本的同步顺序
- 调整server.js中业务模型同步的调用时机
- 更新同步完成的日志信息
2026-05-15 16:52:38 +08:00
zhang1106 a8e45d2d8a refactor(db): 简化设备索引迁移脚本逻辑
- 提取重复的索引检查创建逻辑为公共函数addIndexIfNotExists
- 减少冗余代码,提升脚本可维护性
2026-05-12 09:37:12 +08:00
zhang1106 87560a4030 docs(config): 更新.gitignore 2026-05-09 13:36:46 +08:00
zhang1106 637adebb85 chore(deps): 将数据库驱动从 better-sqlite3 切换为 sqlite3
- 移除 better-sqlite3 相关配置
- 更新 package.json 依赖项
2026-05-09 09:00:52 +08:00
zhang1106 f3b53c84c9 build(deps): 将 sqlite3 替换为 better-sqlite3
- 升级数据库驱动以提升性能
- 添加 better-sqlite3 的配置选项
2026-05-08 22:50:49 +08:00
zhang1106 2826a00192 refactor(frontend): 重构状态管理使用Zustand替代Context API
feat(auth): 添加账户锁定功能及自动解锁机制
feat(user): 在用户模型中添加lockedUntil字段
feat(api): 实现账户锁定逻辑和剩余尝试次数提示

perf(3d): 优化3D场景状态管理性能
perf(floorplan): 优化平面图状态管理性能

chore(deps): 添加zustand依赖
chore(config): 更新安全配置锁定时间为3分钟

docs: 更新部分组件注释
style: 调整登录页面样式
2026-05-08 11:17:29 +08:00
zhang1106 03e320af9e feat(log): 增强日志系统功能与追踪能力
- 新增模块级别日志控制和采样配置
- 为操作日志添加requestId字段支持全链路追踪
- 优化请求日志中间件,增强结构化记录能力
- 实现日志降级机制,数据库不可用时写入文件
- 添加相关数据库迁移脚本和模型索引
2026-05-07 17:14:54 +08:00
zhang1106 fa39f2855f feat(机柜管理): 优化机柜导入导出功能
- 新增机柜导入预览功能,支持数据验证和错误提示
- 支持按选中机柜导出,优化导出文件名和提示信息
- 重构导入逻辑,分离Excel解析和验证逻辑
- 修复机柜关联设备查询问题,使用正确的关系别名
- 更新API文档,添加导入预览和选中导出接口说明
2026-05-06 15:12:57 +08:00
gituibandtraeagent 9c0fd0b3ff Revert commits 5170c0a..4e8e8b8
This reverts 3 commit(s) from 5170c0a to 4e8e8b8.

Reverted commits:
4e8e8b8 feat: 拉取最新仓库代码
307528b feat: 拉取最新仓库代码
5170c0a feat: 拉取最新仓库代码

Co-authored-by: traeagent <traeagent@users.noreply.github.com>
2026-05-06 03:27:51 +00:00
gituibandtraeagent 4e8e8b898b feat: 拉取最新仓库代码
Co-authored-by: traeagent <traeagent@users.noreply.github.com>
2026-05-06 03:26:46 +00:00
gituibandtraeagent 307528b36b feat: 拉取最新仓库代码
Co-authored-by: traeagent <traeagent@users.noreply.github.com>
2026-05-06 03:19:21 +00:00
gituibandtraeagent 5170c0ab6f feat: 拉取最新仓库代码
Co-authored-by: traeagent <traeagent@users.noreply.github.com>
2026-05-06 03:08:12 +00:00
gituibandtraeagent 4fdc6207a6 feat: 分析当前仓库
Co-authored-by: traeagent <traeagent@users.noreply.github.com>
2026-04-30 15:36:08 +00:00
zhang1106 4a3fbde5e3 chore: 更新项目版本号至2.0.0 2026-04-30 16:28:04 +08:00
zhang1106 979c28fdcd feat(floorplan): 新增机房平面图功能模块
refactor(models): 为Room和Rack模型添加布局相关字段
feat(routes): 实现机房平面图相关API接口
feat(components): 添加平面图编辑器、画布渲染及交互组件
feat(hooks): 实现平面图数据管理和状态管理
feat(pages): 新增机房平面图页面入口
style(components): 优化平面图组件样式和交互体验
2026-04-30 16:26:39 +08:00
zhang1106 94ae347d96 refactor(scripts): 移除调试用的数据库配置日志
不再需要打印数据库配置信息,因为该调试信息已不再有用
2026-04-28 14:38:08 +08:00
zhang1106 8487ad23dd fix(scripts): 修复外键脚本中添加数据库配置的调试日志输出,便于排查数据库连接问题 2026-04-28 11:23:38 +08:00
zhang1106 bf2cd221b9 feat: 实现统一日志系统和维护模式功能 2026-04-28 10:57:17 +08:00
zhang1106 e1367267f8 feat: 升级系统版本至1.2.0并优化仪表盘UI 2026-04-27 13:56:49 +08:00
zhang1106 75071ea382 feat(tickets): 增强统计接口功能并修复状态流转 2026-04-17 11:13:25 +08:00
zhang1106 01a05719dc feat(拓扑图): 新增网络拓扑图功能模块 2026-04-13 16:54:07 +08:00
zhang1106 1d297fc81a fix(devices): 修复不同数据库类型下设备ID和机架ID的数值转换问题
修改设备ID和机架ID的数值转换逻辑,针对MySQL数据库使用SIGNED类型,其他数据库使用INTEGER类型,确保在不同数据库环境下都能正确获取最大值
2026-04-10 14:34:33 +08:00
zhang1106 dd0ce03369 fix(设备管理): 修复U位位置检查的数值类型问题
确保位置和高度参数被正确转换为整数类型,避免字符串比较问题
添加调试日志帮助追踪U位检查流程
2026-04-10 14:25:35 +08:00
zhang1106 618633bc6a feat(耗材): 增强耗材日志名称同步和导入功能 2026-04-10 12:02:06 +08:00
zhang1106 9421e34147 feat(耗材管理): 新增创建耗材同时入库功能并优化库存编辑逻辑
添加创建耗材时同时入库的功能,包含入库数量、操作人和原因等字段
强制初始化新建耗材的库存为0和空SN列表
禁止通过编辑接口直接修改库存和SN列表
前端新增同时入库选项及相关表单字段
优化编辑模式下库存信息的展示方式
2026-04-09 17:11:11 +08:00
zhang1106 6a7e52312e feat(日志): 添加删除日志记录功能
后端添加删除日志的API接口,前端在日志列表中添加删除按钮和确认弹窗
2026-04-09 16:27:20 +08:00
zhang1106 e56bf8c703 feat(数据库迁移): 为MySQL添加外键约束移除功能 2026-04-09 15:48:11 +08:00
zhang1106 585e044649 feat(consumables): 添加手动创建耗材日志功能
后端:
- 新增 POST /logs 接口用于创建耗材操作日志
- 添加操作类型验证和必填字段检查
- 支持自定义创建时间

前端:
- 添加手动创建日志弹窗和表单
- 实现表单提交和验证逻辑
- 提供操作类型选择器和库存信息输入
2026-04-09 15:27:48 +08:00
zhang1106 bfe6ca4744 feat(3d): 优化3D场景性能并添加纹理缓存
refactor(DeviceModel): 使用相机Z坐标阈值减少背板渲染状态更新
refactor(LODManager): 基于距离变化率优化LOD切换逻辑
feat(TextureCache): 新增纹理缓存类用于U位标签纹理管理
refactor(RackModel): 使用纹理缓存重构U位标签生成逻辑

feat(backend): 添加端口兼容性检查功能
feat(cables): 实现端口类型和速率兼容性验证API

feat(frontend): 新增设备筛选组件FilterableDeviceSelect
refactor(PortPanel): 优化端口占用状态显示和交互
feat(CableWizardModal): 集成端口兼容性检查并优化UI
2026-04-07 17:05:19 +08:00
zhang1106 4f8a44f6b5 feat: 添加存储调试页面并优化用户角色查询 2026-04-07 14:15:44 +08:00
zhang96110 1bda91b93e fix: 修复consumableImport.js路由级authMiddleware拦截所有/api请求的问题
consumableImport.js挂载在/api根路径,使用router.use(authMiddleware)
会拦截所有/api/*请求(包括公开路由如/api/auth/login),
导致登录等公开接口返回401。

修复方案:移除router.use(authMiddleware),改为在每个具体路由上
单独添加authMiddleware中间件。
2026-04-02 03:35:23 +00:00
zhang96110 dc20bdba1f fix: 修复14个中等问题(安全+稳定性)
后端安全修复:
- devices.js: page/pageSize parseInt+范围限制、CSV导入path.basename防路径遍历
- tickets.js: CSV导出收集所有metadata key、评价限制completed状态
- users.js: 重置密码加权限检查(仅管理员或本人)
- systemSettings.js: Boolean改显式判断(修复false存储为true)
- inventory.js: 空数组Array.isArray检查(修复无法清空目标机房)
- statistics.js: 在线率改用runningDevices计算
- operationLogs.js: DATE()改strftime兼容SQLite
- devicePorts.js: 端口更新白名单过滤(防修改portId/deviceId)
- server.js: 生产环境禁用sync alter

前端修复:
- api/index.js: 401优先React Router导航(保留SPA状态)
- Scene.jsx: useFrame仅target变化时更新(减少不必要矩阵计算)
- vite.config.mjs: 移除Vue插件残留(unplugin-vue-components)
2026-04-02 03:10:06 +00:00
zhang1106 7f1df28858 feat: 实现ID生成器并重构模型ID生成逻辑
refactor: 统一ID生成方式,使用新的idGenerator模块
refactor: 重构模型ID生成逻辑,允许空ID并在创建前自动生成
fix(roomSchema): 使机房ID字段变为可选并更新前端表单验证
style: 格式化代码并优化导入语句
test: 添加操作日志集成测试文件
docs: 添加错误处理模块文档
2026-04-02 10:34:13 +08:00
zhang96110 9c0007a817 fix: 修复创建耗材时手动填写库存被空SN列表覆盖为0的bug
- 空snList不再覆盖currentStock
- 有SN时取手动库存与SN数量的较大值,允许后续补扫
2026-04-01 09:08:19 +00:00
zhang96110 de7da77c11 fix: 修复后端12个+前端5个高优先级问题
后端:
- devices.js: 修复 newRackId 重复声明、批量移动加事务、ID生成改MAX聚合
- tickets.js: 添加工单状态机校验、req.body白名单过滤
- roles.js: init-roles 添加 authMiddleware
- backup.js: 备份列表只读4KB头部,压缩文件超1MB跳过
- consumables.js: SN查询改用数据库LIKE替代全表扫描
- consumableRecords.js: 出入库加 SELECT FOR UPDATE 行级锁
- inventory.js: not_found 状态判断从 abnormal if 内移到 else if
- idleDevices.js: 删除重复的 batch-restore 路由定义(182行)
- cables.js: 接线冲突检测增加反向端口检查

前端:
- AuthContext.jsx: 初始化时调用 fetchProfile 验证token、Error提取message
- api/index.js: backupAPI.download 返回Promise、checkAdmin改POST
- Login.jsx: checkIsFirstUser 静默处理错误
- DeviceManagement.jsx: 导出 currentPage scope 使用 currentPageDevices
2026-04-01 07:27:19 +00:00
zhang96110 3ce7ea40de fix: 修复加密失效、权限失效、盘点页面崩溃等问题
- secureStorage.js: 移除硬编码密钥,改为运行时动态生成密钥
- AuthContext.jsx: 修复 hasPermission() 始终返回 true 的权限失效问题
- auth.js: 登录接口返回用户角色信息,支持前端权限判断
- InventoryManagement.jsx: 修复 res.data 多取一层导致 TypeError 崩溃
2026-04-01 06:26:03 +00:00
zhang96110 6eda3ae1f2 fix(security): 修复多个严重安全漏洞和运行时崩溃
- devices.js: 修复 hasRoomField 重复 const 声明导致模块加载失败
- devices.js: 修复 batch-status 路由 affectedCount 未定义导致崩溃
- devices.js: 修复 sequelize.literal SQL 注入,转义 LIKE 通配符和字段名
- server.js: 修复 initializeApp() 未 await 导致服务器在初始化前接收请求
- backup.js: 添加 resolveBackupPath() 防止路径遍历攻击(6处)
- inventory.js: 用 bulkCreate 替代原始 SQL 拼接,消除 SQL 注入
- systemSettings.js: 添加全局 authMiddleware,修复敏感操作无认证
- dangerousOperations.js: 添加全局认证,修复日志清理功能完全不可用
- background.js: 添加文件名安全检查、扩展名白名单、路径校验
2026-04-01 06:02:55 +00:00
zhang96110 fa65eecf5e fix(devices): 修复 batch-status 路由 affectedCount 未定义导致崩溃
- 添加缺失的 Device.update() 调用,实际执行批量状态更新
- 定义 affectedCount 变量,解决 ReferenceError 崩溃问题
- 修复前 PUT /batch-status 必定抛出 500 错误
2026-04-01 03:31:42 +00:00
zhang1106 b306c75aae feat(路由): 添加路由加载器和配置实现自动化路由注册
重构服务器路由注册逻辑,将手动路由注册替换为基于配置的自动加载
新增路由加载器工具和路由配置文件,支持动态加载和错误处理
2026-04-01 10:44:57 +08:00
zhang1106 f32684fc5c feat(server): 添加公共路径认证中间件和批量操作功能
refactor(routes): 重新组织路由顺序并添加批量删除功能
- 在server.js中添加公共路径认证中间件
- 为cables、devicePorts等路由添加批量删除功能
- 重新组织路由顺序,将相关操作分组
- 添加工单导出功能
2026-04-01 10:14:46 +08:00