182 lines
4.8 KiB
Markdown
182 lines
4.8 KiB
Markdown
|
||
# Enterprise SaaS Dashboard Design
|
||
|
||
This is a code bundle for Enterprise SaaS Dashboard Design. The original project is available at https://www.figma.com/design/SD8ReJmCwErmfmNVnHRlJb/Enterprise-SaaS-Dashboard-Design.
|
||
|
||
## 🎯 项目简介
|
||
|
||
企业级SaaS设备管理平台,提供设备全生命周期管理、授权许可管理、维修工单、固件库及系统配置等功能。
|
||
|
||
### ✨ 核心功能
|
||
|
||
- **设备管理** - 设备注册、列表、详情、BOM清单
|
||
- **授权管理** - 授权项配置、授权文件生成、手机APP下载接口 ⭐ NEW
|
||
- **配置文件管理** - 设备技术参数配置
|
||
- **维修管理** - 维修工单创建、跟踪、统计
|
||
- **固件管理** - 固件版本管理、发布
|
||
- **报废管理** - 设备报废流程管理
|
||
|
||
## 🚀 快速开始
|
||
|
||
### 安装依赖
|
||
|
||
```bash
|
||
npm i
|
||
```
|
||
|
||
### 启动开发服务器
|
||
|
||
```bash
|
||
npm run dev
|
||
```
|
||
|
||
访问 http://localhost:3000
|
||
|
||
### 构建生产版本
|
||
|
||
```bash
|
||
npm run build
|
||
npm run preview
|
||
```
|
||
|
||
## 📚 新增功能:授权文件管理
|
||
|
||
### 功能概述
|
||
|
||
本平台现已支持根据授权项和配置文件自动生成JSON格式的授权文件,手机APP可通过API接口根据设备SN号获取对应的授权文件。
|
||
|
||
### 核心特性
|
||
|
||
✅ **智能生成** - 保存授权时自动生成JSON文件
|
||
✅ **双重授权** - 支持设备级和型号级两种授权模式
|
||
✅ **数字签名** - 每个授权文件包含SHA256签名确保安全性
|
||
✅ **完整日志** - 记录每次授权的下载行为
|
||
✅ **可视化预览** - 管理后台可直接预览和下载授权文件
|
||
|
||
### 相关文档
|
||
|
||
- 📖 [**快速开始指南**](./QUICKSTART.md) - 5分钟快速上手
|
||
- 📖 [**API使用文档**](./API_LICENSE.md) - 完整的API接口说明
|
||
- 📖 [**测试指南**](./TEST_LICENSE.md) - 详细的测试步骤
|
||
- 📖 [**实现总结**](./IMPLEMENTATION_SUMMARY.md) - 技术实现细节
|
||
|
||
### 手机APP集成示例
|
||
|
||
```javascript
|
||
// APP启动时获取设备授权
|
||
const response = await fetch(
|
||
`http://your-server.com/api/licenses/download?sn=${deviceSN}`
|
||
);
|
||
|
||
const license = await response.json();
|
||
|
||
// 启用授权的功能模块
|
||
license.authModules.forEach(module => {
|
||
if (module.enabled) {
|
||
enableFeature(module.id);
|
||
}
|
||
});
|
||
|
||
// 应用配置参数
|
||
applyConfig(license.config);
|
||
```
|
||
|
||
## 🛠️ 技术栈
|
||
|
||
- **前端框架**: Next.js 14 (App Router)
|
||
- **UI组件**: React + Tailwind CSS
|
||
- **图标库**: lucide-react
|
||
- **数据库**: SQLite (better-sqlite3)
|
||
- **语言**: TypeScript
|
||
|
||
## 📁 项目结构
|
||
|
||
```
|
||
src/
|
||
├── app/
|
||
│ ├── api/ # API路由
|
||
│ │ ├── licenses/ # 授权管理API ⭐
|
||
│ │ │ ├── route.ts
|
||
│ │ │ ├── download/route.ts # 手机APP下载接口
|
||
│ │ │ └── [id]/preview/route.ts # 授权预览接口
|
||
│ │ ├── devices/ # 设备管理API
|
||
│ │ ├── config-files/ # 配置文件API
|
||
│ │ └── ...
|
||
│ ├── licenses/ # 授权管理页面 ⭐
|
||
│ ├── devices/ # 设备管理页面
|
||
│ ├── config-files/ # 配置文件页面
|
||
│ └── ...
|
||
├── lib/
|
||
│ ├── db.ts # 数据库操作(含授权文件生成工具)⭐
|
||
│ └── ...
|
||
└── styles/
|
||
```
|
||
|
||
## 🔧 API接口概览
|
||
|
||
### 授权管理API
|
||
|
||
| 接口 | 方法 | 说明 |
|
||
|------|------|------|
|
||
| `/api/licenses` | GET | 获取授权列表 |
|
||
| `/api/licenses` | POST | 创建授权(自动生成JSON) |
|
||
| `/api/licenses` | PUT | 更新授权 |
|
||
| `/api/licenses/download?sn=xxx` | GET | ⭐ 手机APP获取授权文件 |
|
||
| `/api/licenses/{id}/preview` | GET | 预览授权文件JSON |
|
||
|
||
### 授权文件JSON结构
|
||
|
||
```json
|
||
{
|
||
"version": "1.0",
|
||
"deviceModel": "GD-30 Supreme",
|
||
"deviceSN": "GD30-20260430-001",
|
||
"validUntil": "2027-04-30",
|
||
"status": "active",
|
||
"authModules": [...],
|
||
"config": {...},
|
||
"signature": {...}
|
||
}
|
||
```
|
||
|
||
## 📊 数据库表
|
||
|
||
### 主要表结构
|
||
|
||
- `devices` - 设备信息
|
||
- `device_models` - 设备型号
|
||
- `licenses` - 授权记录(含license_file字段)⭐
|
||
- `config_files` - 配置文件
|
||
- `license_download_logs` - 授权下载日志 ⭐ NEW
|
||
- `repair_orders` - 维修工单
|
||
- `firmware` - 固件版本
|
||
- `scrap_records` - 报废记录
|
||
|
||
## 🔐 安全特性
|
||
|
||
1. **数字签名验证** - 防止授权文件被篡改
|
||
2. **下载日志审计** - 追踪每次授权下载行为
|
||
3. **有效期控制** - 只返回未过期的有效授权
|
||
4. **双重匹配机制** - 设备级优先于型号级授权
|
||
|
||
## 📝 开发规范
|
||
|
||
- 使用TypeScript进行类型检查
|
||
- 遵循Next.js App Router规范
|
||
- API路由放在 `src/app/api/` 目录下
|
||
- 页面组件放在 `src/app/` 对应路由下
|
||
- 使用Tailwind CSS进行样式开发
|
||
|
||
## 🤝 贡献指南
|
||
|
||
欢迎提交Issue和Pull Request!
|
||
|
||
## 📄 许可证
|
||
|
||
本项目仅供学习和参考使用。
|
||
|
||
---
|
||
|
||
**更新时间**: 2026-04-30
|
||
**版本**: v1.1.0 (新增授权文件管理功能)
|