2026-02-10 09:48:44 +00:00
|
|
|
|
# 项目设计文档(imeetingNew)
|
|
|
|
|
|
|
|
|
|
|
|
## 1. 项目概述
|
|
|
|
|
|
本项目为“智能会议语音识别与总结系统”的管理后台,提供用户、角色、权限、设备与任务等管理能力。
|
|
|
|
|
|
后端为 Java 服务,前端为后台管理 Web。
|
|
|
|
|
|
|
|
|
|
|
|
## 2. 技术栈
|
|
|
|
|
|
### 后端
|
|
|
|
|
|
- Java 17
|
|
|
|
|
|
- Spring Boot 3.x
|
|
|
|
|
|
- Spring MVC
|
|
|
|
|
|
- Spring Security + JWT
|
|
|
|
|
|
- ORM: MyBatis / MyBatis-Plus
|
|
|
|
|
|
- Database: PostgreSQL
|
|
|
|
|
|
- Cache: Redis
|
|
|
|
|
|
- Build: Maven
|
|
|
|
|
|
|
|
|
|
|
|
### 前端
|
|
|
|
|
|
- React 18
|
|
|
|
|
|
- TypeScript
|
|
|
|
|
|
- Ant Design
|
|
|
|
|
|
- React Router
|
|
|
|
|
|
- Axios
|
|
|
|
|
|
- Vite
|
|
|
|
|
|
|
|
|
|
|
|
## 3. 系统架构
|
|
|
|
|
|
### 后端分层
|
|
|
|
|
|
- Controller:接收请求、参数校验、返回响应
|
|
|
|
|
|
- Service:业务编排与事务边界
|
|
|
|
|
|
- Mapper:数据访问
|
|
|
|
|
|
- DTO/VO:对外数据结构
|
|
|
|
|
|
|
|
|
|
|
|
### 前端分层
|
|
|
|
|
|
```
|
|
|
|
|
|
src
|
|
|
|
|
|
├─ api # 后端接口封装
|
|
|
|
|
|
├─ components # 通用组件
|
|
|
|
|
|
├─ layouts # 布局
|
|
|
|
|
|
├─ pages # 页面
|
|
|
|
|
|
├─ routes # 路由
|
|
|
|
|
|
├─ hooks # 自定义 hooks
|
|
|
|
|
|
├─ utils # 工具
|
|
|
|
|
|
└─ types # 类型定义
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## 4. 数据库设计(核心)
|
|
|
|
|
|
详见 `design/db_schema.md` 与 `design/db_schema_pgsql.sql`。
|
|
|
|
|
|
核心表:
|
|
|
|
|
|
- sys_user / sys_role / sys_user_role
|
|
|
|
|
|
- sys_permission / sys_role_permission
|
|
|
|
|
|
- sys_dict_type / sys_dict_item
|
|
|
|
|
|
- sys_param
|
|
|
|
|
|
- sys_log
|
|
|
|
|
|
|
|
|
|
|
|
## 5. 权限设计
|
|
|
|
|
|
### 权限模型
|
|
|
|
|
|
- 角色与权限多对多
|
|
|
|
|
|
- 用户与角色多对多
|
|
|
|
|
|
- 权限分为 menu / button
|
|
|
|
|
|
- 支持层级菜单(1级/2级)
|
|
|
|
|
|
|
|
|
|
|
|
### 超级管理员
|
|
|
|
|
|
- 约定 `user_id = 1` 为超级管理员
|
|
|
|
|
|
- 后端权限查询对其返回全量权限
|
|
|
|
|
|
|
|
|
|
|
|
### 接口
|
|
|
|
|
|
- `GET /api/permissions`:仅管理员可用(全量)
|
|
|
|
|
|
- `GET /api/permissions/me`:当前用户权限
|
|
|
|
|
|
- `GET /api/permissions/tree`:管理员权限树
|
|
|
|
|
|
- `GET /api/permissions/tree/me`:当前用户权限树
|
|
|
|
|
|
|
|
|
|
|
|
### 创建/更新校验
|
|
|
|
|
|
- level=1 时清空 parentId
|
|
|
|
|
|
- level=2 时 parentId 必须存在且为 level=1
|
|
|
|
|
|
- button 权限必须填写 code
|
|
|
|
|
|
- menu 权限 code 可选
|
|
|
|
|
|
|
|
|
|
|
|
## 6. 前端权限处理
|
|
|
|
|
|
- 登录后调用 `/api/users/me` 获取 `isAdmin`
|
|
|
|
|
|
- `isAdmin=true` 时前端不做权限限制
|
|
|
|
|
|
- 非管理员通过 `/api/permissions/me` 获取权限码用于按钮控制
|
|
|
|
|
|
- 菜单展示按权限树构建
|
|
|
|
|
|
|
|
|
|
|
|
## 7. 关键流程
|
|
|
|
|
|
### 登录
|
|
|
|
|
|
1. `/auth/captcha`
|
|
|
|
|
|
2. `/auth/login`
|
|
|
|
|
|
3. `/api/users/me`(获取用户信息与 isAdmin)
|
|
|
|
|
|
|
2026-02-11 05:44:31 +00:00
|
|
|
|
### 验证码开关(系统参数)
|
|
|
|
|
|
- 系统参数 `security.captcha.enabled` 控制验证码是否启用(true/false)
|
|
|
|
|
|
- 系统启动时加载 `sys_param` 到 Redis Hash:`sys:param:{paramKey}`(字段:value/type)
|
|
|
|
|
|
- 前端登录页根据系统参数决定是否展示验证码
|
|
|
|
|
|
|
2026-02-10 09:48:44 +00:00
|
|
|
|
### 权限菜单渲染
|
|
|
|
|
|
1. `/api/permissions/me` 获取权限列表
|
|
|
|
|
|
2. 前端构建树形菜单
|
|
|
|
|
|
|
|
|
|
|
|
## 8. 约束与规范
|
|
|
|
|
|
- 后端禁用 JPA/Hibernate
|
|
|
|
|
|
- 统一响应 `ApiResponse<T>`
|
|
|
|
|
|
- Controller 不直接调用 Mapper
|
|
|
|
|
|
- 前端禁止在页面内直接调用 axios
|
|
|
|
|
|
|
|
|
|
|
|
## 9. 后续扩展建议
|
|
|
|
|
|
- 添加审计日志落库策略
|
|
|
|
|
|
- 任务管理模块完善
|
|
|
|
|
|
- 权限树缓存与增量刷新策略
|