Files
railwaysystem/docs/development/rbac-r2/08_implementation_task_breakdown.md
T

137 lines
6.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# RailwaySystem R.2B 落地实现任务拆分指南 (Implementation Task Breakdown)
- **设计版本**: R.2A Design Freeze
- **设计日期**: 2026-09-15
- **核心目标**: 将 R.2B 实现阶段拆解为 10 个粒度适中、依赖严密、支持多工程师并行作业的高效子任务。
---
## 1. 任务依赖关系与并行推进路线图
```mermaid
flowchart TD
subgraph Phase1["阶段一: 数据库与权限基础设施 (前置依赖)"]
B1["RBAC-B1: 身份绑定与约束脚本 (004.sql)"]
B2["RBAC-B2: 角色菜单与权限补全脚本 (005.sql)"]
end
subgraph Phase2["阶段二: 独立并行开发 (无直接阻塞)"]
B3["RBAC-B3: 教师自服务后端 API (/train/me/teacher)"]
B4["RBAC-B4: 学员自服务后端 API (/train/me/student)"]
B5["RBAC-B5: 教师工作台前端视图 (Teacher Portal)"]
B6["RBAC-B6: 学员个人中心前端视图 (Student Portal)"]
B7["RBAC-B7: 登录页注册策略改造 (隐藏入口)"]
B8["RBAC-B8: 班牌权限命名空间对齐 (system->train)"]
end
subgraph Phase3["阶段三: 安全联调与全量验收"]
B9["RBAC-B9: 数据范围与 IDOR 安全渗透测试"]
B10["RBAC-B10: 管理端业务无损全量回归 (E2E-R2)"]
end
B1 --> B3
B1 --> B4
B2 --> B3
B2 --> B4
B2 --> B5
B2 --> B6
B3 --> B5
B4 --> B6
B5 --> B9
B6 --> B9
B7 --> B10
B8 --> B10
B9 --> B10
```
---
## 2. 详细任务卡片清单 (RBAC-B1 ~ RBAC-B10)
### 任务 1: RBAC-B1 - 身份绑定与物理约束脚本 (Identity Binding & DDL)
- **依赖关系**: 无前置依赖,首发任务。
- **任务目标**:
1. 编写 `RuoYi-Vue/sql/system/kingbase/004_rbac_identity_binding.sql`。
2. 针对 `train_teacher(user_id)` 与 `train_student(user_id)` 建立非空部分唯一索引。
- **完成标志**: 脚本在 Kingbase 生产库显式事务执行通过,唯一性拦截生效。
### 任务 2: RBAC-B2 - 角色预置与权限补齐脚本 (Role & Permission Migration)
- **依赖关系**: 依赖 B1 完成。
- **任务目标**:
1. 编写 `RuoYi-Vue/sql/system/kingbase/005_training_roles_permissions.sql`。
2. 预置 `train_admin` (3), `train_teacher` (4), `train_student` (5) 角色。
3. 补齐 `sys_menu` 中基础管理模块缺失的全部按钮级 `perms` 行。
4. 建立角色的初始菜单与功能权限绑定映射。
- **完成标志**: 数据库执行无报错,管理员界面角色管理中可见 3 个新角色。
### 任务 3: RBAC-B3 - 教师后端自服务体系实现 (Teacher Backend)
- **依赖关系**: 依赖 B1, B2。与 B4、B7、B8 可完全并行。
- **任务目标**:
1. 新增控制器 `TrainTeacherMeController.java` (`/train/me/...`)。
2. 实现获取教师本人画像、任教班级、授课课表、班级学员名册(脱敏)与出勤统计。
3. 强制从 `SecurityUtils.getUserId()` 提取当前教师 ID。
- **完成标志**: Swagger 联调成功,篡改身份直接抛出 403。
### 任务 4: RBAC-B4 - 学员后端自服务体系实现 (Student Backend)
- **依赖关系**: 依赖 B1, B2。与 B3、B7、B8 可完全并行。
- **任务目标**:
1. 新增控制器 `TrainStudentMeController.java` (`/train/me/...`)。
2. 实现获取学员本人档案、参训班级状态、个人课表、报到凭据、个人考勤、累计学时与多维画像。
3. 强制校验本人归属,杜绝任何外部主键传入。
- **完成标志**: 接口单元测试通过率 100%。
### 任务 5: RBAC-B5 - 教师工作台前端视图开发 (Teacher Frontend)
- **依赖关系**: 依赖 B2 菜单路由,可与 B3 并行(采用 Mock 或接口契约联调)。
- **任务目标**:
1. 在 `build_ui/src/views/train/teacher/` 下开发工作台看板与我的日程日历组件。
2. 开发任教班级花名册抽屉视图。
- **完成标志**: 教师登录后正常展现日历课表与花名册。
### 任务 6: RBAC-B6 - 学员个人培训中心前端开发 (Student Frontend)
- **依赖关系**: 依赖 B2 菜单路由,可与 B4 并行开发。
- **任务目标**:
1. 在 `build_ui/src/views/train/student/` 下开发学员培训个人中心。
2. 整合培训流程步骤条、今日课表卡片、个人考勤打卡流水与雷达画像组件。
- **完成标志**: 学员登录后清晰直观呈现个人培训全流程状态。
### 任务 7: RBAC-B7 - 登录界面注册入口安全改造 (Login UI Policy)
- **依赖关系**: 独立任务,可立即开工。
- **任务目标**:
1. 修改 `build_ui/src/views/login.vue`,彻底关闭 `register` 开关,移除“立即注册”链接。
2. 增加居中提示:“*账号由培训管理部门统一创建与授权维护*”。
- **完成标志**: 登录页面无注册链接,提示文案清晰优雅。
### 任务 8: RBAC-B8 - 班牌权限命名空间统一对齐 (Namespace Alignment)
- **依赖关系**: 独立任务,可立即开工。
- **任务目标**:
1. 将后端 `TrainElectronicBoardController.java` 中的 `@PreAuthorize("@ss.hasPermi('system:board:...')")` 统一对齐为 `train:board:...`。
2. 将前端 `views/train/board/index.vue` 中的 `v-hasPermi="['system:board:...']"` 统一对齐为 `train:board:...`。
- **完成标志**: 班牌功能按钮与后端权限完全基于 `train:board:*` 正常鉴权。
### 任务 9: RBAC-B9 - 数据范围与 IDOR 安全渗透自动化测试 (IDOR Gate)
- **依赖关系**: 依赖 B3、B4、B5、B6 联调完成。
- **任务目标**:
1. 编写跨用户越权自动化探测脚本,模拟 Teacher A 访问 Teacher B 课表,模拟 Student A 访问 Student B 档案与考勤。
2. 验证所有直接对象引用均被有效拒止。
- **完成标志**: `IDOR_LEAK_COUNT = 0`。
### 任务 10: RBAC-B10 - 管理端业务全流程无损回归测试 (Admin Regression)
- **依赖关系**: 汇总任务,依赖全部前置任务。
- **任务目标**:
1. 执行 E2E-R2 验收方案全流程。
2. 执行管理端原有 30 个生产核心用例回归测试。
- **完成标志**: 管理端核心业务 100% PASS,实现三角色完整 RBAC 闭环。
---
## 3. 并行施工调度建议
- **第 1 梯队 (基础组)**: 执行 `RBAC-B1` 与 `RBAC-B2` (预计 0.5 天),完成数据库准备;同时执行 `RBAC-B7` 与 `RBAC-B8` (预计 0.5 天)。
- **第 2 梯队 (业务组)**:
- 后端工程师 A 攻坚 `RBAC-B3` (教师后端),前端工程师 A 攻坚 `RBAC-B5` (教师前端);
- 后端工程师 B 攻坚 `RBAC-B4` (学员后端),前端工程师 B 攻坚 `RBAC-B6` (学员前端);
- 两组完全解耦并行。
- **第 3 梯队 (质量保障组)**: 执行 `RBAC-B9` (越权审计) 与 `RBAC-B10` (全量回归与演示交付)。