文档优化:将核心架构与流程字符图转换为Mermaid
This commit is contained in:
1 parent
8b54dee004
commit
18a3bfb50e
12 files changed
+141
-244
No files matched your search
@@ -10,27 +10,20 @@
|
||||
|
||||
在多角色(Admin, Teacher, Student)登录体系中,数据范围安全必须建立在**零信任前端参数**的基石之上:
|
||||
|
||||
```
|
||||
+─────────────────────────────────────────────────────────────────────────────+
|
||||
| 零信任推导核心防线 (Secure Chain) |
|
||||
| |
|
||||
| 客户端 HTTP Request |
|
||||
| │ (仅携带 Bearer JWT Token,禁止/忽略 query 或 body 中的 identityId) |
|
||||
| ▼ |
|
||||
| Spring Security Filter: JwtAuthenticationTokenFilter |
|
||||
| │ (验签并提取 claims 中的 userId) |
|
||||
| ▼ |
|
||||
| SecurityContextHolder.getContext().getAuthentication() |
|
||||
| │ (获取受信任的 LoginUser.getUserId()) |
|
||||
| ▼ |
|
||||
| Service 内部数据推导 (SecurityContextHelper) |
|
||||
| ├─ 若拥有 train_teacher 角色: |
|
||||
| │ SELECT t_id FROM train_teacher WHERE user_id = #{userId} |
|
||||
| ├─ 若拥有 train_student 角色: |
|
||||
| │ SELECT s_id FROM train_student WHERE user_id = #{userId} |
|
||||
| └─ 若拥有 admin / train_admin 角色: |
|
||||
| 按管理员角色规则放行或基于组织机构过滤 |
|
||||
+─────────────────────────────────────────────────────────────────────────────+
|
||||
```mermaid
|
||||
flowchart TD
|
||||
Req["客户端 HTTP Request<br/>(仅携带 Bearer JWT Token,禁止/忽略 query 或 body 中的 identityId)"]
|
||||
Filter["Spring Security Filter: JwtAuthenticationTokenFilter<br/>(验签并提取 claims 中的 userId)"]
|
||||
SecCtx["SecurityContextHolder.getContext().getAuthentication()<br/>(获取受信任的 LoginUser.getUserId())"]
|
||||
Helper["Service 内部数据推导 (SecurityContextHelper)"]
|
||||
|
||||
Req --> Filter
|
||||
Filter --> SecCtx
|
||||
SecCtx --> Helper
|
||||
|
||||
Helper -->|"拥有 train_teacher 角色"| TeacherRole["SELECT t_id FROM train_teacher WHERE user_id = #{userId}"]
|
||||
Helper -->|"拥有 train_student 角色"| StudentRole["SELECT s_id FROM train_student WHERE user_id = #{userId}"]
|
||||
Helper -->|"拥有 admin / train_admin 角色"| AdminRole["按管理员角色规则放行或基于组织机构过滤"]
|
||||
```
|
||||
|
||||
### 1.1 核心铁律
|
||||
@@ -44,30 +37,16 @@
|
||||
|
||||
教师登录后,其可访问的所有教学资源必须严格基于其受聘授课关系动态推导:
|
||||
|
||||
```
|
||||
┌──────────────────────┐
|
||||
│ sys_user (userId) │
|
||||
└──────────┬───────────┘
|
||||
│ WHERE user_id = #{userId}
|
||||
▼
|
||||
┌──────────────────────┐
|
||||
│ train_teacher (t_id)│
|
||||
└──────────┬───────────┘
|
||||
│
|
||||
┌───────────────────────┼────────────────────────┐
|
||||
│ (排课直接授课) │ (计划课程关联) │ (关联教学班级)
|
||||
▼ ▼ ▼
|
||||
┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐
|
||||
│timetable_lesson │ │train_plan_course │ │ train_class_plan │
|
||||
│WHERE teacher_id │ │WHERE teacher_id │ │ WHERE plan_id IN │
|
||||
│ = #{t_id} │ │ = #{t_id} │ │ (授课班级集合) │
|
||||
└────────┬─────────┘ └──────────────────┘ └────────┬─────────┘
|
||||
│ │
|
||||
▼ ▼
|
||||
┌──────────────────┐ ┌──────────────────┐
|
||||
│student_checkin │ │training_enrollment
|
||||
│(本人课次考勤流水) │ │(我带的班级学员名单)│
|
||||
└──────────────────┘ └──────────────────┘
|
||||
```mermaid
|
||||
flowchart TD
|
||||
User["sys_user (userId)"] -->|"WHERE user_id = #{userId}"| Teacher["train_teacher (t_id)"]
|
||||
|
||||
Teacher -->|"排课直接授课"| Lesson["timetable_lesson<br/>WHERE teacher_id = #{t_id}"]
|
||||
Teacher -->|"计划课程关联"| PlanCourse["train_plan_course<br/>WHERE teacher_id = #{t_id}"]
|
||||
Teacher -->|"关联教学班级"| ClassPlan["train_class_plan<br/>WHERE plan_id IN (授课班级集合)"]
|
||||
|
||||
Lesson --> Checkin["student_checkin<br/>(本人课次考勤流水)"]
|
||||
ClassPlan --> Enrollment["training_enrollment<br/>(我带的班级学员名单)"]
|
||||
```
|
||||
|
||||
- **授课课表数据**: 仅能查到 `train_timetable_lesson.teacher_id = #{currentTeacherId}` 的课次。
|
||||
@@ -80,29 +59,17 @@
|
||||
|
||||
学员登录后,进入极简个人培训中心,数据范围完全收敛于“本人”:
|
||||
|
||||
```
|
||||
┌──────────────────────┐
|
||||
│ sys_user (userId) │
|
||||
└──────────┬───────────┘
|
||||
│ WHERE user_id = #{userId}
|
||||
▼
|
||||
┌──────────────────────┐
|
||||
│ train_student (s_id)│
|
||||
└──────────┬───────────┘
|
||||
│
|
||||
┌─────────────┬───────────────┼───────────────┬─────────────┐
|
||||
▼ ▼ ▼ ▼ ▼
|
||||
┌───────┐ ┌──────────────┐ ┌───────────┐ ┌──────────────┐ ┌────────────┐
|
||||
│ 个人 │ │ 参训班级名单 │ │ 个人报到 │ │ 个人考勤记录 │ │ 个人画像/ │
|
||||
│ 档案 │ │ Enrollment │ │ Report │ │ Checkin │ │ 学时累计 │
|
||||
│(只读) │ │WHERE s_id=...│ │WHERE s_id │ │WHERE s_id=...│ │WHERE s_id │
|
||||
└───────┘ └──────┬───────┘ └───────────┘ └──────────────┘ └────────────┘
|
||||
│
|
||||
▼
|
||||
┌──────────────┐
|
||||
│ 班级参训课表 │
|
||||
│(仅限正常在训)│
|
||||
└──────────────┘
|
||||
```mermaid
|
||||
flowchart TD
|
||||
User["sys_user (userId)"] -->|"WHERE user_id = #{userId}"| Student["train_student (s_id)"]
|
||||
|
||||
Student --> Profile["个人档案 (只读)"]
|
||||
Student --> Enrollment["参训班级名单 (Enrollment)<br/>WHERE s_id = ..."]
|
||||
Student --> Report["个人报到 (Report)<br/>WHERE s_id = ..."]
|
||||
Student --> Checkin["个人考勤记录 (Checkin)<br/>WHERE s_id = ..."]
|
||||
Student --> Portrait["个人画像 / 学时累计<br/>WHERE s_id = ..."]
|
||||
|
||||
Enrollment --> Timetable["班级参训课表<br/>(仅限正常在训)"]
|
||||
```
|
||||
|
||||
- **学员档案**: 仅能读取与更新本人通讯电话、邮箱。
|
||||
|
||||
Reference in new issue
Block a user