Commit Graph
9 Commits
  • 实验课现在直接进入普通排课流程,不再要求先到实验排课模块逐个安排。
    普通“添加排课”新增“理论课 / 实验课”类型。
    自动排课会分别补足理论学时和实验学时。
    实验课只能安排到实验室、实训室、机房、语音室等场地。
    发布课表时分别校验理论、实验学时;任一未排足都不能发布。
    普通课表及 Excel 导出会标注“实验课”。
    历史排课保持不变,迁移后默认识别为理论课;后续新建或修订版本时再补充实验课。
  • 已改成“普通排课与实验学时分离”:
    普通课表学时 = 总学时 − 实践学时。
    自动排课、手工排课、课表发布都会阻止把实践学时重复排入。
    全部为实践学时的课程应设为“非排时课程”,再由实验管理安排。
    教学任务和排课页面会显示“常规 / 实践学时”。
    已有教学任务即使仍保存旧周学时,排课时也会按拆分后的课程学时计算。
    无需数据库迁移。
  • 排课计算、课表发布、补考自动编排三类任务统一接入消息系统。
    业务任务与 Outbox 消息同一事务落库,避免“数据库成功但消息没发出去”。
    RabbitMQ 使用持久化消息、发布确认、手动 ACK、Quorum Queue、死信队列。
    增加处理租约、心跳、异常重试、最大重试次数和幂等状态控制。
    保留 InMemory 模式,开发环境无需安装 RabbitMQ。
    支持多实例竞争消费,后续可以横向扩容。
    新增 /health/messaging 消息系统健康检查。
  • 已改成后台“检查并发布”任务,原来的超时主要就是同步逐条校验导致的。
    发布接口立即返回 202 Accepted,页面轮询显示检查进度。
    校验改为批量读取,减少重复数据库查询。
    检查失败保留草稿并显示具体原因;成功后原子完成旧课表归档和新课表发布。
    同一学期禁止两个发布任务并发,服务重启后未完成任务会自动恢复。
    发布期间锁定编辑、自动排课等冲突操作。
    已补齐 SQLite 开发迁移及 MySQL 生产迁移。
  • 自动排课完成后逐条显示“需人工处理”的任务和原因,并提供“检查排课约束”入口;刷新页面后仍可读取最近一次结果。
    批量排课约束新增校区、教学楼、多教室统一指定,也支持清除原有限定。
    课表新增“总视图”,同一时段、不同周次课程会并列显示。
    周视图按教学周过滤,支持上一周、下一周、周次下拉和回到本周。
    日视图按周次过滤;连续两节课程会跨两行完整占格。
  • 教学任务按 授课周数 × 周学时 = 课程总学时 双端校验,不匹配会显示具体差额并阻止保存;公共课批量生成同样校验。
    排课约束增加课程、教师、学院、授课方式、场地要求、约束状态筛选,并支持批量修改当前筛选结果。
    新增“非排时课程”授课方式:不进入自动排课
    不占星期、节次和教室
    不阻塞课表发布
    允许正常选课
    在班级课表和学生个人课表中单独展示
  • 主要改动:
    自动排课接口立即返回 202 + jobId
    后台服务独立执行,不受浏览器关闭或前端超时影响
    进度、成功、失败状态持久化到数据库
    服务重启后自动恢复排队中或中断的任务
    同一草稿禁止重复提交后台任务
    运行期间禁止编辑、发布或删除该课表
    排课结果和任务成功状态在同一事务中提交
    前端每秒轮询进度,显示已处理教学班和已规划安排数
  • 自动排课:保留手工安排,按教师、行政班、周次、节次、容量和场地约束补排。
    课程约束:可限定校区、教学楼、指定教室、允许上课日、最早/最晚节次。
    无教室课程:教室可为空,但仍校验教师和班级冲突。
    作息维护:按学期维护节次、上下课时间和启用状态。
    发布保护:发布前重新检查全部约束,并阻止学时未排满的课表发布。
    工作台升级:增加“排课规则与作息”“自动排课”入口,自动生成后仍支持手工微调。
    同时兼容 SQLite 和 MySQL,已生成正式迁移。
  • 排课版本新建、编辑、复制、发布、归档和删除。
    周课表视图,支持12节课、单双周和起止周。
    自动校验教师、行政班、教室、时间段冲突。
    校验教室容量、教学任务状态和学期范围。
    SQLite 开发环境自动升级,MySQL 提供正式 EF Core 迁移。
    Vue 已编译为静态文件并随 ASP.NET Core 发布,无需 npm run dev。
    桌面端和390px移动端页面均已验收。