Files
Academic-Affairs-System/README.md
T
biss 7f3e37de20 已完成“考试安排与考场管理”模块:
考试计划草稿、场次配置与正式发布。
教学班、考试时间、考场、监考教师关联。
自动校验考场容量。
阻止考场、监考教师和学生考试时间冲突。
管理员查看考生名单。
教师查看个人监考安排。
学生查看已发布考试日程。
SQLite 增量升级和 MySQL 正式迁移。
2026-07-24 15:43:55 +08:00

81 lines
4.2 KiB
Markdown
Raw 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.
# 明序教务管理系统
面向普通高校的教务管理系统。后端使用 ASP.NET Core 10、EF Core 10,前端使用 Vue 3、TypeScript 和 Element Plus。
当前已实现系统登录与角色权限、基础数据、用户管理、教师档案、学生档案、课程库、培养方案、教学任务、排课课表、学生选课、成绩管理、考试考场和首页统计。人员及课程列表支持组合筛选、服务端分页和完整增删改查;培养方案支持课程模块、专业年级版本、复制新版本、发布锁定和旧版本归档;教学任务支持学期课程开设、多教师、合班、容量校验、发布与结课;排课支持单双周、周次节次、教室容量、教师/行政班/教室冲突校验和版本化发布;选课支持批次时间窗、投放范围、容量与学分上限、重复课程与课表冲突校验、退课截止时间和实时教学班名单;成绩管理支持分项比例、批量录入、特殊考试状态、自动总评与绩点、教师提交、学院审核、校级发布和学生成绩单;考试管理支持考试计划、场次、考场容量、监考教师、考生名单以及考场/监考/学生时间冲突校验。
权限采用后端强制校验的角色与数据范围模型。多角色账号按 `All > College > Class > Self` 取最高数据范围:校级角色可访问全校数据,院系管理员限定本学院,辅导员通过稳定的账号 ID 绑定所带行政班,教师和学生限定本人及当前教学关系;前端菜单和路由限制仅作为交互辅助,不替代 API 授权。
## 本地开发:热更新模式
本地开发固定使用 SQLite。首次启动会自动创建 `src/Jiaowu.Api/data/jiaowu-dev.sqlite` 并写入演示组织数据。
```powershell
dotnet run --project src/Jiaowu.Api
```
另开一个终端:
```powershell
Set-Location web
npm install
npm run dev
```
访问 `http://localhost:5173`。本地开发会自动创建以下分级权限账号:
| 数据范围 | 账号 | 密码 |
| --- | --- | --- |
| 超级管理员 | `admin` | `Admin@123456` |
| 校级教务 | `academic` | `Academic@123456` |
| 学院教务 | `college` | `College@123456` |
| 所带班级 | `counselor` | `Counselor@123456` |
| 教师本人 | `teacher` | `Teacher@123456` |
| 学生本人 | `student` | `Student@123456` |
| 领导查看 | `leader` | `Leader@123456` |
## 本地开发:单服务模式
不需要前端热更新时,可以先把 Vue 编译进 API 的 `wwwroot`
```powershell
npm --prefix web run build
dotnet run --project src/Jiaowu.Api
```
访问 `http://localhost:5255``/api` 和静态页面由同一个 ASP.NET Core 服务提供,`/base-data` 等前端路由刷新时也会回退到 `index.html`
## MySQL 部署
非 Development 环境只允许使用 MySQL。`dotnet publish` 会自动执行 `npm ci``npm run build`,并将 Vue 静态文件放入发布目录的 `wwwroot`
```powershell
$env:ASPNETCORE_ENVIRONMENT = 'Production'
$env:Database__Provider = 'MySql'
$env:ConnectionStrings__MySql = 'Server=127.0.0.1;Port=3306;Database=jiaowu;User=YOUR_USER;Password=YOUR_PASSWORD;'
$env:Jwt__Key = '至少32字节的随机生产密钥'
dotnet publish src/Jiaowu.Api -c Release -o .artifacts/publish
.artifacts/publish/Jiaowu.Api.exe
```
如需在特殊流水线中跳过自动前端构建,可传入 `-p:BuildFrontendOnPublish=false`
生产环境不会创建默认管理员。首次部署前可以临时配置 `SeedAdmin__UserName``SeedAdmin__Password``SeedAdmin__DisplayName`,账号创建后移除这些配置。
生产数据库使用 MySQL 专用 EF Core 迁移。部署前先恢复仓库工具并检查迁移:
```powershell
dotnet tool restore
dotnet ef migrations list --project src/Jiaowu.Api --startup-project src/Jiaowu.Api
```
应用启动时会自动执行尚未应用的 MySQL 迁移。SQLite 只用于本地开发:新库通过 `EnsureCreated` 建立,已有开发库通过轻量、版本化的本地升级脚本补齐结构,不需要手动删除数据文件。SQLite 文件不能用于生产。
## 验证
```powershell
dotnet test Jiaowu.slnx
npm --prefix web run build
pwsh.exe -NoLogo -NoProfile -NonInteractive -File scripts/smoke-test.ps1
```