From 36a616cccc3cb04eba9c80d5da9f39311d47f901 Mon Sep 17 00:00:00 2001 From: chenyuan Date: Tue, 4 Aug 2026 13:28:07 +0800 Subject: [PATCH] docs: define teacher student roster scope --- ...-04-teacher-student-roster-scope-design.md | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 docs/superpowers/specs/2026-08-04-teacher-student-roster-scope-design.md diff --git a/docs/superpowers/specs/2026-08-04-teacher-student-roster-scope-design.md b/docs/superpowers/specs/2026-08-04-teacher-student-roster-scope-design.md new file mode 100644 index 0000000..2e931d2 --- /dev/null +++ b/docs/superpowers/specs/2026-08-04-teacher-student-roster-scope-design.md @@ -0,0 +1,35 @@ +# 教师端学生管理范围设计 + +## 目标 + +学生管理只以教学班为范围,不再展示或处理行政班。不同教师身份看到并可维护的数据范围一致地由前后端执行。 + +## 规则 + +- 普通教师(角色为教师且 `teacherAdmin=false`)只能看到本人创建的教学班及其在读学生。 +- 管理员教师(角色为教师且 `teacherAdmin=true`)能看到本校全部教学班及其在读学生。 +- 班级未选择时,普通教师汇总本人教学班学生;管理员教师汇总本校教学班学生。 +- 选择教学班时,只返回该教学班学生;普通教师仅能选择本人创建的教学班。 +- 学生管理页仅展示教学班;不再展示、查询或以行政班授权。 +- 管理员教师对结果中的每名学生均可编辑、删除、初始化密码和初始化数据;普通教师仅可操作本人教学班成员。 + +## 前端 + +- 班级下拉根据登录用户的 `teacherAdmin` 和学校范围加载教学班。 +- 默认列表请求不再依赖空班级的逐行只读判定;数据由后端按身份范围返回。 +- 操作列始终渲染四个操作按钮,使用不可换行的横向布局;普通教师结果集不包含无权学生。 + +## 后端 + +- 学生列表接口从认证用户取得身份,不信任客户端传入的 `operatorId` 作为授权依据。 +- 按上述范围计算可访问教学班;未选择教学班时按该集合查询学生。 +- 编辑、删除、密码初始化、数据初始化接口以同一套“教学班成员 + 教师范围”规则鉴权。 +- 不允许以行政班作为教师端学生管理的授权或查询范围。 + +## 验收 + +1. 普通教师登录后,下拉只显示本人教学班;不选班可看到本人全部教学班学生,并可操作。 +2. 管理员教师登录后,下拉显示本校全部教学班;不选班可看到本校全部教学班学生,并可操作。 +3. 选择任一教学班后,列表仅包含该班在读学生。 +4. 操作栏四个按钮始终横向单行展示。 +5. 非本校及普通教师非本人教学班的操作请求被后端拒绝。