## 学校管理模块 ### 1. 功能概述 学校管理模块提供完整的学校组织架构和人员管理功能,包括学校信息、年级、班级、部门、教师和学生的管理。 ### 2. 核心功能 #### 2.1 学校信息管理 **功能描述**: - 管理学校基本信息(地址、电话、校长、建校时间等) - 上传学校 Logo - 设置学校网站 **用户角色**: - 超级管理员:创建和管理所有学校 - 学校管理员:管理本学校信息 **业务规则**: - 每个租户对应一个学校 - 学校信息与租户信息一对一关联 #### 2.2 年级管理 **功能描述**: - 创建和管理年级(一年级、二年级等) - 设置年级级别(用于排序) - 年级编码唯一性校验 **用户角色**: - 学校管理员:管理本学校年级 **业务规则**: - 年级编码在租户内唯一 - 年级级别在租户内唯一(用于排序) - 删除年级前需先删除所有班级 #### 2.3 班级管理 **功能描述**: - 创建和管理班级(行政班级和兴趣班) - 设置班级容量 - 管理班级学生 **用户角色**: - 学校管理员:管理所有班级 - 班主任:管理本班级学生 **业务规则**: - **行政班级(type=1)**: - 学生必须属于一个行政班级 - 一个学生只能属于一个行政班级 - **兴趣班(type=2)**: - 学生可以加入多个兴趣班 - 通过多对多关联表管理 #### 2.4 部门管理 **功能描述**: - 创建和管理部门(支持树形结构) - 设置部门层级关系 - 管理部门教师 **用户角色**: - 学校管理员:管理所有部门 **业务规则**: - 部门支持多级嵌套(树形结构) - 教师必须归属于一个部门 - 删除部门前需先转移或删除该部门下的所有教师 #### 2.5 教师管理 **功能描述**: - 创建教师账号(自动创建 User 记录) - 管理教师信息(工号、部门、科目、职称等) - 教师账号激活/停用 **用户角色**: - 学校管理员:管理所有教师 - 部门负责人:查看本部门教师 **业务规则**: - 教师账号与 User 表一对一关联 - 工号在租户内唯一 - 教师必须归属于一个部门 - 删除教师账号时,级联删除 User 记录 #### 2.6 学生管理 **功能描述**: - 创建学生账号(自动创建 User 记录) - 管理学生信息(学号、班级、家长信息等) - 学生账号激活/停用 - 管理学生兴趣班 **用户角色**: - 学校管理员:管理所有学生 - 班主任:管理本班级学生 **业务规则**: - 学生账号与 User 表一对一关联 - 学号在租户内唯一 - 学生必须属于一个行政班级 - 学生可以加入多个兴趣班 - 删除学生账号时,级联删除 User 记录 ### 3. 数据模型 ``` Tenant (租户/学校) ├── School (学校信息) [1:1] ├── Grade (年级) [1:N] │ └── Class (班级) [1:N] │ ├── Student (学生) [1:N, 仅行政班级] │ └── StudentInterestClass [N:M, 仅兴趣班] ├── Department (部门) [1:N, 树形结构] │ └── Teacher (教师) [1:N] └── User (用户) [1:N] ├── Teacher [1:1] └── Student [1:1] ``` ## 技术架构 ### 4. 关键业务规则 1. **数据隔离**:所有数据通过 `tenantId` 实现租户隔离 2. **用户统一**:教师和学生都基于 User 表,通过扩展表存储特定信息 3. **级联删除**:删除租户时,级联删除所有相关数据 4. **限制删除**:删除部门/班级前,需先处理关联的教师/学生 ### 1. 后端架构 ``` backend/ ├── src/ │ ├── school/ # 学校管理模块 │ │ ├── schools/ │ │ ├── grades/ │ │ ├── classes/ │ │ ├── departments/ │ │ ├── teachers/ │ │ └── students/ ``` ### 2. 前端架构 ``` frontend/ ├── src/ │ ├── views/ │ │ ├── school/ # 学校管理页面 │ │ │ ├── schools/ │ │ │ ├── grades/ │ │ │ ├── classes/ │ │ │ ├── departments/ │ │ │ ├── teachers/ │ │ │ └── students/ ``` ## 权限设计 ### 1. 角色规划 **学校管理员(school_admin)**: - 学校管理:school:\* - 年级管理:grade:\* - 班级管理:class:\* - 部门管理:department:\* - 教师管理:teacher:\* - 学生管理:student:\* **教师(teacher)**: - 比赛查看:contest:read - 比赛报名:contest:register - 作品提交:work:submit - 作品查看:work:read - 学生管理:student:read(本班级) **学生(student)**: - 比赛查看:contest:read - 比赛报名:contest:register - 作品提交:work:submit - 作品查看:work:read(自己的作品) - 结果查看:result:read ### 2. 权限编码 #### 2.1 学校管理权限 ``` school:create # 创建学校 school:read # 查看学校 school:update # 更新学校 school:delete # 删除学校 grade:create # 创建年级 grade:read # 查看年级 grade:update # 更新年级 grade:delete # 删除年级 class:create # 创建班级 class:read # 查看班级 class:update # 更新班级 class:delete # 删除班级 department:create # 创建部门 department:read # 查看部门 department:update # 更新部门 department:delete # 删除部门 teacher:create # 创建教师 teacher:read # 查看教师 teacher:update # 更新教师 teacher:delete # 删除教师 student:create # 创建学生 student:read # 查看学生 student:update # 更新学生 student:delete # 删除学生 ```