105 lines
2.6 KiB
Markdown
105 lines
2.6 KiB
Markdown
# 项目设计文档(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)
|
||
|
||
### 权限菜单渲染
|
||
1. `/api/permissions/me` 获取权限列表
|
||
2. 前端构建树形菜单
|
||
|
||
## 8. 约束与规范
|
||
- 后端禁用 JPA/Hibernate
|
||
- 统一响应 `ApiResponse<T>`
|
||
- Controller 不直接调用 Mapper
|
||
- 前端禁止在页面内直接调用 axios
|
||
|
||
## 9. 后续扩展建议
|
||
- 添加审计日志落库策略
|
||
- 任务管理模块完善
|
||
- 权限树缓存与增量刷新策略
|
||
|