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