This commit is contained in:
biss committed 2026-09-07 19:34:03 +08:00
1 parent cec56564b5
commit ae075bda6d
32 files changed
+10052 -90

No files matched your search

+16
View File
@@ -692,3 +692,19 @@ Docker 镜像不包含 `.env`、数据库密码或 JWT 密钥。应用容器以
dotnet test Jiaowu.slnx
npm --prefix web run build
```
## 人员、课程、学期与成绩归档
人员和课程列表默认显示未归档记录,可切换“已归档”或清空筛选查看全部;成绩管理提供同样的归档筛选。学期管理保留当前和历史学期展示,并可按归档状态筛选。各页面均提供单条、批量归档及恢复,提交前展示阻断事项和处理入口,归档或恢复原因必填,每批最多 100 条。批量请求逐项重新校验和提交,显示每条记录的处理结果。
- 人员:学生毕业/退学、教师退休/离职后可归档;归档前检查相关未结课任务、未发布成绩、学生待审批事项和必办离校事项。恢复不会变更学籍、任职状态或登录账号状态。
- 课程:未结束教学任务,以及在读学生适用的已发布培养方案会阻止归档。已归档课程退出新开课和课程申报选项;已有培养方案、教学任务和成绩引用保留。课程启停状态独立于归档状态。
- 学期:当前学期不可归档;开放选课批次、未结束教学任务、未建册或未发布成绩需要先处理。恢复后仍为历史学期,不会自动设为当前。归档不会连带归档人员、课程,也不冻结补考和成绩更正。
- 成绩:以教学班成绩单为单位,仅允许已发布且没有待审批成绩更正的成绩单归档。归档标记独立于发布状态,成绩单、绩点、毕业审核和历史统计继续使用原正式成绩;更正仍走既有审批流程。
已归档人员、课程和学期不能直接编辑或删除;人员、课程和学期 Excel 导入不能覆盖已归档记录,导出遵循列表归档筛选。教学任务发布和撤销结课会检查已归档的学期、课程与教师。归档操作按原有角色及学院范围授权,课程继续执行公共课校级维护规则,学期由校级管理员管理。每次状态变化保留操作者、时间和原因,恢复不删除历史日志。
统一接口为 `POST /api/archives/{kind}/preview`、`POST /api/archives/{kind}/apply` 和 `GET /api/archives/{kind}/{id}/history?page=1`,其中 `kind` 为 `teachers`、`students`、`courses`、`terms`、`grades`。原学期归档接口继续可用并复用同一校验流程。历史日志按每页 20 条读取,旧归档记录不会伪造操作日志。
数据库新增 `20260905093721_UnifiedArchiving` MySQL 迁移;SQLite 开发库由 `DevelopmentSqliteMigrator` 补齐字段和归档日志表,已有记录默认未归档,已有学期归档状态保留。部署时应按现有数据库升级流程应用迁移。