imeeting/backend/design/project_design.md

2.9 KiB
Raw Blame History

项目设计文档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.mddesign/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

验证码开关(系统参数)

  • 系统参数 security.captcha.enabled 控制验证码是否启用true/false
  • 系统启动时加载 sys_param 到 Redis Hashsys:param:{paramKey}字段value/type
  • 前端登录页根据系统参数决定是否展示验证码

权限菜单渲染

  1. /api/permissions/me 获取权限列表
  2. 前端构建树形菜单

8. 约束与规范

  • 后端禁用 JPA/Hibernate
  • 统一响应 ApiResponse<T>
  • Controller 不直接调用 Mapper
  • 前端禁止在页面内直接调用 axios

9. 后续扩展建议

  • 添加审计日志落库策略
  • 任务管理模块完善
  • 权限树缓存与增量刷新策略