library-picturebook-activity/docs/SCHOOL_MODULES.md
2025-12-09 11:10:36 +08:00

245 lines
5.7 KiB
Markdown
Raw Permalink 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.

## 学校管理模块
### 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 # 删除学生
```