添加 uipro,更新 wiki

This commit is contained in:
eafonyang
2026-07-10 11:25:45 +08:00
parent 6bb39e9172
commit f88ff46427
163 changed files with 30244 additions and 151 deletions
@@ -33,6 +33,13 @@
- [frontend/src/views/system/users/index.vue](file://frontend/src/views/system/users/index.vue)
</cite>
## 更新摘要
**变更内容**
- OTA固件管理功能已更新以支持beta版本特性
- 版本唯一性规则从'verCode + model'变更为'verCode + model + beta'组合
- 允许同一设备型号下存在多个不同beta状态的固件版本
- 前端界面新增beta状态筛选和显示功能
## 目录
1. [简介](#简介)
2. [项目结构](#项目结构)
@@ -99,7 +106,8 @@ ROUTER --> UTILS_AUTH
- 型号管理
- 支持型号增删改查、频响文件上传(CSV/TXT/JSON)、S3 存储、Meilisearch 推送与校验、Redis EQ 缓存读取。
- OTA 固件管理
- 支持 X8/X9 设备固件包上传(S3 或本地),设备端最新版本检查接口,后台管理列表与编辑。
- 支持 X8/X9 设备固件包上传(S3 或本地),设备端"最新版本检查"接口,后台管理列表与编辑。
- **新增**:支持beta版本管理,允许同一设备型号下存在多个不同beta状态的固件版本。
- 分享码日志管理
- 提供分享码导出/导入日志的查询接口,支持多维过滤与排序。
- 权限模型
@@ -111,7 +119,7 @@ ROUTER --> UTILS_AUTH
- [backend/src/models/DashboardUser.js:1-58](file://backend/src/models/DashboardUser.js#L1-L58)
- [backend/src/routes/brands.js:1-147](file://backend/src/routes/brands.js#L1-L147)
- [backend/src/routes/models.js:1-569](file://backend/src/routes/models.js#L1-L569)
- [backend/src/routes/ota.js:1-292](file://backend/src/routes/ota.js#L1-L292)
- [backend/src/routes/ota.js:1-295](file://backend/src/routes/ota.js#L1-L295)
- [backend/src/routes/shareCodeLogs.js:1-88](file://backend/src/routes/shareCodeLogs.js#L1-L88)
- [frontend/src/router/index.js:1-91](file://frontend/src/router/index.js#L1-L91)
@@ -153,7 +161,7 @@ end
- 登录流程
- 前端提交用户名与密码,后端校验账号是否存在且启用,验证密码哈希,更新最近登录时间,签发 Access Token 并返回用户信息。
- 当前用户
- 需携带有效 Token 调用获取当前用户,后端返回用户基础信息。
- 需携带有效 Token 调用"获取当前用户",后端返回用户基础信息。
- 修改密码
- 需携带有效 Token,校验旧密码,长度不少于 6 位,成功后更新密码哈希。
- 鉴权中间件
@@ -290,17 +298,20 @@ ModelR-->>FE : 返回字段值
### OTA 固件管理
- 功能点
- 设备端最新版本检查:无需登录,按当前版本号、设备型号与硬件版本筛选可用升级包。
- 设备端"最新版本检查":无需登录,按当前版本号、设备型号与硬件版本筛选可用升级包。
- 后台上传固件包:支持 X8(S3)、X9(本地);自动计算 MD5,返回下载地址与存储键。
- 后台管理:列表查询、详情、创建、更新(版本号+型号唯一性校验)、删除。
- 后台管理:列表查询、详情、创建、更新(版本号+型号+灰度状态唯一性校验)、删除。
- **新增**:Beta版本支持,允许同一设备型号下存在多个不同beta状态的固件版本。
- 关键参数
- 最新版本检查:currentVerCode、model、hw。
- 上传:model、package_file。
- 列表:verCode、verName、model、status、skip、limit。
- 列表:verCode、verName、model、status、beta、skip、limit。
- 创建/更新:verCode、verName、url、md5、force、desc、model、hw、target、beta、startTime、endTime、status。
- 返回值
- 统一 ApiResponse 包裹,成功时返回列表、单条记录或上传结果。
**更新** 版本唯一性规则已从'verCode + model'组合变更为'verCode + model + beta'组合,允许同一设备型号下存在多个不同beta状态的固件版本。
```mermaid
sequenceDiagram
participant Device as "设备端"
@@ -315,19 +326,23 @@ Admin->>OTAR : POST /api/ota/upload-package
OTAR->>OtaSvc : 校验并保存升级包
OtaSvc-->>OTAR : 返回 md5/filename/url/s3_key
OTAR-->>Admin : 返回上传结果
Admin->>OTAR : POST /api/ota/ (含beta字段)
OTAR->>DB : 检查verCode+model+beta唯一性
DB-->>OTAR : 唯一性检查结果
OTAR-->>Admin : 创建结果
```
图表来源
- [backend/src/routes/ota.js:68-102](file://backend/src/routes/ota.js#L68-L102)
- [backend/src/routes/ota.js:24-66](file://backend/src/routes/ota.js#L24-L66)
- [backend/src/routes/ota.js:107-143](file://backend/src/routes/ota.js#L107-L143)
- [backend/src/routes/ota.js:162-194](file://backend/src/routes/ota.js#L162-L194)
- [backend/src/routes/ota.js:196-247](file://backend/src/routes/ota.js#L196-L247)
- [backend/src/routes/ota.js:249-268](file://backend/src/routes/ota.js#L249-L268)
- [backend/src/routes/ota.js:107-145](file://backend/src/routes/ota.js#L107-L145)
- [backend/src/routes/ota.js:165-196](file://backend/src/routes/ota.js#L165-L196)
- [backend/src/routes/ota.js:198-250](file://backend/src/routes/ota.js#L198-L250)
- [backend/src/routes/ota.js:252-271](file://backend/src/routes/ota.js#L252-L271)
- [backend/src/services/otaStorage.js](file://backend/src/services/otaStorage.js)
章节来源
- [backend/src/routes/ota.js:1-292](file://backend/src/routes/ota.js#L1-L292)
- [backend/src/routes/ota.js:1-295](file://backend/src/routes/ota.js#L1-L295)
### 用户权限管理
- 角色模型
@@ -447,6 +462,7 @@ Services --> Cache["Redis"]
- 文件格式不支持:仅允许 CSV/TXT/JSONTXT 将被自动转换为 CSV。
- OTA 上传
- 仅支持指定设备型号;S3 未配置或上传失败会返回明确错误。
- **新增**:版本唯一性冲突检查包含beta状态,确保verCode+model+beta组合唯一。
- Meilisearch 集成
- 推送/删除失败:检查服务可达性与 API Key;关注返回的任务 UID。
- 分享码日志
@@ -458,11 +474,12 @@ Services --> Cache["Redis"]
- [backend/src/routes/brands.js:62-80](file://backend/src/routes/brands.js#L62-L80)
- [backend/src/routes/models.js:319-335](file://backend/src/routes/models.js#L319-L335)
- [backend/src/routes/ota.js:27-58](file://backend/src/routes/ota.js#L27-L58)
- [backend/src/routes/ota.js:176-183](file://backend/src/routes/ota.js#L176-L183)
- [backend/src/routes/models.js:543-561](file://backend/src/routes/models.js#L543-L561)
- [backend/src/routes/shareCodeLogs.js:37-48](file://backend/src/routes/shareCodeLogs.js#L37-L48)
## 结论
本系统围绕认证—权限—数据模型—业务路由—服务集成的清晰分层组织,通过统一的响应封装与中间件机制保障了接口一致性与安全性。品牌、型号、OTA、分享码日志等核心功能均具备完善的 CRUD、校验与外部集成能力,适合在生产环境中稳定运行。建议持续完善监控与告警、日志分级与外部服务降级策略,以进一步提升稳定性与可观测性。
本系统围绕"认证—权限—数据模型—业务路由—服务集成"的清晰分层组织,通过统一的响应封装与中间件机制保障了接口一致性与安全性。品牌、型号、OTA、分享码日志等核心功能均具备完善的 CRUD、校验与外部集成能力,适合在生产环境中稳定运行。**新增的beta版本支持功能进一步增强了OTA固件管理的灵活性,允许在同一设备型号下管理多个不同灰度状态的版本**。建议持续完善监控与告警、日志分级与外部服务降级策略,以进一步提升稳定性与可观测性。
## 附录
- 前端页面与路由对应关系