- 新增用户详情页,支持编辑(状态切换/密码确认)、键盘导航 - Modal 增加 ESC/←→/Enter 键盘支持 - LDAP 邮箱三路径同步:密码登录、SSO 免登录、批量同步接口 - 角色权限页:删除改 Modal、按钮样式对齐 - API Key 页:副标题、状态切换、创建弹窗错误提示、成功提示颜色对齐 - 全站字体/颜色一致:text-sm、dark mode 补全 - TopBar 文字颜色对齐 |
||
|---|---|---|
| public | ||
| scripts | ||
| src | ||
| templates-docs | ||
| .dockerignore | ||
| .env.example | ||
| .gitignore | ||
| CHANGELOG.md | ||
| CLAUDE.md | ||
| Caddyfile | ||
| Dockerfile | ||
| README.md | ||
| docker-compose.yml | ||
| next-env.d.ts | ||
| next.config.ts | ||
| package-lock.json | ||
| package.json | ||
| postcss.config.mjs | ||
| tailwind.config.js | ||
| tsconfig.json | ||
README.md
IT 设备资产管理系统
基于 Next.js + SQLite 的 IT 设备资产管理系统(CMDB),域名为 assets.tlyq.ai,管理 GPU 服务器、存储服务器等 120+ 台设备的硬件信息,通过 REST API 对外提供服务。
技术栈
| 分类 | 技术 |
|---|---|
| 框架 | Next.js 15 + TypeScript |
| UI | React 19 + Tailwind CSS v4 + lucide-react |
| 数据库 | SQLite(better-sqlite3,WAL 模式) |
| 认证 | JWT(cookie 方式)+ 自定义 session + API Key |
功能
- 设备 CRUD(创建、编辑、删除、搜索、列筛选、高级查询)
- 设备状态管理(腾讯使用 / 图灵使用 / 闲置 / 备用 / 维修中 / 已下线)
- 设备详情(含完整硬件信息、历史工单卡片)
- 批量编辑(多选设备批量修改类型、位置、状态等)
- Excel 导入/导出(模板下载、多选导出、全量导出权限控制)
- 工单历史联动(调用 issue-ai API 获取同 IP 历史工单)
- API Key 管理(支持服务间调用认证,细粒度权限控制)
- 用户/角色权限管理(12 个细粒度权限,支持自定义角色)
- 审计日志
设备字段
| 分类 | 字段 |
|---|---|
| 设备标识 | node_name、serial_number、device_type、device_purpose、status |
| 位置信息 | room、rack_position |
| 网络 | business_ip、hdm_ip、NIC×3(型号/类型/速率/数量) |
| 硬件规格 | manufacturer、device_model、warranty_date |
| CPU/内存 | cpu_model、cpu_generation、cpu_cores、cpu_threads、memory_total 等 |
| GPU | gpu_model、gpu_power、gpu_count |
| 存储 | sys_disk、data_disk1/2(型号/规格/容量/类型/协议)、raid_model、raid_spec |
| 电源 | psu1/2_model、psu1/2_power、psu_total_power |
完整 schema 含 68 列硬件字段,详见 src/lib/db-schema.ts。
API 路由
| 方法 | 路径 | 说明 |
|---|---|---|
| GET/POST | /api/assets |
设备列表(分页/搜索/列筛选/排序)/ 创建设备 |
| GET/PUT/DELETE | /api/assets/[id] |
单个设备操作 |
| POST | /api/assets/batch |
批量修改设备 |
| POST | /api/assets/import |
Excel 导入 |
| GET | /api/assets/export |
Excel 导出 |
| GET | /api/assets/field-values |
获取字段可选值(列筛选下拉) |
| GET | /api/stats |
统计概览(按状态/类型/厂商/机房) |
| GET/POST | /api/api-keys |
API Key 列表 / 创建(仅显示一次) |
| DELETE | /api/api-keys/[id] |
删除 Key |
| GET/POST | /api/users |
用户列表 / 创建 |
| GET/PUT/DELETE | /api/users/[id] |
单个用户操作 |
| GET/POST | /api/roles |
角色列表 / 创建 |
| PUT/DELETE | /api/roles/[id] |
更新角色权限 / 删除角色 |
| POST | /api/auth/login |
登录 |
| POST | /api/auth/logout |
登出 |
| GET | /api/auth/me |
当前用户信息及权限 |
……
与 issue.tlyq.ai 联动
assets-ai 向 issue-ai 提供设备信息,issue-ai 在工单管理中根据 IP 自动关联设备并展示详情卡片。同时 assets-ai 设备详情页调用 issue-ai API 展示同 IP 历史工单。
issue-ai ──→ GET /api/assets?search=IP (获取设备信息)
assets-ai ──→ GET /api/tickets/by-asset?ip=X (获取历史工单)
认证方式:双向 API Key(Authorization: Bearer ak_xxx)。