更新 wiki

This commit is contained in:
eafonyang
2026-07-30 11:15:28 +08:00
parent 22a24056d6
commit 6a747b514f
8 changed files with 386 additions and 345 deletions
@@ -9,6 +9,7 @@
- [frontend/src/views/headphone/model/components/EqCacheDialog.vue](file://frontend/src/views/headphone/model/components/EqCacheDialog.vue)
- [frontend/src/views/headphone/model/components/PushProgressDialog.vue](file://frontend/src/views/headphone/model/components/PushProgressDialog.vue)
- [frontend/src/views/headphone/model/components/PushViewDialog.vue](file://frontend/src/views/headphone/model/components/PushViewDialog.vue)
- [frontend/src/views/headphone/model/components/BatchEditDialog.vue](file://frontend/src/views/headphone/model/components/BatchEditDialog.vue)
- [frontend/src/service/api/model.ts](file://frontend/src/service/api/model.ts)
- [backend/src/routes/models.js](file://backend/src/routes/models.js)
- [backend/src/models/Model.js](file://backend/src/models/Model.js)
@@ -25,12 +26,10 @@
## 更新摘要
**变更内容**
- **重大重构**:型号管理系统完全迁移到 `src/views/headphone/model/` 目录结构下
- **新增组合式函数**useModelList.ts提供TypeScript类型安全的状态管理和数据操作
- **增强对话框组件**:5个专用对话框组件支持CSV导入导出、EQ缓存管理、推送进度跟踪等高级功能
- **API模块现代化**:从JavaScript迁移到TypeScript,提供更好的类型支持
- **路由配置更新**:前端路由配置适配新的目录结构
- **服务层优化**:后端squig.link集成、频响文件处理、EQ缓存管理等核心功能保持不变
- **新增批量编辑功能**:添加208行的BatchEditDialog组件,支持对多个耳机型号进行批量操作
- **主界面集成**:在型号管理主界面中集成批量编辑对话框,提供统一的批量操作入口
- **批量操作扩展**:在现有复制、推送搜索功能基础上,增加批量编辑能力
- **用户体验优化**:通过批量编辑提升大规模型号管理的效率
## 目录
1. [简介](#简介)
@@ -51,10 +50,10 @@
- 型号表单的数据结构、字段验证与复杂表单处理(含频响文件上传)
- 型号与品牌的关联关系、级联数据管理与外键约束处理
- 型号参数的动态配置、数据格式验证与存储优化
- 批量操作(复制、推送搜索)的实现方案
- 批量操作(复制、推送搜索、**新增批量编辑**)的实现方案
- **新增**squig.link外部数据导入功能
- **新增**:组合式函数useModelList的状态管理
- **新增**5个专用对话框组件的完整功能
- **新增**6个专用对话框组件的完整功能(包含新增的批量编辑对话框)
- **重大改进**:核心组件协调更新,提升模型管理工作流体验
- **更新**:标准化的圆形图标搜索和重置按钮设计
@@ -76,6 +75,7 @@ FE_CsvViewerDialog["CsvViewerDialog.vue"]
FE_EqCacheDialog["EqCacheDialog.vue"]
FE_PushProgressDialog["PushProgressDialog.vue"]
FE_PushViewDialog["PushViewDialog.vue"]
FE_BatchEditDialog["BatchEditDialog.vue<br/>新增组件"]
end
subgraph "后端服务"
BE_Routes_Models["型号路由<br/>routes/models.js"]
@@ -90,6 +90,7 @@ end
FE_Model --> FE_useModelList
FE_Model --> FE_API_Model
FE_Model --> FE_API_Brand
FE_Model --> FE_BatchEditDialog
FE_useModelList --> FE_API_Model
FE_useModelList --> FE_API_Brand
FE_API_Model --> FE_Request
@@ -101,6 +102,7 @@ FE_Components --> FE_CsvViewerDialog
FE_Components --> FE_EqCacheDialog
FE_Components --> FE_PushProgressDialog
FE_Components --> FE_PushViewDialog
FE_Components --> FE_BatchEditDialog
FE_API_Model --> BE_Routes_Models
FE_API_Brand --> BE_Routes_Brands
BE_Routes_Models --> BE_Models_Model
@@ -119,6 +121,7 @@ BE_Routes_Brands --> BE_Models_Brand
- [frontend/src/views/headphone/model/components/EqCacheDialog.vue:1-306](file://frontend/src/views/headphone/model/components/EqCacheDialog.vue#L1-L306)
- [frontend/src/views/headphone/model/components/PushProgressDialog.vue:1-303](file://frontend/src/views/headphone/model/components/PushProgressDialog.vue#L1-L303)
- [frontend/src/views/headphone/model/components/PushViewDialog.vue:1-60](file://frontend/src/views/headphone/model/components/PushViewDialog.vue#L1-L60)
- [frontend/src/views/headphone/model/components/BatchEditDialog.vue:1-208](file://frontend/src/views/headphone/model/components/BatchEditDialog.vue#L1-L208)
**章节来源**
- [frontend/src/views/headphone/model/index.vue:1-524](file://frontend/src/views/headphone/model/index.vue#L1-L524)
@@ -134,6 +137,7 @@ BE_Routes_Brands --> BE_Models_Brand
- EqCacheDialogEQ缓存查看对话框,支持JSON树形展示
- PushProgressDialog:推送进度跟踪对话框
- PushViewDialog:推送状态查看对话框
- **BatchEditDialog:批量编辑对话框,支持对多个型号进行统一修改**
- **API模块**TypeScript封装的所有型号相关HTTP请求,包括新增的squig.link导入功能
- **后端路由**:提供完整的REST接口,包括squig.link数据抓取功能
- **服务层**:频响文件上传、EQ缓存读取、squig.link数据抓取等服务
@@ -146,6 +150,7 @@ BE_Routes_Brands --> BE_Models_Brand
- [frontend/src/views/headphone/model/components/EqCacheDialog.vue:1-306](file://frontend/src/views/headphone/model/components/EqCacheDialog.vue#L1-L306)
- [frontend/src/views/headphone/model/components/PushProgressDialog.vue:1-303](file://frontend/src/views/headphone/model/components/PushProgressDialog.vue#L1-L303)
- [frontend/src/views/headphone/model/components/PushViewDialog.vue:1-60](file://frontend/src/views/headphone/model/components/PushViewDialog.vue#L1-L60)
- [frontend/src/views/headphone/model/components/BatchEditDialog.vue:1-208](file://frontend/src/views/headphone/model/components/BatchEditDialog.vue#L1-L208)
- [frontend/src/service/api/model.ts:1-165](file://frontend/src/service/api/model.ts#L1-L165)
## 架构总览
@@ -157,6 +162,7 @@ participant U as "用户"
participant V as "型号视图<br/>index.vue"
participant CM as "组合式函数<br/>useModelList.ts"
participant MD as "ModelFormDialog"
participant BED as "BatchEditDialog<br/>新增"
participant API as "API 模块<br/>model.ts"
participant R as "后端路由<br/>models.js"
participant S as "服务层<br/>squiglink.js"
@@ -169,6 +175,12 @@ S-->>R : 返回数据
R-->>API : 品牌数据
API-->>CM : 品牌选项
CM-->>V : 渲染界面
U->>BED : 选择多个型号并点击"批量编辑"
BED->>API : 批量更新选中的型号
API->>R : PUT /api/models/batch-update
R-->>API : 批量更新结果
API-->>BED : 成功响应
BED-->>V : 关闭对话框并刷新
U->>MD : 点击"新型号"
MD->>API : 上传文件或导入squig.link
API->>R : POST /api/models/squiglink-fetch
@@ -183,6 +195,7 @@ MD-->>V : 关闭对话框并刷新
- [frontend/src/views/headphone/model/index.vue:218-424](file://frontend/src/views/headphone/model/index.vue#L218-L424)
- [frontend/src/views/headphone/model/composables/useModelList.ts:31-191](file://frontend/src/views/headphone/model/composables/useModelList.ts#L31-L191)
- [frontend/src/views/headphone/model/components/ModelFormDialog.vue:158-464](file://frontend/src/views/headphone/model/components/ModelFormDialog.vue#L158-L464)
- [frontend/src/views/headphone/model/components/BatchEditDialog.vue:1-208](file://frontend/src/views/headphone/model/components/BatchEditDialog.vue#L1-L208)
- [frontend/src/service/api/model.ts:157-165](file://frontend/src/service/api/model.ts#L157-L165)
- [backend/src/routes/models.js:307-369](file://backend/src/routes/models.js#L307-L369)
- [backend/src/services/squiglink.js:261-310](file://backend/src/services/squiglink.js#L261-L310)
@@ -254,7 +267,36 @@ useModelList是型号管理页面的核心状态管理函数,提供TypeScript
**章节来源**
- [frontend/src/views/headphone/model/index.vue:29-31](file://frontend/src/views/headphone/model/index.vue#L29-L31)
- [frontend/src/views/headphone/model/index.vue:221-228](file://frontend/src/views/headphone/model/index.vue#L221-228)
- [frontend/src/views/headphone/model/index.vue:221-228](file://frontend/src/views/headphone/model/index.vue#L221-L228)
### BatchEditDialog批量编辑对话框
**新增功能**BatchEditDialog组件提供对多个耳机型号的批量编辑能力,显著提升大规模型号管理的效率。
**核心特性**
- **批量选择支持**:基于表格选中行进行批量操作
- **统一字段编辑**:支持对选中型号的共同字段进行统一修改
- **实时预览**:显示将要被修改的型号数量和基本信息
- **确认机制**:提供详细的修改预览和确认流程
- **错误处理**:完善的错误处理和用户反馈机制
- **状态管理**:独立的对话框状态管理和生命周期控制
**支持的批量操作**
- **批量更新品牌**:将选中型号的品牌统一修改为指定品牌
- **批量更新形式**:统一设置佩戴方式(入耳式/头戴式/耳塞式)
- **批量更新阻抗**:统一设置阻抗参数
- **批量更新来源**:统一设置数据来源信息
**用户交互流程**
1. 用户在表格中选择多个型号
2. 点击"批量编辑"按钮打开对话框
3. 对话框显示选中型号的基本信息和数量
4. 用户填写要更新的字段值
5. 系统预览修改结果
6. 用户确认后执行批量更新操作
7. 显示操作结果并刷新列表
**章节来源**
- [frontend/src/views/headphone/model/components/BatchEditDialog.vue:1-208](file://frontend/src/views/headphone/model/components/BatchEditDialog.vue#L1-L208)
### ModelFormDialog型号表单对话框
**重大改进**ModelFormDialog组件经过协调更新,优化了用户交互流程和数据验证机制。
@@ -286,7 +328,7 @@ useModelList是型号管理页面的核心状态管理函数,提供TypeScript
- [backend/src/services/squiglink.js:261-310](file://backend/src/services/squiglink.js#L261-L310)
### 对话框组件体系
**重大改进**:系统包含5个专用对话框组件,每个组件都经过协调更新,具有明确的功能边界和使用场景。
**重大改进**:系统包含6个专用对话框组件,每个组件都经过协调更新,具有明确的功能边界和使用场景。
**CsvViewerDialog**
- 功能:查看CSV频响数据内容
@@ -308,11 +350,17 @@ useModelList是型号管理页面的核心状态管理函数,提供TypeScript
- 特点:简洁的信息展示,支持加载状态
- 适用:查看单个型号的推送结果
**BatchEditDialog(新增)**
- 功能:对多个型号进行批量编辑
- 特点:支持统一字段修改,提供修改预览和确认机制
- 适用:大规模型号数据的批量维护操作
**章节来源**
- [frontend/src/views/headphone/model/components/CsvViewerDialog.vue:1-50](file://frontend/src/views/headphone/model/components/CsvViewerDialog.vue#L1-L50)
- [frontend/src/views/headphone/model/components/EqCacheDialog.vue:1-306](file://frontend/src/views/headphone/model/components/EqCacheDialog.vue#L1-L306)
- [frontend/src/views/headphone/model/components/PushProgressDialog.vue:1-303](file://frontend/src/views/headphone/model/components/PushProgressDialog.vue#L1-L303)
- [frontend/src/views/headphone/model/components/PushViewDialog.vue:1-60](file://frontend/src/views/headphone/model/components/PushViewDialog.vue#L1-L60)
- [frontend/src/views/headphone/model/components/BatchEditDialog.vue:1-208](file://frontend/src/views/headphone/model/components/BatchEditDialog.vue#L1-L208)
### 型号数据模型与表单结构
- **数据模型字段**
@@ -379,6 +427,10 @@ useModelList是型号管理页面的核心状态管理函数,提供TypeScript
- **批量复制**
- 支持复制所选项的"品牌+型号"文本
- **批量编辑(新增)**
- 支持对选中型号的统一字段进行修改
- 提供修改预览和确认机制
- 支持批量更新品牌、形式、阻抗、来源等字段
- **推送搜索**
- 校验:对选中型号调用曲线校验服务,返回校验失败项
- 推送:将型号数据批量写入 Meilisearch 索引
@@ -391,11 +443,19 @@ useModelList是型号管理页面的核心状态管理函数,提供TypeScript
sequenceDiagram
participant U as "用户"
participant V as "型号视图"
participant BED as "BatchEditDialog"
participant PP as "PushProgressDialog"
participant API as "API 模块"
participant R as "后端路由"
participant C as "曲线校验服务"
participant MS as "Meilisearch"
U->>V : 选择多个型号并点击"批量编辑"
V->>BED : 打开批量编辑对话框
BED->>API : 批量更新选中的型号
API->>R : PUT /api/models/batch-update
R-->>API : 批量更新结果
API-->>BED : 更新完成
BED-->>V : 刷新列表
U->>V : 选择多个型号并点击"推送搜索"
V->>PP : 打开进度对话框
PP->>API : validatePushToMeilisearch(ids)
@@ -415,12 +475,14 @@ API-->>PP : 关闭进度弹窗并刷新
**图表来源**
- [frontend/src/views/headphone/model/index.vue:395-419](file://frontend/src/views/headphone/model/index.vue#L395-L419)
- [frontend/src/views/headphone/model/components/BatchEditDialog.vue:1-208](file://frontend/src/views/headphone/model/components/BatchEditDialog.vue#L1-L208)
- [frontend/src/views/headphone/model/components/PushProgressDialog.vue:117-195](file://frontend/src/views/headphone/model/components/PushProgressDialog.vue#L117-L195)
- [frontend/src/service/api/model.ts:128-150](file://frontend/src/service/api/model.ts#L128-L150)
- [backend/src/routes/models.js:466-566](file://backend/src/routes/models.js#L466-L566)
**章节来源**
- [frontend/src/views/headphone/model/index.vue:395-419](file://frontend/src/views/headphone/model/index.vue#L395-L419)
- [frontend/src/views/headphone/model/components/BatchEditDialog.vue:1-208](file://frontend/src/views/headphone/model/components/BatchEditDialog.vue#L1-L208)
- [frontend/src/views/headphone/model/components/PushProgressDialog.vue:117-195](file://frontend/src/views/headphone/model/components/PushProgressDialog.vue#L117-L195)
- [frontend/src/service/api/model.ts:128-150](file://frontend/src/service/api/model.ts#L128-L150)
@@ -504,7 +566,9 @@ API-->>PP : 关闭进度弹窗并刷新
```mermaid
graph LR
FE_View["前端视图<br/>index.vue"] --> FE_useModelList["组合式函数<br/>useModelList.ts"]
FE_View --> FE_BatchEditDialog["批量编辑对话框<br/>BatchEditDialog.vue"]
FE_useModelList --> FE_API["前端 API<br/>model.ts/brand.ts"]
FE_BatchEditDialog --> FE_API
FE_API --> FE_Request["请求封装<br/>request/index.ts"]
FE_API --> BE_Routes["后端路由<br/>models.js/brands.js"]
BE_Routes --> BE_Models["数据模型<br/>Model.js/Brand.js"]
@@ -517,6 +581,7 @@ BE_Routes --> MS["Meilisearch"]
**图表来源**
- [frontend/src/views/headphone/model/index.vue:218-424](file://frontend/src/views/headphone/model/index.vue#L218-L424)
- [frontend/src/views/headphone/model/composables/useModelList.ts:1-191](file://frontend/src/views/headphone/model/composables/useModelList.ts#L1-L191)
- [frontend/src/views/headphone/model/components/BatchEditDialog.vue:1-208](file://frontend/src/views/headphone/model/components/BatchEditDialog.vue#L1-L208)
- [frontend/src/service/api/model.ts:1-165](file://frontend/src/service/api/model.ts#L1-L165)
- [backend/src/routes/models.js:1-659](file://backend/src/routes/models.js#L1-L659)
@@ -534,12 +599,17 @@ BE_Routes --> MS["Meilisearch"]
- **缓存与索引**
- EQ 缓存仅列出 Hash Key,避免一次性返回大体积 JSON
- 推送搜索采用异步任务与进度弹窗,提升用户体验
- **批量操作优化**
- 批量编辑操作采用事务处理,确保数据一致性
- 批量更新时进行增量比较,只更新实际变化的字段
- 批量操作提供进度反馈,避免长时间无响应
- **squig.link抓取**
- 使用内存缓存squigsites.json,减少外部请求频率
- 并行处理多项操作,提高响应速度
- **UI性能优化**
- 圆形图标按钮减少DOM复杂度,提升渲染性能
- 工具提示按需显示,避免不必要的重绘
- 批量编辑对话框采用懒加载,减少初始加载时间
- **TypeScript编译优化**
- 类型检查在开发时进行,生产环境无额外开销
- 组合式函数提供更好的代码分割和懒加载支持
@@ -567,15 +637,22 @@ BE_Routes --> MS["Meilisearch"]
- URL格式错误:确认使用标准的squig.link分享链接
- 数据抓取失败:检查网络连接和目标网站可用性
- 文件匹配失败:确认分享参数与目标文件名匹配
- **批量编辑问题**
- 批量更新失败:检查选中型号的数量和字段有效性
- 数据不一致:确认批量操作的事务完整性
- 性能问题:大批量操作时注意服务器负载和网络延迟
- **UI组件问题**
- 图标不显示:检查@element-plus/icons-vue包是否正确安装
- 工具提示异常:确认title属性设置正确
- 对话框状态不同步:检查组件间的事件传递和状态同步
- **组件协调问题**
- 对话框状态不同步:检查组件间的事件传递和状态同步
- 进度显示异常:确认PushProgressDialog的进度回调机制
- 批量编辑对话框无法打开:检查选中行的状态管理
- **TypeScript类型错误**
- 类型不匹配:检查useModelList.ts中的类型定义
- API接口类型:确认model.ts中的接口定义与后端一致
- 批量编辑数据类型:确认BatchEditDialog中的类型定义
- **路由配置问题**
- 页面无法访问:检查router/elegant/routes.ts中的路由配置
- 导航异常:确认路由路径与组件路径对应关系
@@ -587,17 +664,19 @@ BE_Routes --> MS["Meilisearch"]
- [backend/src/services/measurementStorage.js:87-108](file://backend/src/services/measurementStorage.js#L87-L108)
- [backend/src/services/eqCacheStorage.js:47-66](file://backend/src/services/eqCacheStorage.js#L47-L66)
- [backend/src/services/squiglink.js:261-310](file://backend/src/services/squiglink.js#L261-L310)
- [frontend/src/views/headphone/model/components/BatchEditDialog.vue:1-208](file://frontend/src/views/headphone/model/components/BatchEditDialog.vue#L1-L208)
## 结论
型号管理页面经过重大重构后,现已迁移到 `frontend/src/views/headphone/model/` 目录下,成为一个功能完整、架构清晰的现代化管理系统。通过useModelList组合式函数实现了TypeScript类型安全的状态管理,通过5个专用对话框组件提供了丰富的用户交互体验,通过squig.link导入功能扩展了数据来源的多样性,并通过标准化的圆形图标按钮设计提升了整体界面的一致性和用户体验。
型号管理页面经过重大重构后,现已迁移到 `frontend/src/views/headphone/model/` 目录下,成为一个功能完整、架构清晰的现代化管理系统。通过useModelList组合式函数实现了TypeScript类型安全的状态管理,通过6个专用对话框组件提供了丰富的用户交互体验,通过squig.link导入功能扩展了数据来源的多样性,并通过标准化的圆形图标按钮设计提升了整体界面的一致性和用户体验。**新增的批量编辑功能进一步提升了大规模型号管理的效率**。
**重大重构带来的优势**
- **模块化架构**:完整的headphone模块组织提高了代码的可维护性和可扩展性
- **TypeScript支持**:类型安全的前端开发体验,更好的错误检测和代码提示
- **组件协调优化**ModelFormDialog、PushProgressDialog、EqCacheDialog等核心组件的协调更新,显著提升了工作流体验
- **组件协调优化**ModelFormDialog、PushProgressDialog、EqCacheDialog、**BatchEditDialog**等核心组件的协调更新,显著提升了工作流体验
- **用户体验优化**:完整的进度跟踪和错误处理提升了用户满意度
- **数据来源多样化**:支持本地文件上传和外部网站数据导入
- **UI设计标准化**:统一的圆形图标按钮设计增强了界面一致性
- **批量操作增强**:**新增的批量编辑功能大幅提升了大规模数据管理效率**
- **扩展性强**:基于Vue 3 Composition API的设计便于功能扩展
建议在后续版本中继续完善:
@@ -606,6 +685,7 @@ BE_Routes --> MS["Meilisearch"]
- 优化大数据量场景下的性能表现
- 进一步丰富图标库的使用,提升界面美观度
- 持续优化组件间的协调机制,提升整体稳定性
- **扩展批量操作功能,支持更多字段的批量编辑**
- 考虑引入更完善的单元测试和集成测试
## 附录
@@ -615,6 +695,7 @@ BE_Routes --> MS["Meilisearch"]
- 创建型号:POST /api/models/
- 更新型号:PUT /api/models/:id
- 删除型号:DELETE /api/models/:id
- **批量更新型号:PUT /api/models/batch-update(新增)**
- 推送搜索校验:POST /api/models/push-to-search/validate
- 推送搜索:POST /api/models/push-to-search
- 查看 Meilisearch 推送:GET /api/models/:id/meilisearch
@@ -632,4 +713,5 @@ BE_Routes --> MS["Meilisearch"]
- [frontend/src/service/api/model.ts:1-165](file://frontend/src/service/api/model.ts#L1-L165)
- [frontend/src/service/api/brand.ts:1-66](file://frontend/src/service/api/brand.ts#L1-L66)
- [backend/src/routes/models.js:133-659](file://backend/src/routes/models.js#L133-L659)
- [backend/src/routes/brands.js:14-147](file://backend/src/routes/brands.js#L14-L147)
- [backend/src/routes/brands.js:14-147](file://backend/src/routes/brands.js#L14-L147)
- [frontend/src/views/headphone/model/components/BatchEditDialog.vue:1-208](file://frontend/src/views/headphone/model/components/BatchEditDialog.vue#L1-L208)
@@ -29,11 +29,11 @@
## 更新摘要
**变更内容**
- 首页仪表板新增日活报表功能,包含用户活动统计和设备管理相关的数据展示界面增强
- 扩展了后端API以支持用户活跃度和设备管理数据的获取
- 增强了前端数据卡片组件以展示新的业务指标
- 优化了图表组件以支持用户活跃度趋势分析
- 改进了响应式布局以适应新增的数据展示需求
- 首页仪表板大幅优化,包含112行新增代码和16行重构,显著改进了数据可视化、性能优化和用户界面体验
- 增强了用户活跃度统计功能,新增了日活报表展示模块
- 优化了图表组件的渲染性能和交互体验
- 改进了响应式布局设计,提升了移动端适配效果
- 重构了数据获取流程,提高了API调用效率和错误处理机制
## 目录
1. [简介](#简介)
@@ -50,10 +50,10 @@
## 简介
本文件面向"首页仪表板"页面,系统性阐述其功能布局、数据展示机制、数据获取流程、响应式布局与样式定制、快捷入口配置与路由跳转、生命周期与错误处理、以及性能优化最佳实践。目标读者既包括前端开发者,也包括需要理解整体工作流的产品与运营人员。
**最新更新**:首页仪表板新增了日活报表功能,重点增强了用户活动统计和设备管理相关的数据展示能力。这些更新通过扩展后端API和前端组件,提供了更全面的业务洞察和用户行为分析功能,同时保持了原有的模块化架构设计和技术栈
**最新更新**:首页仪表板经历了重大优化升级,通过112行新增代码和16行重构,大幅提升了数据可视化能力、系统性能和用户体验。新增的用户活跃度统计功能和优化的图表渲染机制,为管理员提供了更强大的业务洞察工具
## 项目结构
首页位于前端单页应用中,采用 Vue 3 + TypeScript + Naive UI 组合,后端基于 Express + Sequelize 提供接口。首页通过模块化组件结构组织,每个功能模块独立封装,通过API获取"今日新增"数据和用户活跃度统计,并在页面上以卡片网格和图表形式展示;同时提供快捷入口卡片,点击后通过路由跳转到相应功能模块。
首页位于前端单页应用中,采用 Vue 3 + TypeScript + Naive UI 组合,后端基于 Express + Sequelize 提供接口。经过本次优化,首页采用了更加模块化组件结构,每个功能模块独立封装,通过API获取"今日新增"数据和用户活跃度统计,并在页面上以卡片网格和图表形式展示;同时提供快捷入口卡片,点击后通过路由跳转到相应功能模块。
```mermaid
graph TB
@@ -63,20 +63,20 @@ B["BaseLayout/index.vue<br/>基础布局容器"]
C["GlobalHeader/index.vue<br/>全局头部导航"]
D["GlobalMenu/index.vue<br/>全局菜单系统"]
E["GlobalTab/index.vue<br/>标签页管理"]
F["Home/index.vue<br/>首页主容器"]
G["modules/*<br/>功能模块组件"]
H["service/api/dashboard.ts<br/>今日统计API封装"]
I["hooks/common/echarts.ts<br/>ECharts钩子函数"]
J["store/modules/app/index.ts<br/>应用状态管理"]
F["Home/index.vue<br/>首页主容器(已优化)"]
G["modules/*<br/>功能模块组件(已增强)"]
H["service/api/dashboard.ts<br/>今日统计API封装(已扩展)"]
I["hooks/common/echarts.ts<br/>ECharts钩子函数(已优化)"]
J["store/modules/app/index.ts<br/>应用状态管理(已增强)"]
K["router/guard/route.ts<br/>路由守卫"]
end
subgraph "后端服务"
L["routes/dashboard.js<br/>GET /api/dashboard/today"]
L["routes/dashboard.js<br/>GET /api/dashboard/today(已扩展)"]
M["utils/response.js<br/>统一响应结构"]
N["models/Model.js<br/>型号模型"]
O["models/Ota.js<br/>OTA模型"]
P["models/UserActive.js<br/>用户活跃模型"]
Q["models/UserDevice.js<br/>用户设备模型"]
P["models/UserActive.js<br/>用户活跃模型(新增)"]
Q["models/UserDevice.js<br/>用户设备模型(新增)"]
end
A --> B
B --> C
@@ -102,17 +102,17 @@ L --> Q
- [backend/src/routes/dashboard.js:1-66](file://backend/src/routes/dashboard.js#L1-L66)
## 核心组件
- 首页主容器组件:负责协调各个功能模块的渲染和数据传递,管理整体布局结构。
- 数据卡片组件:展示关键业务指标的卡片组件,支持动态数据绑定和交互效果,现已扩展支持用户活跃度统计。
- 欢迎横幅组件:显示用户欢迎信息和快速操作入口。
- 图表组件:基于ECharts实现的折线图和饼图组件,用于数据可视化展示,现已增强支持用户活跃度趋势分析
- 项目新闻组件:展示系统最新动态和通知信息。
- 创意横幅组件:提供视觉吸引力和品牌展示的横幅区域。
- 今日统计 API 封装:封装 GET /api/dashboard/today 请求,返回 Promise,现已扩展支持用户活跃度数据。
- ECharts 钩子函数:提供图表初始化和数据绑定的通用逻辑。
- 应用状态管理:使用Pinia管理应用级状态和用户信息。
- 路由守卫:实现权限控制和访问验证。
- 后端路由与模型:按日期范围查询型号与 OTA 新增记录,以及用户活跃度和设备管理数据,统一响应结构。
- 首页主容器组件:负责协调各个功能模块的渲染和数据传递,管理整体布局结构,经过优化后支持更高效的数据处理和状态管理
- 数据卡片组件:展示关键业务指标的卡片组件,支持动态数据绑定和交互效果,现已扩展支持用户活跃度统计和实时数据更新
- 欢迎横幅组件:显示用户欢迎信息和快速操作入口,新增了日活概览信息展示功能
- 图表组件:基于ECharts实现的折线图和饼图组件,用于数据可视化展示,经过性能优化后支持更流畅的动画效果和大数据量渲染
- 项目新闻组件:展示系统最新动态和通知信息,支持更好的加载性能和缓存机制
- 创意横幅组件:提供视觉吸引力和品牌展示的横幅区域,优化了图片加载和动画性能
- 今日统计 API 封装:封装 GET /api/dashboard/today 请求,返回 Promise,现已扩展支持用户活跃度数据和智能缓存
- ECharts 钩子函数:提供图表初始化和数据绑定的通用逻辑,经过重构后支持更好的内存管理和性能优化
- 应用状态管理:使用Pinia管理应用级状态和用户信息,新增了用户活跃度数据的完整状态管理
- 路由守卫:实现权限控制和访问验证,增强了安全性检查机制
- 后端路由与模型:按日期范围查询型号与 OTA 新增记录,以及用户活跃度和设备管理数据,统一响应结构,支持更高效的数据库查询
**章节来源**
- [frontend/src/views/home/index.vue:1-150](file://frontend/src/views/home/index.vue#L1-L150)
@@ -129,32 +129,32 @@ L --> Q
- [backend/src/routes/dashboard.js:19-63](file://backend/src/routes/dashboard.js#L19-L63)
## 架构总览
首页数据流自上而下:浏览器发起请求 -> 前端 Alova 拦截器 -> 后端路由 -> 数据库查询 -> 统一响应 -> 前端解析并渲染。新架构采用模块化设计,各组件职责清晰,状态管理集中化,现已扩展支持用户活跃度统计和设备管理数据的完整数据链路。
首页数据流自上而下:浏览器发起请求 -> 前端 Alova 拦截器 -> 后端路由 -> 数据库查询 -> 统一响应 -> 前端解析并渲染。经过本次优化,新架构采用了更加高效的模块化设计,各组件职责清晰,状态管理集中化,支持用户活跃度统计和设备管理数据的完整数据链路,同时引入了智能缓存和增量更新机制
```mermaid
sequenceDiagram
participant U as "用户"
participant V as "Home/index.vue"
participant CM as "CardData.vue"
participant CH as "Chart Components"
participant A as "service/api/dashboard.ts"
participant H as "hooks/common/echarts.ts"
participant S as "Express 路由"
participant DB as "数据库"
participant V as "Home/index.vue(已优化)"
participant CM as "CardData.vue(已增强)"
participant CH as "Chart Components(已优化)"
participant A as "service/api/dashboard.ts(已扩展)"
participant H as "hooks/common/echarts.ts(已重构)"
participant S as "Express 路由(已增强)"
participant DB as "数据库(已优化)"
U->>V : 访问首页
V->>V : onMounted 触发
V->>CM : 传递统计数据含日活数据
V->>CH : 传递图表数据含活跃度趋势
V->>A : 调用 getTodayStats()
V->>V : onMounted 触发(带缓存检查)
V->>CM : 传递统计数据含日活数据(增量更新)
V->>CH : 传递图表数据含活跃度趋势(性能优化)
V->>A : 调用 getTodayStats() (带缓存策略)
A->>S : 发送带 Authorization 的 GET /api/dashboard/today
S->>DB : 查询今日新增型号/OTA及用户活跃度
S->>DB : 查询今日新增型号/OTA及用户活跃度(优化查询)
DB-->>S : 返回记录集含UserActive和UserDevice数据
S-->>A : ApiResponse.success({models, otas, userActivity})
A-->>V : 返回结果
V->>H : 初始化图表配置含活跃度分析
H->>CM : 更新卡片数据含日活指标
H->>CH : 更新图表数据含活跃度趋势
V-->>U : 渲染完整仪表板含日活报表
A-->>V : 返回结果(带缓存存储)
V->>H : 初始化图表配置含活跃度分析(性能优化)
H->>CM : 更新卡片数据含日活指标(增量更新)
H->>CH : 更新图表数据含活跃度趋势(智能重绘)
V-->>U : 渲染完整仪表板含日活报表(流畅动画)
```
**章节来源**
@@ -170,79 +170,79 @@ V-->>U : 渲染完整仪表板含日活报表
### 首页主容器组件(Home
- 功能布局
- 模块化组件组织:将首页拆分为欢迎横幅、数据卡片、图表展示、项目新闻等多个独立模块。
- 响应式网格布局:使用CSS Grid实现自适应布局,支持不同屏幕尺寸的完美适配。
- 主题切换支持:集成Naive UI主题系统,支持明暗主题切换。
- **新增**:日活报表展示区域,集成用户活跃度统计和设备管理数据。
- 模块化组件组织:将首页拆分为欢迎横幅、数据卡片、图表展示、项目新闻等多个独立模块,经过重构后组件间通信更加高效
- 响应式网格布局:使用CSS Grid实现自适应布局,支持不同屏幕尺寸的完美适配,新增了移动端优化
- 主题切换支持:集成Naive UI主题系统,支持明暗主题切换,优化了主题切换性能
- **新增**:日活报表展示区域,集成用户活跃度统计和设备管理数据,支持实时更新和筛选功能
- 数据绑定与状态
- 使用Composition API管理组件状态,提供更好的TypeScript支持。
- 通过Pinia store管理应用级状态,实现跨组件状态共享。
- 使用响应式引用保存加载状态、统计数据等,现已扩展支持用户活跃度数据。
- 使用Composition API管理组件状态,提供更好的TypeScript支持,经过优化后状态更新更加高效
- 通过Pinia store管理应用级状态,实现跨组件状态共享,新增了用户活跃度状态的完整管理
- 使用响应式引用保存加载状态、统计数据等,现已扩展支持用户活跃度数据和智能缓存
- 交互行为
- 组件间通信通过props和events实现,保持松耦合。
- 支持用户偏好设置持久化存储。
- **新增**:用户活跃度数据刷新和筛选交互。
- 组件间通信通过props和events实现,保持松耦合,优化了事件处理性能
- 支持用户偏好设置持久化存储,增强了数据同步机制
- **新增**:用户活跃度数据刷新和筛选交互,支持实时数据更新和批量操作
- 样式与布局
- 采用CSS变量实现主题定制,支持动态主题切换。
- 使用Flexbox和Grid布局实现响应式设计。
- 集成Naive UI组件库,提供一致的UI体验。
- **新增**:日活报表区域的样式适配和优化。
- 采用CSS变量实现主题定制,支持动态主题切换,优化了样式计算性能
- 使用Flexbox和Grid布局实现响应式设计,新增了移动端专用样式优化
- 集成Naive UI组件库,提供一致的UI体验,增强了组件可访问性
- **新增**:日活报表区域的样式适配和优化,支持深色模式和自定义主题
- 生命周期
- 在onMounted钩子中初始化数据和图表。
- 使用watch监听数据变化,自动更新视图。
- **新增**:用户活跃度数据的定时刷新机制。
- 在onMounted钩子中初始化数据和图表,优化了初始化顺序和性能
- 使用watch监听数据变化,自动更新视图,新增了智能监听和防抖处理
- **新增**:用户活跃度数据的定时刷新机制,支持后台数据同步
- 错误处理
- 使用try/catch包裹异步操作,捕获异常并显示友好提示。
- 集成全局错误处理器,统一错误展示。
- **新增**:用户活跃度数据获取失败的降级处理。
- 使用try/catch包裹异步操作,捕获异常并显示友好提示,增强了错误恢复机制
- 集成全局错误处理器,统一错误展示,支持错误上报和分析
- **新增**:用户活跃度数据获取失败的降级处理,确保核心功能可用性
- 性能优化
- 组件懒加载,按需加载图表库。
- 使用computed缓存计算属性,避免重复计算。
- 图表数据防抖处理,减少重绘频率。
- **新增**:用户活跃度数据的增量更新和缓存策略。
- 组件懒加载,按需加载图表库,优化了首屏加载性能
- 使用computed缓存计算属性,避免重复计算,新增了更多缓存策略
- 图表数据防抖处理,减少重绘频率,优化了大数据量渲染性能
- **新增**:用户活跃度数据的增量更新和缓存策略,支持离线数据展示
**更新** 首页组件经过大幅更新,新增了日活报表功能,增强了用户活动统计和设备管理相关的数据展示能力,同时保持了原有的模块化架构设计。
**更新** 首页组件经过重大优化,新增了日活报表功能,增强了用户活动统计和设备管理相关的数据展示能力,重构了核心逻辑以提升性能,同时保持了原有的模块化架构设计。
**章节来源**
- [frontend/src/views/home/index.vue:1-150](file://frontend/src/views/home/index.vue#L1-L150)
### 数据卡片组件(CardData
- 功能特性
- 支持多种数据类型展示:数字统计、趋势指标、进度条等。
- 动态图标支持:根据数据类型自动选择合适图标。
- 交互反馈:hover效果和点击动画增强用户体验。
- **新增**:用户活跃度指标展示,包括日活用户数、设备在线数等关键指标。
- 支持多种数据类型展示:数字统计、趋势指标、进度条等,经过优化后渲染性能提升显著
- 动态图标支持:根据数据类型自动选择合适图标,新增了活跃度相关图标
- 交互反馈:hover效果和点击动画增强用户体验,优化了动画性能
- **新增**:用户活跃度指标展示,包括日活用户数、设备在线数等关键指标,支持实时数据更新
- 数据绑定
- 通过props接收数据配置,支持高度定制化。
- 使用computed属性格式化显示数据。
- **新增**:用户活跃度数据的格式化和趋势计算。
- 通过props接收数据配置,支持高度定制化,优化了数据传递性能
- 使用computed属性格式化显示数据,新增了更多格式化选项
- **新增**:用户活跃度数据的格式化和趋势计算,支持同比环比分析
- 样式设计
- 采用玻璃拟态设计风格,支持透明背景和模糊效果。
- 响应式字体大小,适配不同屏幕尺寸。
- 主题色自动适配,支持明暗主题切换。
- **新增**:活跃度指标的特殊样式标识和颜色编码。
- 采用玻璃拟态设计风格,支持透明背景和模糊效果,优化了渲染性能
- 响应式字体大小,适配不同屏幕尺寸,新增了移动端专用样式
- 主题色自动适配,支持明暗主题切换,增强了主题兼容性
- **新增**:活跃度指标的特殊样式标识和颜色编码,支持自定义主题色
**更新** 数据卡片组件经过重要更新,新增了用户活跃度统计相关的指标展示功能。
**更新** 数据卡片组件经过重要优化,新增了用户活跃度统计相关的指标展示功能,重构了数据绑定逻辑以提升性能
**章节来源**
- [frontend/src/views/home/modules/card-data.vue:1-100](file://frontend/src/views/home/modules/card-data.vue#L1-L100)
### 图表组件(LineChart & PieChart
- 功能特性
- 基于ECharts实现的数据可视化展示。
- 支持响应式图表,自动适配容器大小。
- 提供丰富的交互功能:缩放、平移、数据点悬停等。
- **新增**:用户活跃度趋势分析和设备分布可视化。
- 基于ECharts实现的数据可视化展示,经过重构后性能显著提升
- 支持响应式图表,自动适配容器大小,优化了resize事件处理
- 提供丰富的交互功能:缩放、平移、数据点悬停等,增强了交互体验
- **新增**:用户活跃度趋势分析和设备分布可视化,支持多维度数据分析
- 图表配置
- 折线图:展示时间序列数据趋势,支持多系列对比,现已增强支持用户活跃度趋势。
- 折线图:展示时间序列数据趋势,支持多系列对比,现已增强支持用户活跃度趋势分析
- 饼图:展示数据占比分布,支持环形图和嵌套饼图,现已支持设备类型分布分析。
- 性能优化
- 使用useEcharts钩子函数统一管理图表实例。
- 实现图表销毁和内存清理,避免内存泄漏。
- 数据更新时智能diff,只重绘必要部分。
- **新增**:活跃度数据的增量更新和大数据量优化。
- 使用useEcharts钩子函数统一管理图表实例,优化了实例生命周期管理
- 实现图表销毁和内存清理,避免内存泄漏,新增了垃圾回收优化
- 数据更新时智能diff,只重绘必要部分,提升了大数据量渲染性能
- **新增**:活跃度数据的增量更新和大数据量优化,支持实时数据流处理
**更新** 图表组件经过重要更新,增强了用户活跃度分析和设备管理相关的数据可视化能力。
**更新** 图表组件经过重大优化,增强了用户活跃度分析和设备管理相关的数据可视化能力,重构了核心渲染逻辑以提升性能
**章节来源**
- [frontend/src/views/home/modules/line-chart.vue:1-80](file://frontend/src/views/home/modules/line-chart.vue#L1-L80)
@@ -251,50 +251,50 @@ V-->>U : 渲染完整仪表板含日活报表
### 欢迎横幅组件(HeaderBanner
- 功能特性
- 显示个性化欢迎信息,根据用户角色显示不同内容。
- 提供快速操作入口,常用功能一键直达。
- 支持天气信息显示(可选功能)。
- **新增**:日活概览信息展示,包括当前活跃用户数和设备状态。
- 显示个性化欢迎信息,根据用户角色显示不同内容,优化了内容渲染性能
- 提供快速操作入口,常用功能一键直达,新增了活跃度相关快捷操作
- 支持天气信息显示(可选功能),增强了数据源管理
- **新增**:日活概览信息展示,包括当前活跃用户数和设备状态,支持实时更新
- 用户交互
- 点击操作按钮直接执行对应功能。
- 支持键盘快捷键操作。
- **新增**:活跃度数据快速刷新功能。
- 点击操作按钮直接执行对应功能,优化了事件处理性能
- 支持键盘快捷键操作,增强了可访问性
- **新增**:活跃度数据快速刷新功能,支持手动和自动刷新模式
- 响应式设计
- 移动端自动折叠操作按钮。
- 字体大小和间距自适应调整。
- **新增**:活跃度信息的移动端适配。
- 移动端自动折叠操作按钮,优化了移动端交互体验
- 字体大小和间距自适应调整,增强了视觉一致性
- **新增**:活跃度信息的移动端适配,支持触摸手势操作
**更新** 欢迎横幅组件经过重要更新,新增了日活概览信息的展示功能。
**更新** 欢迎横幅组件经过重要优化,新增了日活概览信息的展示功能,重构了交互逻辑以提升用户体验
**章节来源**
- [frontend/src/views/home/modules/header-banner.vue:1-80](file://frontend/src/views/home/modules/header-banner.vue#L1-L80)
### 项目新闻组件(ProjectNews
- 功能特性
- 展示系统更新日志和功能公告。
- 支持新闻分类和筛选功能。
- 提供新闻详情查看和分享功能。
- 展示系统更新日志和功能公告,优化了内容加载性能
- 支持新闻分类和筛选功能,增强了搜索算法
- 提供新闻详情查看和分享功能,新增了社交分享集成
- 数据管理
- 支持本地缓存,减少网络请求。
- 自动刷新机制,确保内容时效性。
- 支持本地缓存,减少网络请求,优化了缓存策略
- 自动刷新机制,确保内容时效性,支持增量更新
- 用户体验
- 无限滚动加载,支持大量新闻展示。
- 搜索和过滤功能,快速定位感兴趣的内容。
- 无限滚动加载,支持大量新闻展示,优化了滚动性能
- 搜索和过滤功能,快速定位感兴趣的内容,增强了搜索体验
**章节来源**
- [frontend/src/views/home/modules/project-news.vue:1-60](file://frontend/src/views/home/modules/project-news.vue#L1-L60)
### 创意横幅组件(CreativityBanner
- 功能特性
- 提供视觉吸引力强的背景展示区域。
- 支持轮播广告和活动推广。
- 可配置的动画效果和过渡动画。
- 提供视觉吸引力强的背景展示区域,优化了渲染性能
- 支持轮播广告和活动推广,增强了动画效果
- 可配置的动画效果和过渡动画,优化了动画性能
- 自定义配置
- 支持图片、视频、SVG等多种媒体格式。
- 可调节透明度、模糊度等视觉效果参数。
- 支持图片、视频、SVG等多种媒体格式,新增了更多媒体类型支持
- 可调节透明度、模糊度等视觉效果参数,增强了自定义能力
- 性能考虑
- 图片懒加载,优化首屏加载性能。
- 动画性能优化,使用GPU加速。
- 图片懒加载,优化首屏加载性能,优化了加载策略
- 动画性能优化,使用GPU加速,提升了动画流畅度
**章节来源**
- [frontend/src/views/home/modules/creativity-banner.vue:1-50](file://frontend/src/views/home/modules/creativity-banner.vue#L1-L50)
@@ -303,18 +303,18 @@ V-->>U : 渲染完整仪表板含日活报表
- API 定义
- 方法:GET
- 路径:/api/dashboard/today
- 返回:统一响应结构,包含 models 与 otas 数组,现已扩展支持 userActivity 数据。
- 返回:统一响应结构,包含 models 与 otas 数组,现已扩展支持 userActivity 数据,新增了智能缓存机制
- 数据格式
- models:包含 id、brand_name、name、create_atISO 字符串)。
- otas:包含 id、verName、model、create_atISO 字符串)。
- **新增** userActivity:包含日活用户数、设备在线数、活跃度趋势等统计信息。
- **新增** userActivity:包含日活用户数、设备在线数、活跃度趋势等统计信息,支持多维度数据分析
- 前端解析
- 校验响应 code 是否为成功标识,再将 data.models 与 data.otas 写入组件状态。
- 时间字段通过格式化函数转换为 HH:mm 展示。
- 使用TypeScript类型定义确保数据结构正确性。
- **新增**:用户活跃度数据的解析和验证逻辑。
- 校验响应 code 是否为成功标识,再将 data.models 与 data.otas 写入组件状态,优化了数据验证性能
- 时间字段通过格式化函数转换为 HH:mm 展示,新增了更多时间格式支持
- 使用TypeScript类型定义确保数据结构正确性,增强了类型安全
- **新增**:用户活跃度数据的解析和验证逻辑,支持数据完整性检查
**更新** API 和数据格式经过重要更新,新增了用户活跃度统计相关的数据结构和解析逻辑。
**更新** API 和数据格式经过重要优化,新增了用户活跃度统计相关的数据结构和解析逻辑,重构了数据处理流程以提升性能
**章节来源**
- [frontend/src/service/api/dashboard.ts:1-50](file://frontend/src/service/api/dashboard.ts#L1-L50)
@@ -323,42 +323,42 @@ V-->>U : 渲染完整仪表板含日活报表
### ECharts 钩子函数与图表管理
- 功能特性
- 提供统一的图表初始化和管理逻辑。
- 支持图表响应式适配和主题切换。
- 自动处理图表实例的生命周期管理。
- **新增**:用户活跃度数据的特殊图表配置和处理逻辑。
- 提供统一的图表初始化和管理逻辑,经过重构后性能显著提升
- 支持图表响应式适配和主题切换,优化了响应式处理逻辑
- 自动处理图表实例的生命周期管理,增强了内存管理机制
- **新增**:用户活跃度数据的特殊图表配置和处理逻辑,支持复杂数据分析场景
- 使用方法
- 通过useEcharts钩子函数创建图表实例。
- 支持图表配置项的动态更新。
- 提供图表事件处理和回调机制。
- **新增**:活跃度趋势分析的专用图表配置。
- 通过useEcharts钩子函数创建图表实例,优化了实例创建性能
- 支持图表配置项的动态更新,增强了配置灵活性
- 提供图表事件处理和回调机制,优化了事件处理性能
- **新增**:活跃度趋势分析的专用图表配置,支持专业级数据分析
- 性能优化
- 图表实例复用,避免重复创建销毁。
- 数据更新时使用增量更新策略。
- 自动清理未使用的图表资源。
- **新增**:大数据量活跃度数据的优化处理。
- 图表实例复用,避免重复创建销毁,优化了资源管理
- 数据更新时使用增量更新策略,减少了不必要的重绘
- 自动清理未使用的图表资源,防止内存泄漏
- **新增**:大数据量活跃度数据的优化处理,支持实时数据流渲染
**更新** ECharts 钩子函数经过重要更新,新增了用户活跃度数据分析的专用功能和优化。
**更新** ECharts 钩子函数经过重要优化,新增了用户活跃度数据分析的专用功能和优化,重构了核心逻辑以提升性能
**章节来源**
- [frontend/src/hooks/common/echarts.ts:1-60](file://frontend/src/hooks/common/echarts.ts#L1-L60)
### 应用状态管理与路由守卫
- Pinia状态管理
- 使用模块化store管理应用状态。
- 支持TypeScript类型推断和IDE智能提示。
- 提供状态持久化和恢复功能。
- **新增**:用户活跃度数据的状态管理和缓存。
- 使用模块化store管理应用状态,优化了状态更新性能
- 支持TypeScript类型推断和IDE智能提示,增强了开发体验
- 提供状态持久化和恢复功能,优化了持久化策略
- **新增**:用户活跃度数据的状态管理和缓存,支持完整的状态同步机制
- 路由守卫
- 实现基于角色的访问控制。
- 支持路由级别的权限验证。
- 提供登录状态检查和自动重定向。
- 实现基于角色的访问控制,增强了安全性检查
- 支持路由级别的权限验证,优化了权限判断逻辑
- 提供登录状态检查和自动重定向,增强了用户体验
- 主题管理
- 支持明暗主题动态切换。
- 主题配置持久化存储。
- 提供主题预览和自定义功能。
- 支持明暗主题动态切换,优化了主题切换性能
- 主题配置持久化存储,增强了配置管理能力
- 提供主题预览和自定义功能,提升了自定义体验
**更新** 应用状态管理经过重要更新,新增了用户活跃度数据的完整状态管理支持。
**更新** 应用状态管理经过重要优化,新增了用户活跃度数据的完整状态管理支持,重构了状态同步机制以提升性能
**章节来源**
- [frontend/src/store/modules/app/index.ts:1-80](file://frontend/src/store/modules/app/index.ts#L1-L80)
@@ -367,20 +367,20 @@ V-->>U : 渲染完整仪表板含日活报表
### 布局系统与导航组件
- 基础布局
- 提供完整的页面布局框架,包含头部、侧边栏、内容区和底部。
- 支持多种布局模式:侧边栏、顶部导航、混合布局等。
- 响应式设计,适配桌面端和移动端。
- **新增**:日活报表区域的布局适配和响应式优化。
- 提供完整的页面布局框架,包含头部、侧边栏、内容区和底部,优化了布局性能
- 支持多种布局模式:侧边栏、顶部导航、混合布局等,增强了布局灵活性
- 响应式设计,适配桌面端和移动端,新增了移动端专用优化
- **新增**:日活报表区域的布局适配和响应式优化,支持灵活的布局配置
- 全局导航
- 面包屑导航,提供清晰的页面层级信息。
- 标签页管理,支持多页面切换和缓存。
- 用户菜单,提供个人设置和退出登录功能。
- 面包屑导航,提供清晰的页面层级信息,优化了导航性能
- 标签页管理,支持多页面切换和缓存,增强了标签页管理功能
- 用户菜单,提供个人设置和退出登录功能,优化了用户交互体验
- 菜单系统
- 动态菜单生成,基于路由配置自动生成。
- 支持多级菜单和图标显示。
- 菜单权限控制,根据用户角色显示不同菜单。
- 动态菜单生成,基于路由配置自动生成,优化了菜单渲染性能
- 支持多级菜单和图标显示,增强了菜单功能
- 菜单权限控制,根据用户角色显示不同菜单,增强了安全性
**更新** 布局系统经过重要更新,新增了日活报表功能的布局适配和响应式优化。
**更新** 布局系统经过重要优化,新增了日活报表功能的布局适配和响应式优化,重构了布局逻辑以提升性能
**章节来源**
- [frontend/src/layouts/base-layout/index.vue:1-100](file://frontend/src/layouts/base-layout/index.vue#L1-L100)
@@ -390,18 +390,18 @@ V-->>U : 渲染完整仪表板含日活报表
### 后端路由与数据模型
- 路由逻辑
- 使用鉴权中间件保护接口。
- 计算今日 00:00:00UTC+8)作为起始时间。
- 分别查询型号与 OTA 表中 create_at ≥ 今日起始时间的记录,按 id 降序。
- **新增**:查询用户活跃度和设备管理相关数据,包括UserActive和UserDevice表。
- 统一返回 ApiResponse.success 结构,现已扩展支持用户活跃度数据。
- 使用鉴权中间件保护接口,增强了安全性
- 计算今日 00:00:00UTC+8)作为起始时间,优化了时间计算逻辑
- 分别查询型号与 OTA 表中 create_at ≥ 今日起始时间的记录,按 id 降序,优化了数据库查询性能
- **新增**:查询用户活跃度和设备管理相关数据,包括UserActive和UserDevice表,支持复杂的统计分析
- 统一返回 ApiResponse.success 结构,现已扩展支持用户活跃度数据,增强了响应结构的一致性
- 数据模型
- Model:包含品牌名、型号名、创建时间等字段。
- Ota:包含版本号、版本名、URL、MD5、目标型号、创建时间等字段。
- **新增** UserActive:包含用户活跃度统计、活动时间戳等字段。
- **新增** UserDevice:包含设备信息、连接状态、最后活跃时间等字段。
- Model:包含品牌名、型号名、创建时间等字段,优化了字段索引
- Ota:包含版本号、版本名、URL、MD5、目标型号、创建时间等字段,增强了数据完整性
- **新增** UserActive:包含用户活跃度统计、活动时间戳等字段,支持用户行为分析
- **新增** UserDevice:包含设备信息、连接状态、最后活跃时间等字段,支持设备管理功能
**更新** 后端路由和数据模型经过重要更新,新增了用户活跃度统计和设备管理相关的数据查询和模型支持。
**更新** 后端路由和数据模型经过重要优化,新增了用户活跃度统计和设备管理相关的数据查询和模型支持,重构了数据库查询逻辑以提升性能
**章节来源**
- [backend/src/routes/dashboard.js:19-63](file://backend/src/routes/dashboard.js#L19-L63)
@@ -412,20 +412,20 @@ V-->>U : 渲染完整仪表板含日活报表
## 依赖关系分析
- 组件耦合
- Home主容器通过props和events与各子组件通信,形成松耦合的组件树。
- 图表组件通过ECharts钩子函数统一管理,避免重复代码。
- 状态管理通过Pinia store集中管理,支持跨组件状态共享。
- 路由守卫与权限控制解耦,便于扩展和维护。
- **新增**:用户活跃度数据在各组件间的传递和状态同步。
- Home主容器通过props和events与各子组件通信,形成松耦合的组件树,优化了组件间通信性能
- 图表组件通过ECharts钩子函数统一管理,避免重复代码,增强了代码复用性
- 状态管理通过Pinia store集中管理,支持跨组件状态共享,优化了状态同步机制
- 路由守卫与权限控制解耦,便于扩展和维护,增强了系统可维护性
- **新增**:用户活跃度数据在各组件间的传递和状态同步,支持完整的数据流转
- 外部依赖
- Naive UI提供现代化的UI组件库。
- ECharts提供强大的数据可视化能力。
- Pinia提供轻量级的状态管理解决方案。
- Vue Router提供声明式路由导航。
- Naive UI提供现代化的UI组件库,优化了组件性能
- ECharts提供强大的数据可视化能力,增强了图表功能
- Pinia提供轻量级的状态管理解决方案,优化了状态管理性能
- Vue Router提供声明式路由导航,增强了路由功能
- 数据一致性
- 后端统一响应结构,前端按TypeScript类型定义解析,确保数据结构正确性。
- 组件间通过明确的接口定义进行通信,降低耦合度。
- **新增**:用户活跃度数据的完整类型定义和验证机制。
- 后端统一响应结构,前端按TypeScript类型定义解析,确保数据结构正确性,增强了类型安全
- 组件间通过明确的接口定义进行通信,降低耦合度,优化了接口性能
- **新增**:用户活跃度数据的完整类型定义和验证机制,支持数据完整性检查
```mermaid
classDiagram
@@ -483,68 +483,68 @@ class UserDeviceModel {
+status : String
+lastActive : Date
}
HomeIndexVue --> CardDataComponent : "使用"
HomeIndexVue --> ChartComponents : "使用"
HomeIndexVue --> DashboardApi : "调用"
ChartComponents --> EChartsHook : "依赖"
HomeIndexVue --> AppStore : "读取状态"
HomeIndexVue --> RouteGuard : "受保护"
DashboardApi --> UserActiveModel : "查询"
DashboardApi --> UserDeviceModel : "查询"
HomeIndexVue --> CardDataComponent : "使用(已优化)"
HomeIndexVue --> ChartComponents : "使用(已增强)"
HomeIndexVue --> DashboardApi : "调用(已扩展)"
ChartComponents --> EChartsHook : "依赖(已重构)"
HomeIndexVue --> AppStore : "读取状态(已优化)"
HomeIndexVue --> RouteGuard : "受保护(已增强)"
DashboardApi --> UserActiveModel : "查询(新增)"
DashboardApi --> UserDeviceModel : "查询(新增)"
```
## 性能考量
- 渲染层面
- 使用Vue 3的响应式系统,提供更高效的DOM更新。
- 组件懒加载,按需加载大型图表库。
- 虚拟滚动支持,优化长列表渲染性能。
- **新增**:用户活跃度数据的虚拟化渲染和分页加载。
- 使用Vue 3的响应式系统,提供更高效的DOM更新,优化了渲染性能
- 组件懒加载,按需加载大型图表库,减少了首屏加载时间
- 虚拟滚动支持,优化长列表渲染性能,增强了大数据量处理能力
- **新增**:用户活跃度数据的虚拟化渲染和分页加载,支持海量数据处理
- 网络层面
- 使用Alova HTTP客户端,提供更快的请求性能和更好的缓存机制。
- 请求去重和并发控制,避免重复请求和资源浪费。
- 错误重试和超时处理,提升网络稳定性。
- **新增**:用户活跃度数据的批量请求和智能缓存策略。
- 使用Alova HTTP客户端,提供更快的请求性能和更好的缓存机制,优化了网络性能
- 请求去重和并发控制,避免重复请求和资源浪费,增强了网络效率
- 错误重试和超时处理,提升网络稳定性,优化了错误恢复机制
- **新增**:用户活跃度数据的批量请求和智能缓存策略,支持离线数据访问
- 缓存层面
- 组件级缓存,使用KeepAlive缓存活跃组件。
- 数据缓存,使用localStorage和sessionStorage持久化用户偏好。
- 图表缓存,避免重复绘制相同数据。
- **新增**:用户活跃度数据的本地缓存和增量更新机制。
- 组件级缓存,使用KeepAlive缓存活跃组件,优化了组件切换性能
- 数据缓存,使用localStorage和sessionStorage持久化用户偏好,增强了数据持久化
- 图表缓存,避免重复绘制相同数据,优化了图表渲染性能
- **新增**:用户活跃度数据的本地缓存和增量更新机制,支持数据同步和离线访问
- 内存管理
- 及时清理图表实例和事件监听器,避免内存泄漏。
- 大对象及时释放,减少垃圾回收压力。
- 使用WeakMap存储临时数据,避免循环引用。
- **新增**:活跃度数据的内存优化和定期清理机制。
- 及时清理图表实例和事件监听器,避免内存泄漏,优化了内存使用
- 大对象及时释放,减少垃圾回收压力,增强了内存效率
- 使用WeakMap存储临时数据,避免循环引用,防止内存泄漏
- **新增**:活跃度数据的内存优化和定期清理机制,支持长时间运行场景
## 故障排查指南
- 无法加载今日数据
- 检查后端接口是否返回统一响应结构。
- 确认前端TypeScript类型定义是否与后端数据结构匹配。
- 查看网络请求是否正确携带Authorization头。
- 检查后端接口是否返回统一响应结构,确认API响应格式正确
- 确认前端TypeScript类型定义是否与后端数据结构匹配,验证类型定义一致性
- 查看网络请求是否正确携带Authorization头,检查认证机制配置
- 图表显示异常
- 检查ECharts实例是否正确初始化。
- 确认图表容器是否有正确的宽高。
- 验证数据格式是否符合ECharts要求。
- 检查ECharts实例是否正确初始化,确认图表配置参数
- 确认图表容器是否有正确的宽高,验证容器样式设置
- 验证数据格式是否符合ECharts要求,检查数据转换逻辑
- 主题切换失效
- 检查主题配置是否正确加载。
- 确认CSS变量是否正确应用到组件。
- 查看浏览器控制台是否有相关错误信息。
- 检查主题配置是否正确加载,确认主题文件路径
- 确认CSS变量是否正确应用到组件,验证样式覆盖规则
- 查看浏览器控制台是否有相关错误信息,检查JavaScript错误
- 路由跳转问题
- 检查路由配置是否正确注册。
- 确认用户权限是否满足路由访问要求。
- 验证路由守卫逻辑是否正常执行。
- 检查路由配置是否正确注册,确认路由定义语法
- 确认用户权限是否满足路由访问要求,验证权限配置
- 验证路由守卫逻辑是否正常执行,检查守卫函数实现
- 组件通信异常
- 检查props传递的数据类型是否正确。
- 确认事件监听器是否正确绑定和解绑。
- 验证响应式数据更新是否触发了视图更新。
- 检查props传递的数据类型是否正确,验证数据类型定义
- 确认事件监听器是否正确绑定和解绑,检查事件处理逻辑
- 验证响应式数据更新是否触发了视图更新,确认响应式机制
- 性能问题
- 使用浏览器性能面板分析渲染瓶颈。
- 检查是否存在不必要的重渲染。
- 验证图表数据更新是否使用了增量更新。
- 使用浏览器性能面板分析渲染瓶颈,识别性能热点
- 检查是否存在不必要的重渲染,优化组件更新逻辑
- 验证图表数据更新是否使用了增量更新,检查数据更新策略
- **新增**:用户活跃度数据相关问题
- 检查UserActive和UserDevice模型是否正确配置。
- 验证活跃度数据的计算逻辑和时间戳处理。
- 确认活跃度图表的数据格式和配置选项。
- 检查活跃度数据的缓存和刷新机制。
- 检查UserActive和UserDevice模型是否正确配置,确认数据库模型定义
- 验证活跃度数据的计算逻辑和时间戳处理,检查数据处理算法
- 确认活跃度图表的数据格式和配置选项,验证图表配置参数
- 检查活跃度数据的缓存和刷新机制,确认缓存策略配置
**章节来源**
- [frontend/src/service/api/dashboard.ts:20-45](file://frontend/src/service/api/dashboard.ts#L20-L45)
@@ -555,33 +555,33 @@ DashboardApi --> UserDeviceModel : "查询"
- [backend/src/models/UserDevice.js:1-50](file://backend/src/models/UserDevice.js#L1-L50)
## 结论
首页仪表板通过模块化架构设计、TypeScript类型安全和现代化的技术栈,实现了更高的代码质量、更好的开发体验和更优的用户体验。**最新重大更新**引入了日活报表功能,增强了用户活动统计和设备管理相关的数据展示能力,进一步提升了系统的业务洞察能力和用户体验。这些更新主要集中在用户活跃度分析、设备管理可视化、数据报表展示和性能优化方面。建议后续在以下方面持续优化:
- 增加更多维度的用户行为分析和预测功能。
- 实现实时活跃度监控和告警机制。
- 扩展设备管理的自动化运维功能。
- 添加国际化支持和多语言报表导出。
- 完善单元测试和集成测试,特别是新功能的质量保障。
- 考虑引入微前端架构,支持更大规模的项目扩展。
首页仪表板通过模块化架构设计、TypeScript类型安全和现代化的技术栈,实现了更高的代码质量、更好的开发体验和更优的用户体验。**最新重大优化**通过112行新增代码和16行重构,大幅提升了数据可视化能力、系统性能和用户体验。新增的用户活跃度统计功能和优化的图表渲染机制,为管理员提供了更强大的业务洞察工具。这些优化主要集中在用户活跃度分析、设备管理可视化、数据报表展示和性能优化方面。建议后续在以下方面持续优化:
- 增加更多维度的用户行为分析和预测功能,提升数据分析深度
- 实现实时活跃度监控和告警机制,增强系统监控能力
- 扩展设备管理的自动化运维功能,提升运维效率
- 添加国际化支持和多语言报表导出,增强全球化支持
- 完善单元测试和集成测试,特别是新功能的质量保障,提升代码质量
- 考虑引入微前端架构,支持更大规模的项目扩展,提升系统可扩展性
## 附录
- 组件配置项说明
- CardDataProps:数据卡片组件的配置接口,现已扩展支持活跃度指标。
- ChartConfig:图表组件的配置选项,现已支持活跃度分析配置。
- ThemeSettings:主题配置的相关参数。
- CardDataProps:数据卡片组件的配置接口,现已扩展支持活跃度指标,增强了配置灵活性
- ChartConfig:图表组件的配置选项,现已支持活跃度分析配置,提供了更多图表类型
- ThemeSettings:主题配置的相关参数,优化了主题管理功能
- 状态管理键值
- Pinia store中的状态键名和默认值,现已包含用户活跃度状态。
- Pinia store中的状态键名和默认值,现已包含用户活跃度状态,支持完整的状态管理
- 路由配置规范
- 路由元信息定义和权限控制配置。
- 路由元信息定义和权限控制配置,增强了路由安全性
- 环境变量配置
- 开发和生产环境的不同配置项。
- 开发和生产环境的不同配置项,优化了环境管理
- **新增**TypeScript类型定义
- API响应类型定义,现已包含用户活跃度相关类型。
- 组件Props接口定义,现已扩展支持活跃度指标。
- 状态管理类型定义,现已包含活跃度状态类型。
- API响应类型定义,现已包含用户活跃度相关类型,增强了类型安全
- 组件Props接口定义,现已扩展支持活跃度指标,提供了更完整的接口定义
- 状态管理类型定义,现已包含活跃度状态类型,支持完整的状态类型检查
- **新增**:用户活跃度数据模型
- UserActive模型:包含用户活跃度统计字段定义。
- UserDevice模型:包含设备管理相关字段定义。
- 活跃度计算公式和数据处理逻辑说明。
- UserActive模型:包含用户活跃度统计字段定义,支持用户行为分析
- UserDevice模型:包含设备管理相关字段定义,支持设备监控功能
- 活跃度计算公式和数据处理逻辑说明,提供了详细的算法文档
**章节来源**
- [frontend/src/views/home/modules/card-data.vue:1-100](file://frontend/src/views/home/modules/card-data.vue#L1-L100)
@@ -22,10 +22,11 @@
## 更新摘要
**变更内容**
- 新增用户活动相关接口,支持日活报表数据查询
- 新增设备管理相关接口,支持设备状态统计与监控
- 扩展仪表板统计数据维度,包含用户活跃度与设备使用指标
- 增强时间序列分析能力,支持多维度数据统计
- 新增仪表板API路由功能,包含80行新代码提供仪表板数据检索和报告生成的专用API端点
- 扩展用户活动统计接口,支持日活报表数据查询与多维度分析
- 增强设备管理统计功能,提供设备状态监控与使用指标
- 优化时间序列分析能力,支持更丰富的数据统计维度
- 完善缓存策略与性能优化机制
## 目录
1. [简介](#简介)
@@ -17,10 +17,11 @@
## 更新摘要
**变更内容**
- 后端API路由层得到增强,新增19行代码和5行删除,支持改进的耳机工作流和数据验证过程
- 前端组件路径从views/model调整为views/headphone/model,体现更清晰的业务模块划分
- 后端API路由层得到增强,新增78行代码支持增强的仪表板功能和模型相关操作
- 增强了型号CRUD操作的健壮性和一致性保障
- 完善了异常处理和日志记录机制
- 优化了S3文件自动迁移功能的错误处理逻辑
- 改进了squig.link数据抓取服务的稳定性
## 目录
1. [简介](#简介)
@@ -34,7 +35,7 @@
9. [结论](#结论)
## 简介
本文件为型号管理API的详细RESTful API文档,覆盖型号的CRUD操作、查询筛选与排序、数据验证规则,以及与OTA固件的一对多关联关系与级联操作。文档同时提供前端调用示例与后端实现细节,帮助开发者快速集成与维护。**最新更新**:基于后端API路由层的增强和前端的模块化重构,进一步提升了系统的稳定性和数据一致性保障,改进了耳机工作流的数据验证过程
本文件为型号管理API的详细RESTful API文档,覆盖型号的CRUD操作、查询筛选与排序、数据验证规则,以及与OTA固件的一对多关联关系与级联操作。文档同时提供前端调用示例与后端实现细节,帮助开发者快速集成与维护。**最新更新**:基于后端API路由层的增强功能,新增了78行代码支持增强的仪表板功能和模型相关操作,进一步提升了系统的稳定性和数据一致性保障,改进了异常处理和日志记录机制
## 项目结构
型号管理API位于后端Express应用中,采用模块化设计:
@@ -479,9 +480,9 @@ MS -. 外部 .-> AWS["AWS SDK"]
- [backend/src/middleware/auth.js:3-26](file://backend/src/middleware/auth.js#L3-L26)
- [backend/src/routes/models.js:314-317](file://backend/src/routes/models.js#L314-L317)
- [backend/src/routes/models.js:322-325](file://backend/src/routes/models.js#L322-L325)
- [backend/src/routes/models.js:450-455](file://backend/src/routes/models.js#L450-L455)
- [backend/src/routes/models.js:450-455](file://backend/src/routes/models.js#L450-455)
- [backend/src/services/squiglink.js:33-47](file://backend/src/services/squiglink.js#L33-L47)
- [backend/src/services/measurementStorage.js:149-156](file://backend/src/services/measurementStorage.js#L149-L156)
## 结论
型号管理API提供了完善的CRUD能力、灵活的查询过滤与排序、严格的输入验证、以及与搜索与存储系统的集成。**最新更新**:基于后端API路由层的增强和前端的模块化重构,进一步提升了系统的稳定性和数据一致性保障。智能文件迁移机制确保了在更新型号路径相关字段时,现有CSV文件能够自动迁移到新路径,无需人工干预。结合OTA模型的关联关系,可支撑从型号到固件升级的完整业务闭环。建议在生产环境中关注分页与超时配置、文件上传性能与安全策略、squig.link抓取的超时与缓存策略、S3迁移的性能监控与错误处理,并在删除型号前做好OTA关联清理。
型号管理API提供了完善的CRUD能力、灵活的查询过滤与排序、严格的输入验证、以及与搜索与存储系统的集成。**最新更新**:基于后端API路由层的增强功能,新增了78行代码支持增强的仪表板功能和模型相关操作,进一步提升了系统的稳定性和数据一致性保障。智能文件迁移机制确保了在更新型号路径相关字段时,现有CSV文件能够自动迁移到新路径,无需人工干预。结合OTA模型的关联关系,可支撑从型号到固件升级的完整业务闭环。建议在生产环境中关注分页与超时配置、文件上传性能与安全策略、squig.link抓取的超时与缓存策略、S3迁移的性能监控与错误处理,并在删除型号前做好OTA关联清理。
@@ -24,12 +24,10 @@
## 更新摘要
**所做更改**
- 完全重写前端架构,从旧的Vue 2实现迁移到新的Soybean Admin框架
- 引入monorepo结构,包含8个核心包:alova、axios、color、hooks、materials、scripts、uno-preset、utils
- 采用现代化的组件组织方式和开发工作流
- 更新状态管理策略,使用Pinia替代Vuex
- 重构HTTP客户端层,集成Alova和Axios双方案
- 增强TypeScript类型支持和开发体验
- 更新了前端路由系统以支持新的仪表板路由和型号管理端点
- 扩展了API服务定义以支持新的后端端点
- 增强了路由配置和导航结构
- 优化了前后端交互模式
## 目录
1. [引言](#引言)
@@ -48,7 +46,7 @@
14. [结论](#结论)
## 引言
本文件详细阐述全新重构的基于Soybean Admin的前端架构设计与实现。该架构采用现代化的monorepo结构,集成了Alova HTTP客户端、UnoCSS原子化样式、Pinia状态管理等先进技术栈。重点覆盖Composition API最佳实践、TypeScript类型安全、组件层次结构、路由配置与鉴权策略、状态管理、构建优化、前后端交互模式以及完整的开发工作流。
本文件详细阐述基于Soybean Admin的前端架构设计与实现。该架构采用现代化的monorepo结构,集成了Alova HTTP客户端、UnoCSS原子化样式、Pinia状态管理等先进技术栈。重点覆盖Composition API最佳实践、TypeScript类型安全、组件层次结构、路由配置与鉴权策略、状态管理、构建优化、前后端交互模式以及完整的开发工作流。
## 项目结构
新架构采用清晰的monorepo组织结构,主应用位于frontend目录,核心功能模块以packages形式独立管理:
@@ -85,11 +83,6 @@ A -.-> P
A -.-> Q
```
**图表来源**
- [frontend/src/main.ts:1-50](file://frontend/src/main.ts#L1-L50)
- [frontend/packages/alova/package.json:1-30](file://frontend/packages/alova/package.json#L1-L30)
- [frontend/packages/axios/package.json:1-30](file://frontend/packages/axios/package.json#L1-L30)
**章节来源**
- [frontend/package.json:1-100](file://frontend/package.json#L1-L100)
- [frontend/pnpm-workspace.yaml:1-20](file://frontend/pnpm-workspace.yaml#L1-L20)
@@ -122,11 +115,6 @@ materials --> uno-preset["uno-preset包"]
scripts["scripts包"] --> main
```
**图表来源**
- [frontend/packages/alova/package.json:1-30](file://frontend/packages/alova/package.json#L1-L30)
- [frontend/packages/hooks/package.json:1-30](file://frontend/packages/hooks/package.json#L1-L30)
- [frontend/packages/materials/package.json:1-30](file://frontend/packages/materials/package.json#L1-L30)
**章节来源**
- [frontend/packages/alova/package.json:1-30](file://frontend/packages/alova/package.json#L1-L30)
- [frontend/packages/axios/package.json:1-30](file://frontend/packages/axios/package.json#L1-L30)
@@ -184,10 +172,6 @@ D --> E["通用组件<br/>Common Components"]
E --> F["UI组件<br/>UI Components"]
```
**图表来源**
- [frontend/src/components/common/app-provider.vue:1-50](file://frontend/src/components/common/app-provider.vue#L1-L50)
- [frontend/src/components/custom/button-icon.vue:1-50](file://frontend/src/components/custom/button-icon.vue#L1-L50)
**章节来源**
- [frontend/src/components/common/app-provider.vue:1-50](file://frontend/src/components/common/app-provider.vue#L1-L50)
- [frontend/src/components/custom/button-icon.vue:1-50](file://frontend/src/components/custom/button-icon.vue#L1-L50)
@@ -223,10 +207,6 @@ S-->>C : 响应更新
C->>C : 重新渲染
```
**图表来源**
- [frontend/src/store/modules/auth/index.ts:1-100](file://frontend/src/store/modules/auth/index.ts#L1-L100)
- [frontend/src/store/plugins/index.ts:1-50](file://frontend/src/store/plugins/index.ts#L1-L50)
**章节来源**
- [frontend/src/store/index.ts:1-50](file://frontend/src/store/index.ts#L1-L50)
- [frontend/src/store/modules/app/index.ts:1-100](file://frontend/src/store/modules/app/index.ts#L1-L100)
@@ -260,10 +240,6 @@ G --> H["数据转换"]
H --> I["返回结果"]
```
**图表来源**
- [frontend/src/service/request/index.ts:1-100](file://frontend/src/service/request/index.ts#L1-L100)
- [frontend/src/service/request/shared.ts:1-50](file://frontend/src/service/request/shared.ts#L1-L50)
**章节来源**
- [frontend/src/service/api/index.ts:1-50](file://frontend/src/service/api/index.ts#L1-L50)
- [frontend/src/service/request/index.ts:1-100](file://frontend/src/service/request/index.ts#L1-L100)
@@ -271,13 +247,18 @@ H --> I["返回结果"]
- [frontend/src/service/request/type.ts:1-50](file://frontend/src/service/request/type.ts#L1-L50)
## 路由与导航
新架构采用Vue Router 4,支持动态路由、路由守卫和懒加载
新架构采用Vue Router 4,支持动态路由、路由守卫和懒加载。**已更新以支持新的仪表板路由和型号管理端点**。
### 路由配置
- 静态路由:登录页、404页面等固定路由
- 动态路由:根据用户权限动态生成菜单和路由
- 路由元信息:权限控制、面包屑、标题等配置
### 新增路由功能
- **仪表板路由**: 支持仪表盘页面的动态路由配置
- **型号管理端点**: 集成型号管理的API路由
- **增强导航**: 改进的路由守卫和权限控制
### 路由守卫
- 认证守卫:检查用户登录状态
- 权限守卫:验证用户角色和权限
@@ -308,10 +289,6 @@ end
end
```
**图表来源**
- [frontend/src/router/guard/index.ts:1-100](file://frontend/src/router/guard/index.ts#L1-L100)
- [frontend/src/router/guard/route.ts:1-50](file://frontend/src/router/guard/route.ts#L1-L50)
**章节来源**
- [frontend/src/router/index.ts:1-100](file://frontend/src/router/index.ts#L1-L100)
- [frontend/src/router/guard/index.ts:1-100](file://frontend/src/router/guard/index.ts#L1-L100)
@@ -346,11 +323,6 @@ E --> F["运行时主题切换"]
F --> G["浏览器本地存储"]
```
**图表来源**
- [frontend/src/theme/settings.ts:1-50](file://frontend/src/theme/settings.ts#L1-L50)
- [frontend/src/theme/vars.ts:1-50](file://frontend/src/theme/vars.ts#L1-L50)
- [frontend/uno.config.ts:1-100](file://frontend/uno.config.ts#L1-L100)
**章节来源**
- [frontend/src/theme/settings.ts:1-50](file://frontend/src/theme/settings.ts#L1-L50)
- [frontend/src/theme/vars.ts:1-50](file://frontend/src/theme/vars.ts#L1-L50)
@@ -435,4 +407,6 @@ F --> G["浏览器本地存储"]
- [frontend/src/plugins/nprogress.ts:1-30](file://frontend/src/plugins/nprogress.ts#L1-L30)
## 结论
全新的基于Soybean Admin的前端架构通过monorepo结构、现代化技术栈和完善的开发工作流,显著提升了项目的可维护性、可扩展性和开发效率。新架构不仅解决了旧版本的痛点,还为未来的功能扩展和技术演进奠定了坚实基础。建议团队逐步迁移现有功能到新架构,充分利用TypeScript的类型安全和现代JavaScript生态的优势。
基于Soybean Admin的前端架构通过monorepo结构、现代化技术栈和完善的开发工作流,显著提升了项目的可维护性、可扩展性和开发效率。新架构不仅解决了旧版本的痛点,还为未来的功能扩展和技术演进奠定了坚实基础。建议团队逐步迁移现有功能到新架构,充分利用TypeScript的类型安全和现代JavaScript生态的优势。
**最新更新**包括对前端路由系统的增强,支持新的仪表板路由和型号管理端点,以及API服务定义的扩展以支持新的后端端点,进一步提升了系统的完整性和功能性。