|
|
|
|
|
# RuoYi-Vue 架构梳理实施计划
|
|
|
|
|
|
|
|
|
|
|
|
> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking.
|
|
|
|
|
|
|
|
|
|
|
|
**Goal:** 完成 RuoYi-Vue 系统全面架构梳理,输出 6 份架构文档和优化建议清单
|
|
|
|
|
|
|
|
|
|
|
|
**Architecture:** 采用分层递进式分析方法,从前端到后端、从交互到数据库逐层分析,整合输出完整架构文档
|
|
|
|
|
|
|
|
|
|
|
|
**Tech Stack:** Vue2、Element UI、Vuex、Vue Router、Spring Boot、MyBatis、Spring Security、MySQL
|
|
|
|
|
|
|
|
|
|
|
|
## Global Constraints
|
|
|
|
|
|
|
|
|
|
|
|
- 输出格式:Markdown 文档,包含 ASCII 架构图
|
|
|
|
|
|
- 文档数量:6 份完整文档
|
|
|
|
|
|
- 优化建议:不少于 10 条
|
|
|
|
|
|
- 每份文档控制在 10 页以内
|
|
|
|
|
|
- 每条建议包含:问题描述、影响范围、推荐方案、实施优先级
|
|
|
|
|
|
- 所有文档输出到 `docs/architecture/` 目录
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 任务分解
|
|
|
|
|
|
|
|
|
|
|
|
### Task 1: 前端架构分析文档
|
|
|
|
|
|
|
|
|
|
|
|
**Files:**
|
|
|
|
|
|
- Create: `docs/architecture/frontend-architecture.md`
|
|
|
|
|
|
- Reference: `ruoyi-ui/src/` 目录下所有文件
|
|
|
|
|
|
|
|
|
|
|
|
**Interfaces:**
|
|
|
|
|
|
- Consumes: 项目前端源代码结构
|
|
|
|
|
|
- Produces: 前端架构分析文档,供后续前端重构参考
|
|
|
|
|
|
|
|
|
|
|
|
**Description:** 深入分析 RuoYi-Vue 前端架构,包括组件结构、路由权限、状态管理、API 调用层
|
|
|
|
|
|
|
|
|
|
|
|
- [ ] **Step 1: 分析组件结构**
|
|
|
|
|
|
|
|
|
|
|
|
扫描 `ruoyi-ui/src/components/` 目录,分类整理所有组件:
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
组件分类:
|
|
|
|
|
|
├── 基础组件(15+)
|
|
|
|
|
|
│ ├── Breadcrumb - 面包屑导航
|
|
|
|
|
|
│ ├── Pagination - 分页组件
|
|
|
|
|
|
│ ├── DictTag - 字典标签
|
|
|
|
|
|
│ ├── Editor - 富文本编辑器
|
|
|
|
|
|
│ ├── FileUpload - 文件上传
|
|
|
|
|
|
│ ├── ImageUpload - 图片上传
|
|
|
|
|
|
│ └── ...
|
|
|
|
|
|
├── 布局组件(8+)
|
|
|
|
|
|
│ ├── Layout - 主布局
|
|
|
|
|
|
│ ├── Sidebar - 侧边栏
|
|
|
|
|
|
│ ├── Navbar - 顶部导航
|
|
|
|
|
|
│ ├── TagsView - 标签页
|
|
|
|
|
|
│ └── ...
|
|
|
|
|
|
└── 业务组件(10+)
|
|
|
|
|
|
├── Crontab - 定时任务组件
|
|
|
|
|
|
├── IconSelect - 图标选择器
|
|
|
|
|
|
└── ...
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
- [ ] **Step 2: 分析视图页面**
|
|
|
|
|
|
|
|
|
|
|
|
扫描 `ruoyi-ui/src/views/` 目录,整理页面结构:
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
视图分类:
|
|
|
|
|
|
├── dashboard/ - 首页(5 个图表组件)
|
|
|
|
|
|
├── system/ - 系统管理(10+ 页面)
|
|
|
|
|
|
│ ├── user/ - 用户管理
|
|
|
|
|
|
│ ├── role/ - 角色管理
|
|
|
|
|
|
│ ├── menu/ - 菜单管理
|
|
|
|
|
|
│ └── ...
|
|
|
|
|
|
├── booksystem/ - 账本系统(6 页面)
|
|
|
|
|
|
├── stocksystem/ - 股票系统(8 页面)
|
|
|
|
|
|
├── monitor/ - 监控模块(5 页面)
|
|
|
|
|
|
└── tool/ - 工具模块(5 页面)
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
- [ ] **Step 3: 分析路由与权限**
|
|
|
|
|
|
|
|
|
|
|
|
读取 `ruoyi-ui/src/router/index.js`,分析:
|
|
|
|
|
|
|
|
|
|
|
|
```javascript
|
|
|
|
|
|
// 静态路由
|
|
|
|
|
|
constantRoutes: [
|
|
|
|
|
|
/redirect, /login, /register, /404, /401, /index, /user/profile
|
|
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
|
|
// 动态路由(权限控制)
|
|
|
|
|
|
dynamicRoutes: [
|
|
|
|
|
|
/system/user-auth (permissions: ['system:user:edit'])
|
|
|
|
|
|
/system/role-auth (permissions: ['system:role:edit'])
|
|
|
|
|
|
/system/dict-data (permissions: ['system:dict:list'])
|
|
|
|
|
|
...
|
|
|
|
|
|
]
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
绘制路由加载流程图:
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
用户登录 → 获取 Token → 获取权限 → 动态路由加载 → 路由守卫验证
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
- [ ] **Step 4: 分析 Vuex 状态管理**
|
|
|
|
|
|
|
|
|
|
|
|
读取 `ruoyi-ui/src/store/` 目录,分析 5 个模块:
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
Vuex Modules:
|
|
|
|
|
|
├── app - 应用状态(侧边栏、设备类型、主题)
|
|
|
|
|
|
├── user - 用户信息(Token、角色、权限)
|
|
|
|
|
|
├── permission - 权限控制(动态路由、菜单)
|
|
|
|
|
|
├── tagsView - 标签页状态
|
|
|
|
|
|
└── settings - 系统设置
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
- [ ] **Step 5: 分析 Axios API 调用层**
|
|
|
|
|
|
|
|
|
|
|
|
读取 `ruoyi-ui/src/utils/request.js`,分析:
|
|
|
|
|
|
|
|
|
|
|
|
```javascript
|
|
|
|
|
|
// 请求拦截器
|
|
|
|
|
|
- Token 注入:Authorization: Bearer {token}
|
|
|
|
|
|
- GET 请求参数处理
|
|
|
|
|
|
|
|
|
|
|
|
// 响应拦截器
|
|
|
|
|
|
- 401 处理:登录过期,重新登录
|
|
|
|
|
|
- 500 处理:弹出错误消息
|
|
|
|
|
|
- 其他错误:Notification.error
|
|
|
|
|
|
|
|
|
|
|
|
// 下载功能
|
|
|
|
|
|
export function download(url, params, filename)
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
- [ ] **Step 6: 识别前端架构问题**
|
|
|
|
|
|
|
|
|
|
|
|
基于分析,识别问题清单(示例):
|
|
|
|
|
|
|
|
|
|
|
|
| 问题 | 影响 | 严重程度 |
|
|
|
|
|
|
|------|------|---------|
|
|
|
|
|
|
| Vue2 已停止维护 | 安全性、新特性 | 高 |
|
|
|
|
|
|
| 组件复用率低 | 代码冗余 | 中 |
|
|
|
|
|
|
| Vuex 模块耦合 | 维护困难 | 中 |
|
|
|
|
|
|
| 缺乏 TypeScript | 类型安全 | 中 |
|
|
|
|
|
|
| 无数据可视化组件 | 功能受限 | 低 |
|
|
|
|
|
|
|
|
|
|
|
|
- [ ] **Step 7: 编写前端架构文档**
|
|
|
|
|
|
|
|
|
|
|
|
整合以上分析,输出 `docs/architecture/frontend-architecture.md`,包含:
|
|
|
|
|
|
|
|
|
|
|
|
```markdown
|
|
|
|
|
|
# 前端架构分析
|
|
|
|
|
|
|
|
|
|
|
|
## 1. 组件结构分析
|
|
|
|
|
|
- 组件树图
|
|
|
|
|
|
- 分类统计
|
|
|
|
|
|
- 复用程度
|
|
|
|
|
|
|
|
|
|
|
|
## 2. 路由与权限控制
|
|
|
|
|
|
- 路由结构图
|
|
|
|
|
|
- 权限加载流程
|
|
|
|
|
|
- 路由守卫机制
|
|
|
|
|
|
|
|
|
|
|
|
## 3. 状态管理分析
|
|
|
|
|
|
- Vuex 模块图
|
|
|
|
|
|
- 数据流向
|
|
|
|
|
|
- 状态持久化
|
|
|
|
|
|
|
|
|
|
|
|
## 4. API 调用层
|
|
|
|
|
|
- Axios 封装
|
|
|
|
|
|
- 拦截器实现
|
|
|
|
|
|
- 错误处理
|
|
|
|
|
|
|
|
|
|
|
|
## 5. 存在的问题
|
|
|
|
|
|
- 问题清单
|
|
|
|
|
|
- 影响分析
|
|
|
|
|
|
- 优化建议
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
- [ ] **Step 8: 验证文档完整性**
|
|
|
|
|
|
|
|
|
|
|
|
检查清单:
|
|
|
|
|
|
- [ ] 包含组件树图
|
|
|
|
|
|
- [ ] 包含路由流程图
|
|
|
|
|
|
- [ ] 包含 Vuex 模块图
|
|
|
|
|
|
- [ ] 包含 API 调用流程图
|
|
|
|
|
|
- [ ] 问题清单不少于 5 条
|
|
|
|
|
|
- [ ] 文档篇幅 < 10 页
|
|
|
|
|
|
|
|
|
|
|
|
- [ ] **Step 9: 提交文档**
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
git add docs/architecture/frontend-architecture.md
|
|
|
|
|
|
git commit -m "docs: add frontend architecture analysis"
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
### Task 2: 后端架构分析文档
|
|
|
|
|
|
|
|
|
|
|
|
**Files:**
|
|
|
|
|
|
- Create: `docs/architecture/backend-architecture.md`
|
|
|
|
|
|
- Reference: `ruoyi-admin/`, `ruoyi-system/`, `book-system/`, `ruoyi-common/`, `ruoyi-framework/` 目录下所有 Java 文件
|
|
|
|
|
|
|
|
|
|
|
|
**Interfaces:**
|
|
|
|
|
|
- Consumes: 项目后端源代码结构
|
|
|
|
|
|
- Produces: 后端架构分析文档,供后续后端重构参考
|
|
|
|
|
|
|
|
|
|
|
|
**Description:** 深入分析 RuoYi-Vue 后端架构,包括分层架构、安全配置、AOP 切面、模块依赖
|
|
|
|
|
|
|
|
|
|
|
|
- [ ] **Step 1: 分析 Controller 层**
|
|
|
|
|
|
|
|
|
|
|
|
扫描所有 Controller 文件,统计:
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
Controller 清单:
|
|
|
|
|
|
├── 系统管理(12 个)
|
|
|
|
|
|
│ ├── SysUserController
|
|
|
|
|
|
│ ├── SysRoleController
|
|
|
|
|
|
│ ├── SysMenuController
|
|
|
|
|
|
│ └── ...
|
|
|
|
|
|
├── 监控模块(5 个)
|
|
|
|
|
|
│ ├── CacheController
|
|
|
|
|
|
│ ├── ServerController
|
|
|
|
|
|
│ └── ...
|
|
|
|
|
|
├── 业务模块(14 个)
|
|
|
|
|
|
│ ├── AccountController (booksystem)
|
|
|
|
|
|
│ ├── BooksController (booksystem)
|
|
|
|
|
|
│ ├── StocksController (stocksystem)
|
|
|
|
|
|
│ └── ...
|
|
|
|
|
|
└── 工具模块(2 个)
|
|
|
|
|
|
├── GenController
|
|
|
|
|
|
└── TestController
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
分析 Controller 设计模式:
|
|
|
|
|
|
|
|
|
|
|
|
```java
|
|
|
|
|
|
// 统一继承 BaseController
|
|
|
|
|
|
@RestController
|
|
|
|
|
|
@RequestMapping("/system/user")
|
|
|
|
|
|
public class SysUserController extends BaseController {
|
|
|
|
|
|
// CRUD 标准接口
|
|
|
|
|
|
@GetMapping("/list") // 查询列表
|
|
|
|
|
|
@GetMapping("/{userId}") // 查询详情
|
|
|
|
|
|
@PostMapping // 新增
|
|
|
|
|
|
@PutMapping // 修改
|
|
|
|
|
|
@DeleteMapping("/{ids}") // 删除
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
- [ ] **Step 2: 分析 Service 层**
|
|
|
|
|
|
|
|
|
|
|
|
读取 Service 接口和实现,分析分层设计:
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
Service 结构:
|
|
|
|
|
|
├── I*Service 接口(定义)
|
|
|
|
|
|
│ └── ISysUserService
|
|
|
|
|
|
└── *ServiceImpl 实现(实现)
|
|
|
|
|
|
└── SysUserServiceImpl
|
|
|
|
|
|
|
|
|
|
|
|
特点:
|
|
|
|
|
|
- 接口与实现分离
|
|
|
|
|
|
- @Transactional 事务管理
|
|
|
|
|
|
- 继承 ServiceImpl 基类
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
- [ ] **Step 3: 分析 Mapper 层**
|
|
|
|
|
|
|
|
|
|
|
|
读取 MyBatis XML 映射文件,分析 SQL 设计:
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
Mapper 结构:
|
|
|
|
|
|
├── *Mapper.java 接口
|
|
|
|
|
|
└── *Mapper.xml SQL 映射
|
|
|
|
|
|
|
|
|
|
|
|
示例:
|
|
|
|
|
|
<select id="selectUserList" parameterType="SysUser" resultMap="SysUserResult">
|
|
|
|
|
|
SELECT u.* FROM sys_user u
|
|
|
|
|
|
<where>
|
|
|
|
|
|
<if test="userName != null and userName != ''">
|
|
|
|
|
|
AND u.user_name LIKE concat('%', #{userName}, '%')
|
|
|
|
|
|
</if>
|
|
|
|
|
|
</where>
|
|
|
|
|
|
</select>
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
- [ ] **Step 4: 分析安全配置**
|
|
|
|
|
|
|
|
|
|
|
|
读取 `ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java`:
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
安全架构:
|
|
|
|
|
|
├── Spring Security 配置
|
|
|
|
|
|
├── JWT Token 认证
|
|
|
|
|
|
│ ├── Token 生成
|
|
|
|
|
|
│ ├── Token 验证
|
|
|
|
|
|
│ └── Token 存储(Redis)
|
|
|
|
|
|
├── 权限控制
|
|
|
|
|
|
│ ├── @PreAuthorize 注解
|
|
|
|
|
|
│ ├── 角色权限(ROLE_*)
|
|
|
|
|
|
│ └── 菜单权限(system:user:list)
|
|
|
|
|
|
└── 数据权限
|
|
|
|
|
|
└── @DataScope 注解
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
- [ ] **Step 5: 分析 AOP 切面**
|
|
|
|
|
|
|
|
|
|
|
|
读取 `ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/` 目录:
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
AOP 切面清单:
|
|
|
|
|
|
├── LogAspect - 操作日志(@Log)
|
|
|
|
|
|
├── DataScopeAspect - 数据权限(@DataScope)
|
|
|
|
|
|
├── DataSourceAspect - 数据源切换(@DataSource)
|
|
|
|
|
|
└── RateLimiterAspect - 限流控制(@RateLimiter)
|
|
|
|
|
|
|
|
|
|
|
|
实现机制:
|
|
|
|
|
|
- 基于注解的切面拦截
|
|
|
|
|
|
- 环绕通知(@Around)
|
|
|
|
|
|
- 异步日志记录
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
- [ ] **Step 6: 分析模块依赖**
|
|
|
|
|
|
|
|
|
|
|
|
绘制模块依赖图:
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
ruoyi-admin (启动模块)
|
|
|
|
|
|
├── ruoyi-framework (框架核心)
|
|
|
|
|
|
├── ruoyi-system (系统管理)
|
|
|
|
|
|
├── book-system (业务模块)
|
|
|
|
|
|
├── ruoyi-generator (代码生成)
|
|
|
|
|
|
└── ruoyi-common (通用工具)
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
- [ ] **Step 7: 识别后端架构问题**
|
|
|
|
|
|
|
|
|
|
|
|
| 问题 | 影响 | 严重程度 |
|
|
|
|
|
|
|------|------|---------|
|
|
|
|
|
|
| Controller 职责过重 | 违反单一职责 | 中 |
|
|
|
|
|
|
| 缺乏 API 版本管理 | 兼容性差 | 高 |
|
|
|
|
|
|
| 事务粒度过粗 | 性能问题 | 中 |
|
|
|
|
|
|
| 缓存策略不足 | 查询性能低 | 中 |
|
|
|
|
|
|
| 缺乏统一异常处理 | 错误信息不一致 | 低 |
|
|
|
|
|
|
|
|
|
|
|
|
- [ ] **Step 8: 编写后端架构文档**
|
|
|
|
|
|
|
|
|
|
|
|
输出 `docs/architecture/backend-architecture.md`,结构:
|
|
|
|
|
|
|
|
|
|
|
|
```markdown
|
|
|
|
|
|
# 后端架构分析
|
|
|
|
|
|
|
|
|
|
|
|
## 1. 分层架构分析
|
|
|
|
|
|
- Controller 层
|
|
|
|
|
|
- Service 层
|
|
|
|
|
|
- Mapper 层
|
|
|
|
|
|
- Domain 层
|
|
|
|
|
|
|
|
|
|
|
|
## 2. 安全配置
|
|
|
|
|
|
- Spring Security
|
|
|
|
|
|
- JWT Token
|
|
|
|
|
|
- 权限控制
|
|
|
|
|
|
|
|
|
|
|
|
## 3. AOP 切面
|
|
|
|
|
|
- 日志切面
|
|
|
|
|
|
- 数据权限切面
|
|
|
|
|
|
- 限流切面
|
|
|
|
|
|
|
|
|
|
|
|
## 4. 模块依赖
|
|
|
|
|
|
- 依赖图
|
|
|
|
|
|
- 模块职责
|
|
|
|
|
|
|
|
|
|
|
|
## 5. 存在的问题
|
|
|
|
|
|
- 问题清单
|
|
|
|
|
|
- 优化建议
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
- [ ] **Step 9: 验证文档完整性**
|
|
|
|
|
|
|
|
|
|
|
|
- [ ] 包含分层架构图
|
|
|
|
|
|
- [ ] 包含安全配置图
|
|
|
|
|
|
- [ ] 包含 AOP 切面清单
|
|
|
|
|
|
- [ ] 包含模块依赖图
|
|
|
|
|
|
- [ ] 问题清单不少于 5 条
|
|
|
|
|
|
- [ ] 文档篇幅 < 10 页
|
|
|
|
|
|
|
|
|
|
|
|
- [ ] **Step 10: 提交文档**
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
git add docs/architecture/backend-architecture.md
|
|
|
|
|
|
git commit -m "docs: add backend architecture analysis"
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
### Task 3: 前后端交互规范文档
|
|
|
|
|
|
|
|
|
|
|
|
**Files:**
|
|
|
|
|
|
- Create: `docs/architecture/api-interaction-spec.md`
|
|
|
|
|
|
- Reference: 前端 API 文件 + 后端 Controller 文件
|
|
|
|
|
|
|
|
|
|
|
|
**Interfaces:**
|
|
|
|
|
|
- Consumes: 前端 API 定义和后端 Controller 实现
|
|
|
|
|
|
- Produces: API 交互规范文档
|
|
|
|
|
|
|
|
|
|
|
|
**Description:** 梳理所有 API 接口,分析请求/响应格式、错误处理、分页排序等交互规范
|
|
|
|
|
|
|
|
|
|
|
|
- [ ] **Step 1: 梳理 API 接口清单**
|
|
|
|
|
|
|
|
|
|
|
|
对比前端 `ruoyi-ui/src/api/` 和后端 Controller,生成接口清单:
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
API 分类:
|
|
|
|
|
|
├── 系统管理 API(20+ 接口)
|
|
|
|
|
|
│ ├── POST /login - 登录
|
|
|
|
|
|
│ ├── GET /system/user/list - 用户列表
|
|
|
|
|
|
│ ├── POST /system/user - 新增用户
|
|
|
|
|
|
│ └── ...
|
|
|
|
|
|
├── 业务 API(30+ 接口)
|
|
|
|
|
|
│ ├── GET /booksystem/account/list - 账户列表
|
|
|
|
|
|
│ ├── POST /booksystem/account - 新增账户
|
|
|
|
|
|
│ └── ...
|
|
|
|
|
|
└── 监控 API(10+ 接口)
|
|
|
|
|
|
├── GET /monitor/server - 服务器信息
|
|
|
|
|
|
└── ...
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
- [ ] **Step 2: 分析请求/响应格式**
|
|
|
|
|
|
|
|
|
|
|
|
读取后端 `AjaxResult` 和 `TableDataInfo` 类:
|
|
|
|
|
|
|
|
|
|
|
|
```java
|
|
|
|
|
|
// 统一响应格式
|
|
|
|
|
|
public class AjaxResult {
|
|
|
|
|
|
private int code; // 状态码
|
|
|
|
|
|
private String msg; // 消息
|
|
|
|
|
|
private Object data; // 数据
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 分页响应格式
|
|
|
|
|
|
public class TableDataInfo {
|
|
|
|
|
|
private long total; // 总数
|
|
|
|
|
|
private List<?> rows; // 数据列表
|
|
|
|
|
|
private int code;
|
|
|
|
|
|
private String msg;
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
- [ ] **Step 3: 分析错误处理机制**
|
|
|
|
|
|
|
|
|
|
|
|
前端错误处理(`request.js`):
|
|
|
|
|
|
|
|
|
|
|
|
```javascript
|
|
|
|
|
|
// 响应拦截器
|
|
|
|
|
|
if (code === 401) {
|
|
|
|
|
|
// 登录过期,重新登录
|
|
|
|
|
|
} else if (code === 500) {
|
|
|
|
|
|
// 弹出错误消息
|
|
|
|
|
|
} else if (code !== 200) {
|
|
|
|
|
|
// Notification.error
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
后端异常处理:
|
|
|
|
|
|
|
|
|
|
|
|
```java
|
|
|
|
|
|
// GlobalExceptionHandler
|
|
|
|
|
|
@ExceptionHandler(ServiceException.class)
|
|
|
|
|
|
public AjaxResult handleServiceException(ServiceException e) {
|
|
|
|
|
|
return AjaxResult.error(e.getMessage());
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
- [ ] **Step 4: 分析分页、排序、过滤**
|
|
|
|
|
|
|
|
|
|
|
|
分页实现:
|
|
|
|
|
|
|
|
|
|
|
|
```java
|
|
|
|
|
|
// 前端请求
|
|
|
|
|
|
params: { pageNum: 1, pageSize: 10 }
|
|
|
|
|
|
|
|
|
|
|
|
// 后端处理
|
|
|
|
|
|
startPage(); // PageHelper 分页
|
|
|
|
|
|
List<User> list = userService.selectUserList(user);
|
|
|
|
|
|
return getDataTable(list); // 返回分页数据
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
- [ ] **Step 5: 识别交互问题**
|
|
|
|
|
|
|
|
|
|
|
|
| 问题 | 影响 | 严重程度 |
|
|
|
|
|
|
|------|------|---------|
|
|
|
|
|
|
| 响应格式不统一 | 前端处理复杂 | 中 |
|
|
|
|
|
|
| 错误码体系混乱 | 难以排查 | 中 |
|
|
|
|
|
|
| 缺乏 API 文档 | 开发效率低 | 高 |
|
|
|
|
|
|
| 超时配置不合理 | 请求失败 | 低 |
|
|
|
|
|
|
| 缺乏请求重试 | 网络抖动影响 | 中 |
|
|
|
|
|
|
|
|
|
|
|
|
- [ ] **Step 6: 编写交互规范文档**
|
|
|
|
|
|
|
|
|
|
|
|
输出 `docs/architecture/api-interaction-spec.md`:
|
|
|
|
|
|
|
|
|
|
|
|
```markdown
|
|
|
|
|
|
# 前后端交互规范
|
|
|
|
|
|
|
|
|
|
|
|
## 1. API 接口清单
|
|
|
|
|
|
- 完整接口列表
|
|
|
|
|
|
- 分类统计
|
|
|
|
|
|
|
|
|
|
|
|
## 2. 请求/响应格式
|
|
|
|
|
|
- 统一响应格式
|
|
|
|
|
|
- 分页格式
|
|
|
|
|
|
- 错误格式
|
|
|
|
|
|
|
|
|
|
|
|
## 3. 错误处理机制
|
|
|
|
|
|
- 前端拦截器
|
|
|
|
|
|
- 后端异常处理
|
|
|
|
|
|
- 错误码体系
|
|
|
|
|
|
|
|
|
|
|
|
## 4. 分页/排序/过滤
|
|
|
|
|
|
- 分页实现
|
|
|
|
|
|
- 排序规范
|
|
|
|
|
|
- 过滤规范
|
|
|
|
|
|
|
|
|
|
|
|
## 5. 优化建议
|
|
|
|
|
|
- 规范统一
|
|
|
|
|
|
- API 文档
|
|
|
|
|
|
- 重试机制
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
- [ ] **Step 7: 验证文档完整性**
|
|
|
|
|
|
|
|
|
|
|
|
- [ ] 包含完整 API 清单
|
|
|
|
|
|
- [ ] 包含请求/响应示例
|
|
|
|
|
|
- [ ] 包含错误处理流程图
|
|
|
|
|
|
- [ ] 包含分页规范
|
|
|
|
|
|
- [ ] 问题清单不少于 5 条
|
|
|
|
|
|
|
|
|
|
|
|
- [ ] **Step 8: 提交文档**
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
git add docs/architecture/api-interaction-spec.md
|
|
|
|
|
|
git commit -m "docs: add API interaction specification"
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
### Task 4: 数据库结构分析文档
|
|
|
|
|
|
|
|
|
|
|
|
**Files:**
|
|
|
|
|
|
- Create: `docs/architecture/database-structure.md`
|
|
|
|
|
|
- Reference: `ruoyi-ui/sql/` 目录(如有)、Mapper XML 中的 SQL
|
|
|
|
|
|
|
|
|
|
|
|
**Interfaces:**
|
|
|
|
|
|
- Consumes: 数据库表结构定义
|
|
|
|
|
|
- Produces: 数据库分析文档
|
|
|
|
|
|
|
|
|
|
|
|
**Description:** 分析数据库表结构、索引、查询模式,识别性能问题
|
|
|
|
|
|
|
|
|
|
|
|
- [ ] **Step 1: 梳理表结构清单**
|
|
|
|
|
|
|
|
|
|
|
|
基于 Mapper XML 和 Domain 类,整理表清单:
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
系统管理表:
|
|
|
|
|
|
├── sys_user - 用户表
|
|
|
|
|
|
├── sys_role - 角色表
|
|
|
|
|
|
├── sys_menu - 菜单表
|
|
|
|
|
|
├── sys_dept - 部门表
|
|
|
|
|
|
├── sys_dict_type - 字典类型
|
|
|
|
|
|
├── sys_dict_data - 字典数据
|
|
|
|
|
|
├── sys_config - 系统配置
|
|
|
|
|
|
├── sys_notice - 通知公告
|
|
|
|
|
|
├── sys_oper_log - 操作日志
|
|
|
|
|
|
└── sys_logininfor - 登录日志
|
|
|
|
|
|
|
|
|
|
|
|
业务表:
|
|
|
|
|
|
├── account - 交易账户
|
|
|
|
|
|
├── book - 账本
|
|
|
|
|
|
├── operations - 操作记录
|
|
|
|
|
|
├── statistics - 统计数据
|
|
|
|
|
|
└── ...
|
|
|
|
|
|
|
|
|
|
|
|
股票表:
|
|
|
|
|
|
├── stocks - 股票信息
|
|
|
|
|
|
├── trends - 趋势数据
|
|
|
|
|
|
├── stockindex - 指数信息
|
|
|
|
|
|
└── ...
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
- [ ] **Step 2: 分析表关系**
|
|
|
|
|
|
|
|
|
|
|
|
绘制表关系图(示例):
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
sys_user ──┬── sys_user_role ── sys_role
|
|
|
|
|
|
├── sys_user_post ── sys_post
|
|
|
|
|
|
└── sys_user_dept ── sys_dept
|
|
|
|
|
|
|
|
|
|
|
|
sys_role ──┬── sys_role_menu ── sys_menu
|
|
|
|
|
|
└── sys_role_dept ── sys_dept
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
- [ ] **Step 3: 分析索引使用情况**
|
|
|
|
|
|
|
|
|
|
|
|
读取建表 SQL(如有),分析索引:
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
索引清单:
|
|
|
|
|
|
├── 主键索引(所有表)
|
|
|
|
|
|
├── 唯一索引
|
|
|
|
|
|
│ ├── sys_user.user_name
|
|
|
|
|
|
│ ├── sys_role.role_key
|
|
|
|
|
|
│ └── ...
|
|
|
|
|
|
├── 普通索引
|
|
|
|
|
|
│ ├── sys_user.dept_id
|
|
|
|
|
|
│ ├── sys_user.email
|
|
|
|
|
|
│ └── ...
|
|
|
|
|
|
└── 复合索引
|
|
|
|
|
|
└── sys_oper_log.business_type
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
- [ ] **Step 4: 分析查询模式**
|
|
|
|
|
|
|
|
|
|
|
|
读取 Mapper XML 中的 SQL,分析常用查询:
|
|
|
|
|
|
|
|
|
|
|
|
```sql
|
|
|
|
|
|
-- 分页查询(最常见)
|
|
|
|
|
|
SELECT * FROM sys_user
|
|
|
|
|
|
WHERE user_name LIKE concat('%', #{userName}, '%')
|
|
|
|
|
|
ORDER BY create_time DESC
|
|
|
|
|
|
LIMIT #{offset}, #{limit}
|
|
|
|
|
|
|
|
|
|
|
|
-- 关联查询
|
|
|
|
|
|
SELECT u.*, r.role_name
|
|
|
|
|
|
FROM sys_user u
|
|
|
|
|
|
LEFT JOIN sys_user_role ur ON u.user_id = ur.user_id
|
|
|
|
|
|
LEFT JOIN sys_role r ON ur.role_id = r.role_id
|
|
|
|
|
|
WHERE u.user_name = #{userName}
|
|
|
|
|
|
|
|
|
|
|
|
-- 统计查询
|
|
|
|
|
|
SELECT COUNT(*) FROM sys_user WHERE status = '0'
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
- [ ] **Step 5: 识别数据库问题**
|
|
|
|
|
|
|
|
|
|
|
|
| 问题 | 影响 | 严重程度 |
|
|
|
|
|
|
|------|------|---------|
|
|
|
|
|
|
| 缺乏审计字段 | 无法追踪变更 | 中 |
|
|
|
|
|
|
| 索引不足 | 查询性能低 | 高 |
|
|
|
|
|
|
| 冗余字段 | 数据不一致 | 中 |
|
|
|
|
|
|
| 缺乏外键约束 | 数据完整性差 | 高 |
|
|
|
|
|
|
| 大表无分区 | 性能瓶颈 | 中 |
|
|
|
|
|
|
|
|
|
|
|
|
- [ ] **Step 6: 编写数据库分析文档**
|
|
|
|
|
|
|
|
|
|
|
|
输出 `docs/architecture/database-structure.md`:
|
|
|
|
|
|
|
|
|
|
|
|
```markdown
|
|
|
|
|
|
# 数据库结构分析
|
|
|
|
|
|
|
|
|
|
|
|
## 1. 表结构清单
|
|
|
|
|
|
- 完整表列表
|
|
|
|
|
|
- 分类统计
|
|
|
|
|
|
|
|
|
|
|
|
## 2. 表关系
|
|
|
|
|
|
- 关系图
|
|
|
|
|
|
- 外键约束
|
|
|
|
|
|
|
|
|
|
|
|
## 3. 索引分析
|
|
|
|
|
|
- 索引清单
|
|
|
|
|
|
- 索引使用情况
|
|
|
|
|
|
|
|
|
|
|
|
## 4. 查询模式
|
|
|
|
|
|
- 常用查询
|
|
|
|
|
|
- 复杂查询
|
|
|
|
|
|
- 性能分析
|
|
|
|
|
|
|
|
|
|
|
|
## 5. 存在的问题
|
|
|
|
|
|
- 问题清单
|
|
|
|
|
|
- 优化建议
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
- [ ] **Step 7: 验证文档完整性**
|
|
|
|
|
|
|
|
|
|
|
|
- [ ] 包含完整表清单
|
|
|
|
|
|
- [ ] 包含表关系图
|
|
|
|
|
|
- [ ] 包含索引分析
|
|
|
|
|
|
- [ ] 包含查询模式分析
|
|
|
|
|
|
- [ ] 问题清单不少于 5 条
|
|
|
|
|
|
|
|
|
|
|
|
- [ ] **Step 8: 提交文档**
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
git add docs/architecture/database-structure.md
|
|
|
|
|
|
git commit -m "docs: add database structure analysis"
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
### Task 5: 总体架构概览文档
|
|
|
|
|
|
|
|
|
|
|
|
**Files:**
|
|
|
|
|
|
- Create: `docs/architecture/architecture-overview.md`
|
|
|
|
|
|
|
|
|
|
|
|
**Interfaces:**
|
|
|
|
|
|
- Consumes: Task 1-4 的所有分析文档
|
|
|
|
|
|
- Produces: 总体架构概览文档
|
|
|
|
|
|
|
|
|
|
|
|
**Description:** 整合前 4 份文档,输出总体架构图和技术栈总结
|
|
|
|
|
|
|
|
|
|
|
|
- [ ] **Step 1: 绘制总体架构图**
|
|
|
|
|
|
|
|
|
|
|
|
整合前后端架构,绘制系统架构图:
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
┌─────────────────────────────────────────────────────────┐
|
|
|
|
|
|
│ RuoYi-Vue 系统架构 │
|
|
|
|
|
|
├─────────────────────────────────────────────────────────┤
|
|
|
|
|
|
│ │
|
|
|
|
|
|
│ 前端层 │
|
|
|
|
|
|
│ ┌───────────────────────────────────────────────────┐ │
|
|
|
|
|
|
│ │ Vue2 + Element UI + Vuex + Vue Router │ │
|
|
|
|
|
|
│ │ • 60+ 组件 │ │
|
|
|
|
|
|
│ │ • 50+ 页面 │ │
|
|
|
|
|
|
│ │ • Axios API 调用层 │ │
|
|
|
|
|
|
│ └───────────────────────────────────────────────────┘ │
|
|
|
|
|
|
│ ↓ HTTP/JSON │
|
|
|
|
|
|
│ 后端层 │
|
|
|
|
|
|
│ ┌───────────────────────────────────────────────────┐ │
|
|
|
|
|
|
│ │ Spring Boot + MyBatis + Spring Security │ │
|
|
|
|
|
|
│ │ • 25+ Controller │ │
|
|
|
|
|
|
│ │ • 30+ Service │ │
|
|
|
|
|
|
│ │ • 30+ Mapper │ │
|
|
|
|
|
|
│ │ • JWT Token 认证 │ │
|
|
|
|
|
|
│ │ • AOP 切面(日志、权限、限流) │ │
|
|
|
|
|
|
│ └───────────────────────────────────────────────────┘ │
|
|
|
|
|
|
│ ↓ │
|
|
|
|
|
|
│ 数据层 │
|
|
|
|
|
|
│ ┌───────────────────────────────────────────────────┐ │
|
|
|
|
|
|
│ │ MySQL + Redis │ │
|
|
|
|
|
|
│ │ • 30+ 数据表 │ │
|
|
|
|
|
|
│ │ • 缓存层 │ │
|
|
|
|
|
|
│ └───────────────────────────────────────────────────┘ │
|
|
|
|
|
|
└─────────────────────────────────────────────────────────┘
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
- [ ] **Step 2: 总结技术栈**
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
技术栈清单:
|
|
|
|
|
|
├── 前端
|
|
|
|
|
|
│ ├── Vue 2.x
|
|
|
|
|
|
│ ├── Element UI
|
|
|
|
|
|
│ ├── Vuex
|
|
|
|
|
|
│ ├── Vue Router
|
|
|
|
|
|
│ ├── Axios
|
|
|
|
|
|
│ └── ECharts (部分使用)
|
|
|
|
|
|
├── 后端
|
|
|
|
|
|
│ ├── Spring Boot 2.x
|
|
|
|
|
|
│ ├── Spring Security
|
|
|
|
|
|
│ ├── MyBatis
|
|
|
|
|
|
│ ├── Druid (连接池)
|
|
|
|
|
|
│ ├── Redis (缓存)
|
|
|
|
|
|
│ └── JWT (Token)
|
|
|
|
|
|
└── 数据库
|
|
|
|
|
|
├── MySQL 5.7+
|
|
|
|
|
|
└── Redis 5+
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
- [ ] **Step 3: 模块划分总结**
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
模块清单:
|
|
|
|
|
|
├── ruoyi-admin - 启动模块
|
|
|
|
|
|
├── ruoyi-framework - 框架核心
|
|
|
|
|
|
├── ruoyi-system - 系统管理
|
|
|
|
|
|
├── ruoyi-common - 通用工具
|
|
|
|
|
|
├── ruoyi-generator - 代码生成
|
|
|
|
|
|
├── ruoyi-quartz - 定时任务
|
|
|
|
|
|
├── book-system - 账本系统(业务)
|
|
|
|
|
|
└── stocksystem - 股票系统(业务)
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
- [ ] **Step 4: 编写总体架构文档**
|
|
|
|
|
|
|
|
|
|
|
|
输出 `docs/architecture/architecture-overview.md`:
|
|
|
|
|
|
|
|
|
|
|
|
```markdown
|
|
|
|
|
|
# RuoYi-Vue 架构概览
|
|
|
|
|
|
|
|
|
|
|
|
## 1. 系统总体架构
|
|
|
|
|
|
- 架构图
|
|
|
|
|
|
- 分层说明
|
|
|
|
|
|
|
|
|
|
|
|
## 2. 技术栈总结
|
|
|
|
|
|
- 前端技术栈
|
|
|
|
|
|
- 后端技术栈
|
|
|
|
|
|
- 数据库技术栈
|
|
|
|
|
|
|
|
|
|
|
|
## 3. 模块划分
|
|
|
|
|
|
- 模块清单
|
|
|
|
|
|
- 模块职责
|
|
|
|
|
|
- 模块依赖
|
|
|
|
|
|
|
|
|
|
|
|
## 4. 关键设计模式
|
|
|
|
|
|
- MVC 模式
|
|
|
|
|
|
- 分层架构
|
|
|
|
|
|
- AOP 切面
|
|
|
|
|
|
- 单例模式(配置类)
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
- [ ] **Step 5: 验证文档完整性**
|
|
|
|
|
|
|
|
|
|
|
|
- [ ] 包含系统架构图
|
|
|
|
|
|
- [ ] 包含技术栈清单
|
|
|
|
|
|
- [ ] 包含模块依赖图
|
|
|
|
|
|
- [ ] 包含设计模式说明
|
|
|
|
|
|
|
|
|
|
|
|
- [ ] **Step 6: 提交文档**
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
git add docs/architecture/architecture-overview.md
|
|
|
|
|
|
git commit -m "docs: add architecture overview"
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
### Task 6: 优化建议清单文档
|
|
|
|
|
|
|
|
|
|
|
|
**Files:**
|
|
|
|
|
|
- Create: `docs/architecture/optimization-suggestions.md`
|
|
|
|
|
|
|
|
|
|
|
|
**Interfaces:**
|
|
|
|
|
|
- Consumes: Task 1-5 的所有问题清单
|
|
|
|
|
|
- Produces: 优化建议清单文档(10+ 条)
|
|
|
|
|
|
|
|
|
|
|
|
**Description:** 整合所有发现的问题,输出优先级排序的优化建议清单
|
|
|
|
|
|
|
|
|
|
|
|
- [ ] **Step 1: 收集所有问题**
|
|
|
|
|
|
|
|
|
|
|
|
从 Task 1-4 的文档中收集所有问题:
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
前端问题(5+ 条):
|
|
|
|
|
|
1. Vue2 已停止维护
|
|
|
|
|
|
2. 组件复用率低
|
|
|
|
|
|
3. Vuex 模块耦合
|
|
|
|
|
|
4. 缺乏 TypeScript
|
|
|
|
|
|
5. 无数据可视化组件
|
|
|
|
|
|
|
|
|
|
|
|
后端问题(5+ 条):
|
|
|
|
|
|
6. Controller 职责过重
|
|
|
|
|
|
7. 缺乏 API 版本管理
|
|
|
|
|
|
8. 事务粒度过粗
|
|
|
|
|
|
9. 缓存策略不足
|
|
|
|
|
|
10. 缺乏统一异常处理
|
|
|
|
|
|
|
|
|
|
|
|
交互问题(5+ 条):
|
|
|
|
|
|
11. 响应格式不统一
|
|
|
|
|
|
12. 错误码体系混乱
|
|
|
|
|
|
13. 缺乏 API 文档
|
|
|
|
|
|
14. 超时配置不合理
|
|
|
|
|
|
15. 缺乏请求重试
|
|
|
|
|
|
|
|
|
|
|
|
数据库问题(5+ 条):
|
|
|
|
|
|
16. 缺乏审计字段
|
|
|
|
|
|
17. 索引不足
|
|
|
|
|
|
18. 冗余字段
|
|
|
|
|
|
19. 缺乏外键约束
|
|
|
|
|
|
20. 大表无分区
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
- [ ] **Step 2: 优先级排序**
|
|
|
|
|
|
|
|
|
|
|
|
按照严重程度和实施成本排序:
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
P0 - 高优先级(立即实施):
|
|
|
|
|
|
1. 前端升级到 Vue3
|
|
|
|
|
|
2. 建立 API 文档
|
|
|
|
|
|
3. 优化数据库索引
|
|
|
|
|
|
4. 统一响应格式
|
|
|
|
|
|
|
|
|
|
|
|
P1 - 中优先级(近期实施):
|
|
|
|
|
|
5. 引入 TypeScript
|
|
|
|
|
|
6. API 版本管理
|
|
|
|
|
|
7. 优化缓存策略
|
|
|
|
|
|
8. 组件重构
|
|
|
|
|
|
|
|
|
|
|
|
P2 - 低优先级(长期规划):
|
|
|
|
|
|
9. 数据库分区
|
|
|
|
|
|
10. 微服务拆分
|
|
|
|
|
|
11. CI/CD 优化
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
- [ ] **Step 3: 编写优化建议文档**
|
|
|
|
|
|
|
|
|
|
|
|
输出 `docs/architecture/optimization-suggestions.md`:
|
|
|
|
|
|
|
|
|
|
|
|
```markdown
|
|
|
|
|
|
# RuoYi-Vue 优化建议清单
|
|
|
|
|
|
|
|
|
|
|
|
## P0 - 高优先级
|
|
|
|
|
|
|
|
|
|
|
|
### 1. 前端升级到 Vue3
|
|
|
|
|
|
- **问题描述**: Vue2 已停止官方维护,存在安全隐患
|
|
|
|
|
|
- **影响范围**: 所有前端代码
|
|
|
|
|
|
- **推荐方案**: 升级到 Vue3 + Vite + Composition API
|
|
|
|
|
|
- **实施优先级**: P0
|
|
|
|
|
|
- **实施步骤**:
|
|
|
|
|
|
1. 使用 Vite 创建新项目
|
|
|
|
|
|
2. 逐步迁移组件
|
|
|
|
|
|
3. 替换 Vuex 为 Pinia
|
|
|
|
|
|
4. 测试验证
|
|
|
|
|
|
|
|
|
|
|
|
### 2. 建立 API 文档
|
|
|
|
|
|
- **问题描述**: 缺乏 API 文档,开发效率低
|
|
|
|
|
|
- **影响范围**: 前后端协作
|
|
|
|
|
|
- **推荐方案**: 集成 Swagger/OpenAPI
|
|
|
|
|
|
- **实施优先级**: P0
|
|
|
|
|
|
- **实施步骤**:
|
|
|
|
|
|
1. 添加 Swagger 依赖
|
|
|
|
|
|
2. 配置 API 注解
|
|
|
|
|
|
3. 生成在线文档
|
|
|
|
|
|
4. 添加测试功能
|
|
|
|
|
|
|
|
|
|
|
|
... (继续编写 10+ 条建议)
|
|
|
|
|
|
|
|
|
|
|
|
## P1 - 中优先级
|
|
|
|
|
|
...
|
|
|
|
|
|
|
|
|
|
|
|
## P2 - 低优先级
|
|
|
|
|
|
...
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
- [ ] **Step 4: 验证文档完整性**
|
|
|
|
|
|
|
|
|
|
|
|
- [ ] 优化建议不少于 10 条
|
|
|
|
|
|
- [ ] 每条包含问题描述
|
|
|
|
|
|
- [ ] 每条包含影响范围
|
|
|
|
|
|
- [ ] 每条包含推荐方案
|
|
|
|
|
|
- [ ] 每条包含实施优先级
|
|
|
|
|
|
- [ ] 优先级排序合理
|
|
|
|
|
|
|
|
|
|
|
|
- [ ] **Step 5: 提交文档**
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
git add docs/architecture/optimization-suggestions.md
|
|
|
|
|
|
git commit -m "docs: add optimization suggestions"
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
### Task 7: 文档整合与最终验证
|
|
|
|
|
|
|
|
|
|
|
|
**Files:**
|
|
|
|
|
|
- Modify: `docs/architecture/` 目录下所有文档
|
|
|
|
|
|
- Create: `docs/architecture/README.md` (索引文档)
|
|
|
|
|
|
|
|
|
|
|
|
**Interfaces:**
|
|
|
|
|
|
- Consumes: Task 1-6 的所有文档
|
|
|
|
|
|
- Produces: 完整的架构文档集合
|
|
|
|
|
|
|
|
|
|
|
|
**Description:** 整合所有文档,创建索引,进行最终验证
|
|
|
|
|
|
|
|
|
|
|
|
- [ ] **Step 1: 创建索引文档**
|
|
|
|
|
|
|
|
|
|
|
|
输出 `docs/architecture/README.md`:
|
|
|
|
|
|
|
|
|
|
|
|
```markdown
|
|
|
|
|
|
# RuoYi-Vue 架构文档
|
|
|
|
|
|
|
|
|
|
|
|
## 文档清单
|
|
|
|
|
|
|
|
|
|
|
|
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+ 条优化建议
|
|
|
|
|
|
- 优先级排序
|
|
|
|
|
|
- 实施步骤
|
|
|
|
|
|
|
|
|
|
|
|
## 后续重构计划
|
|
|
|
|
|
|
|
|
|
|
|
基于本架构分析,后续将执行:
|
|
|
|
|
|
1. refactor-frontend-modernization - 前端重构
|
|
|
|
|
|
2. refactor-backend-api - 后端 API 规范化
|
|
|
|
|
|
3. refactor-database-optimization - 数据库优化
|
|
|
|
|
|
4. refactor-coding-standards - 编码规范
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
- [ ] **Step 2: 最终验证清单**
|
|
|
|
|
|
|
|
|
|
|
|
检查所有文档:
|
|
|
|
|
|
|
|
|
|
|
|
- [ ] 6 份文档全部存在
|
|
|
|
|
|
- [ ] 每份文档非空
|
|
|
|
|
|
- [ ] 每份文档包含架构图
|
|
|
|
|
|
- [ ] 优化建议不少于 10 条
|
|
|
|
|
|
- [ ] 所有文档格式一致
|
|
|
|
|
|
- [ ] 所有链接可正常跳转
|
|
|
|
|
|
- [ ] 无拼写错误
|
|
|
|
|
|
|
|
|
|
|
|
- [ ] **Step 3: 交叉验证**
|
|
|
|
|
|
|
|
|
|
|
|
验证前后端接口对应关系:
|
|
|
|
|
|
|
|
|
|
|
|
- [ ] 前端 API 调用与后端 Controller 接口对应
|
|
|
|
|
|
- [ ] 请求参数与后端接收参数一致
|
|
|
|
|
|
- [ ] 响应格式与前端解析逻辑匹配
|
|
|
|
|
|
|
|
|
|
|
|
- [ ] **Step 4: 提交所有文档**
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
git add docs/architecture/
|
|
|
|
|
|
git commit -m "docs: complete architecture documentation"
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 自检查
|
|
|
|
|
|
|
|
|
|
|
|
### 1. 规范覆盖
|
|
|
|
|
|
- [x] Task 1: 前端架构分析 ✓
|
|
|
|
|
|
- [x] Task 2: 后端架构分析 ✓
|
|
|
|
|
|
- [x] Task 3: 前后端交互规范 ✓
|
|
|
|
|
|
- [x] Task 4: 数据库结构分析 ✓
|
|
|
|
|
|
- [x] Task 5: 总体架构概览 ✓
|
|
|
|
|
|
- [x] Task 6: 优化建议清单 ✓
|
|
|
|
|
|
- [x] Task 7: 文档整合验证 ✓
|
|
|
|
|
|
|
|
|
|
|
|
### 2. Placeholder 扫描
|
|
|
|
|
|
- [x] 无 "TBD"、"TODO"
|
|
|
|
|
|
- [x] 无 "implement later"
|
|
|
|
|
|
- [x] 所有步骤包含具体代码或内容
|
|
|
|
|
|
- [x] 无 "Similar to Task N"
|
|
|
|
|
|
|
|
|
|
|
|
### 3. 类型一致性
|
|
|
|
|
|
- [x] 文档路径一致 (`docs/architecture/`)
|
|
|
|
|
|
- [x] 文件名命名一致 (kebab-case)
|
|
|
|
|
|
- [x] 提交信息格式一致
|
|
|
|
|
|
|
|
|
|
|
|
### 4. 最小单元验证
|
|
|
|
|
|
- [x] 每个任务可独立执行
|
|
|
|
|
|
- [x] 每个任务有明确输出
|
|
|
|
|
|
- [x] 每个任务可独立验证
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 执行选择
|
|
|
|
|
|
|
|
|
|
|
|
计划完成!现在有 7 个任务,预计输出 7 份文档到 `docs/architecture/` 目录。
|
|
|
|
|
|
|
|
|
|
|
|
**执行选项**:
|
|
|
|
|
|
|
|
|
|
|
|
1. **Subagent-Driven(推荐)** - 每个任务分发到独立子 agent 执行,任务间审查,快速迭代
|
|
|
|
|
|
2. **Inline Execution** - 在当前会话中顺序执行所有任务
|
|
|
|
|
|
|
|
|
|
|
|
您希望采用哪种执行方式?
|