--- comet_change: refactor-architecture-analysis role: technical-design canonical_spec: openspec --- # RuoYi-Vue 架构梳理技术设计 ## 概述 本设计文档描述了 RuoYi-Vue 系统架构梳理的完整技术方案,采用**分层递进式分析**方法,从前端到后端、从交互到数据库,逐层深入分析现有系统架构,输出 6 份完整的架构文档和优化建议。 ## 分析方法论 ### 分层递进式分析框架 ``` ┌─────────────────────────────────────────────────────────┐ │ 架构梳理分析流程 │ ├─────────────────────────────────────────────────────────┤ │ │ │ 第 1 层:前端架构分析 │ │ ┌───────────────────────────────────────────────────┐ │ │ │ • 组件结构分析(60+ 组件分类) │ │ │ │ • 路由与权限控制流 │ │ │ │ • Vuex 状态管理分析 │ │ │ │ • Axios API 调用层分析 │ │ │ └───────────────────────────────────────────────────┘ │ │ ↓ │ │ 第 2 层:后端架构分析 │ │ ┌───────────────────────────────────────────────────┐ │ │ │ • Controller 层(25+ 控制器) │ │ │ │ • Service 层(接口与实现) │ │ │ │ • Mapper 层(MyBatis XML) │ │ │ │ • Spring Security + JWT 安全配置 │ │ │ │ • AOP 切面(日志、数据权限、限流) │ │ │ └───────────────────────────────────────────────────┘ │ │ ↓ │ │ 第 3 层:前后端交互分析 │ │ ┌───────────────────────────────────────────────────┐ │ │ │ • API 接口清单(60+ 接口) │ │ │ │ • 请求/响应数据格式 │ │ │ │ • 错误处理机制 │ │ │ │ • 分页、排序、过滤规范 │ │ │ └───────────────────────────────────────────────────┘ │ │ ↓ │ │ 第 4 层:数据库结构分析 │ │ ┌───────────────────────────────────────────────────┐ │ │ │ • 表结构分析(sys_*、book_*、stock_*) │ │ │ │ • 索引与约束 │ │ │ │ • 查询模式与性能 │ │ │ └───────────────────────────────────────────────────┘ │ │ ↓ │ │ 整合输出:6 份文档 + 优化建议清单 │ │ │ └─────────────────────────────────────────────────────────┘ ``` ## 前端架构分析设计 ### 1. 组件结构分析 ``` ruoyi-ui/src/ ├── components/ # 通用组件(30+) │ ├── 基础组件 │ │ ├── Breadcrumb/ # 面包屑导航 │ │ ├── Pagination/ # 分页组件 │ │ ├── DictTag/ # 字典标签 │ │ ├── Editor/ # 富文本编辑器 │ │ └── ... │ ├── 布局组件 │ │ ├── Hamburger/ # 汉堡菜单 │ │ ├── Sidebar/ # 侧边栏 │ │ └── Navbar/ # 顶部导航 │ └── 业务组件 │ ├── FileUpload/ # 文件上传 │ ├── ImageUpload/ # 图片上传 │ └── ... │ ├── views/ # 页面视图(50+) │ ├── dashboard/ # 首页 │ ├── system/ # 系统管理(10+ 页面) │ ├── booksystem/ # 账本系统(6 页面) │ ├── stocksystem/ # 股票系统(8 页面) │ ├── monitor/ # 监控模块(5 页面) │ └── tool/ # 工具模块(5 页面) │ └── layout/ # 布局框架 ├── index.vue # 主布局 ├── components/ # 布局组件 └── mixin/ # 布局混入 ``` **分析重点**: - 组件复用程度 - 组件职责是否单一 - 是否存在过度耦合 - 组件命名规范性 ### 2. 路由与权限控制流 ``` 路由加载流程: ┌──────────┐ ┌───────────┐ ┌──────────┐ │ 用户登录 │─────►│ 获取 Token │─────►│ 获取权限 │ └──────────┘ └───────────┘ └────┬─────┘ │ ▼ ┌──────────────┐ │ 动态路由加载 │ │ (permission) │ └──────┬───────┘ │ ▼ ┌──────────────┐ │ 路由守卫验证 │ │ (permission) │ └──────────────┘ ``` **分析重点**: - 静态路由 vs 动态路由划分 - 权限加载机制(roles、permissions) - 路由守卫实现 - 路由懒加载策略 ### 3. Vuex 状态管理分析 ``` Vuex Modules: ┌────────────────────────────────────────┐ │ Vuex Store │ ├────────┬──────┬──────────┬─────────────┤ │ app │ user │ permission│ tagsView │ ├────────┼──────┼──────────┼─────────────┤ │ 侧边栏 │ 用户 │ 动态路由 │ 标签页 │ │ 设备类型│ 信息 │ 权限菜单 │ 标签状态 │ │ 主题 │ Token│ 路由列表 │ 标签操作 │ └────────┴──────┴──────────┴─────────────┘ ↓ settings (系统设置) ``` **分析重点**: - 状态模块划分合理性 - 数据流向清晰度 - 状态持久化策略 - Getter 使用情况 ### 4. Axios API 调用层分析 ``` 请求流程: ┌─────────┐ ┌──────────┐ ┌──────────┐ ┌────────┐ │ View │────►│ API 层 │────►│ Interceptor│────►│Backend │ │ (Vue) │ │ (Axios) │ │ (Token) │ │ (API) │ └─────────┘ └──────────┘ └──────────┘ └───┬────┘ ▲ │ │ ▼ │ ┌──────────┐ │ │ Response │ │ └────┬─────┘ │ │ │ ┌───────────────────────────────┘ │ ▼ │ ┌──────────┐ └────────│ Interceptor│ │ (Error) │ └────────────┘ ``` **分析重点**: - 拦截器实现(Token、错误处理) - 统一响应格式处理 - 超时配置 - 下载功能实现 ## 后端架构分析设计 ### 1. 分层架构分析 ``` ┌────────────────────────────────────────────────────┐ │ 后端分层架构 │ ├────────────────────────────────────────────────────┤ │ │ │ Controller 层(25+ 控制器) │ │ ┌──────────────────────────────────────────────┐ │ │ │ • 系统管理:SysUserController 等 12 个 │ │ │ │ • 监控模块:CacheController 等 5 个 │ │ │ │ • 业务模块:AccountController 等 14 个 │ │ │ │ • 工具模块:GenController 等 2 个 │ │ │ └──────────────────────────────────────────────┘ │ │ ↓ │ │ Service 层(接口 + 实现) │ │ ┌──────────────────────────────────────────────┐ │ │ │ • I*Service 接口定义 │ │ │ │ • *ServiceImpl 实现类 │ │ │ │ • 事务管理(@Transactional) │ │ │ └──────────────────────────────────────────────┘ │ │ ↓ │ │ Mapper 层(MyBatis XML) │ │ ┌──────────────────────────────────────────────┐ │ │ │ • *Mapper 接口 │ │ │ │ • *Mapper.xml SQL 映射 │ │ │ │ • 动态 SQL │ │ │ └──────────────────────────────────────────────┘ │ │ ↓ │ │ Domain 层(实体类) │ │ ┌──────────────────────────────────────────────┐ │ │ │ • 实体类(Domain) │ │ │ │ • VO/DTO(视图对象) │ │ │ │ • 基类(BaseEntity) │ │ │ └──────────────────────────────────────────────┘ │ └────────────────────────────────────────────────────┘ ``` ### 2. 安全配置分析 ``` 安全架构: ┌────────────────────────────────────────┐ │ Spring Security 配置 │ ├────────────────────────────────────────┤ │ │ │ JWT Token 认证 │ │ ┌──────────────────────────────────┐ │ │ │ • Token 生成与验证 │ │ │ │ • Token 刷新机制 │ │ │ │ • Token 存储(Redis) │ │ │ └──────────────────────────────────┘ │ │ ↓ │ │ 权限控制 │ │ ┌──────────────────────────────────┐ │ │ │ • @PreAuthorize 注解 │ │ │ │ • 角色权限(ROLE_*) │ │ │ │ • 菜单权限(system:user:list) │ │ │ │ • 数据权限(@DataScope) │ │ │ └──────────────────────────────────┘ │ │ ↓ │ │ AOP 切面 │ │ ┌──────────────────────────────────┐ │ │ │ • 日志切面(@Log) │ │ │ │ • 数据源切面(@DataSource) │ │ │ │ • 限流切面(@RateLimiter) │ │ │ │ • 重复提交拦截 │ │ │ └──────────────────────────────────┘ │ └────────────────────────────────────────┘ ``` ### 3. 模块依赖关系 ``` 模块依赖图: ┌─────────────┐ │ ruoyi-admin │ (启动模块) └──────┬──────┘ │ ├─────────────┬─────────────┬──────────────┐ ▼ ▼ ▼ ▼ ┌───────────┐ ┌────────────┐ ┌──────────┐ ┌──────────┐ │ruoyi- │ │ruoyi- │ │book- │ │ruoyi- │ │framework │ │system │ │system │ │generator │ └─────┬─────┘ └─────┬──────┘ └────┬─────┘ └──────────┘ │ │ │ └─────────────┴──────────────┘ │ ▼ ┌────────────┐ │ruoyi-common│ └────────────┘ ``` ## 前后端交互分析设计 ### 1. API 接口清单 **系统管理 API**(20+ 接口): - `/system/user/*` - 用户管理 - `/system/role/*` - 角色管理 - `/system/menu/*` - 菜单管理 - `/system/dept/*` - 部门管理 - `/system/dict/*` - 字典管理 - ... **业务 API**(30+ 接口): - `/booksystem/account/*` - 账户管理 - `/booksystem/book/*` - 账本管理 - `/booksystem/statistics/*` - 统计分析 - `/stocksystem/stocks/*` - 股票管理 - ... ### 2. 统一响应格式 ```json // 成功响应 { "code": 200, "msg": "操作成功", "data": { ... } } // 分页响应 { "code": 200, "msg": "查询成功", "total": 100, "rows": [ ... ] } // 错误响应 { "code": 500, "msg": "错误信息" } ``` ### 3. 错误处理机制 ``` 错误处理链路: ┌─────────────────────────────────────────┐ │ 前端错误处理 │ ├─────────────────────────────────────────┤ │ • 401 → 登录过期,弹出重新登录提示 │ │ • 500 → 弹出错误消息 │ │ • 其他 → Notification.error │ │ • 网络错误 → 提示连接异常 │ │ • 超时 → 提示请求超时 │ └─────────────────────────────────────────┘ ↑ │ ┌─────────────────────────────────────────┐ │ 后端错误处理 │ ├─────────────────────────────────────────┤ │ • GlobalExceptionHandler │ │ • ServiceException │ │ • @Log 记录操作日志 │ │ • 业务异常 vs 系统异常 │ └─────────────────────────────────────────┘ ``` ## 数据库分析设计 ### 1. 表结构分类 **系统管理表**(sys_*): - `sys_user` - 用户表 - `sys_role` - 角色表 - `sys_menu` - 菜单表 - `sys_dept` - 部门表 - `sys_dict_*` - 字典表 - ... **业务表**(book_*、account_*): - `account` - 交易账户 - `book` - 账本 - `statistics` - 统计数据 - ... **股票表**(stock_*): - `stocks` - 股票信息 - `trends` - 趋势数据 - `stockindex` - 指数信息 - ... ### 2. 分析维度 - 表关系和外键约束 - 索引使用情况 - 冗余字段识别 - 查询性能瓶颈 - 审计字段(create_time、update_time) ## 输出文档结构 ### 文档 1:architecture-overview.md - 系统总体架构图 - 技术栈总结 - 模块划分 - 关键设计模式 ### 文档 2:frontend-architecture.md - 组件树分析 - 路由与权限流 - 状态管理分析 - API 调用层 - 存在的问题 ### 文档 3:backend-architecture.md - 分层架构分析 - 安全配置 - AOP 切面 - 模块依赖 - 存在的问题 ### 文档 4:api-interaction-spec.md - API 接口清单 - 请求/响应规范 - 错误处理机制 - 分页/排序/过滤 - 优化建议 ### 文档 5:database-structure.md - 表结构清单 - 索引分析 - 查询模式 - 性能问题 - 优化建议 ### 文档 6:optimization-suggestions.md - 10+ 条优化建议 - 每条包含: - 问题描述 - 影响范围 - 推荐方案 - 实施优先级 ## 质量保证 ### 文档完整性检查 - [ ] 6 份文档全部输出 - [ ] 每份文档包含架构图 - [ ] 问题清单不少于 10 条 ### 准确性验证 - [ ] 架构图与实际代码对照 - [ ] API 接口清单完整 - [ ] 表结构与实际数据库一致 ### 可执行性 - [ ] 每条建议包含实施步骤 - [ ] 优先级明确 - [ ] 风险可控 ## 风险与缓解 | 风险 | 影响 | 缓解措施 | |------|------|---------| | 分析遗漏 | 后续重构缺少依据 | 建立检查清单,逐模块验证 | | 文档冗长 | 可读性差 | 控制篇幅,结构化组织 | | 建议不可操作 | 无法指导重构 | 包含具体实施步骤 | ## 后续步骤 完成架构梳理后,将依次执行: 1. refactor-frontend-modernization(前端重构) 2. refactor-backend-api(后端 API 规范化) 3. refactor-database-optimization(数据库优化) 4. refactor-coding-standards(编码规范) 本架构梳理文档将为后续所有重构提供技术指引。