DANGER

本页由 AI 工具参考代码编写,尚未经过人工审核,内容仅供参考。如果无法解决问题或需要协助部署,可邮箱联系:kuohu233@qq.com

自动任务与调休

自动任务是 AstraSchedule 最具特色的功能之一,用于处理调休、作息表变更、课程表调整等需要按日期范围自动生效和恢复的场景。所有自动任务均在管理端配置,由服务端在客户端请求配置时根据日期条件动态应用。

四种任务类型

系统支持四种自动任务类型,覆盖不同的配置调整场景:

类型编号类型名称说明
0调休(Compensation)将指定日期的工作日与节假日互换。例如国庆调休中,周六变为工作日(上周一的课),周一变为休息日。
1作息表调整(Timetable)在指定日期范围内临时更换作息时间表。例如运动会当天使用特殊的作息安排。
2课程表调整(Schedule)在指定日期范围内临时更换某一天的课程安排。例如期末考试期间更改当天的课表。
3全部调整(ALL)同时应用作息表和课程表的调整,即类型 1 和类型 2 的组合。

每项任务包含生效日期范围(开始日期和结束日期)、优先级、生效域和类型相关的配置参数。

生效域

生效域(scope)决定自动任务应用于哪些班级。生效域采用三级层次结构:

  • 学校级(如 39):对整个学校的所有班级生效。
  • 年级级(如 39/2023):对特定年级(即入学年份为 2023 年的年级)的所有班级生效。
  • 班级级(如 39/2023/1):仅对指定的单个班级生效。

管理端在创建任务时提供级联选择器,自动根据所选级别确定生效范围。系统会对生效域进行规范化处理,并在任务列表中显示生效域的可读描述。

优先级排序

自动任务列表按以下规则排序:

  1. 状态优先:生效中的任务排在最前,其次为待生效任务,最后为已过期任务。
  2. 优先级降序:同一状态的任务中,优先级数值越大的排在越前面。

当多个任务同时生效且存在冲突时,优先级更高的任务优先生效。系统不会自动检测任务间的配置冲突——请在创建任务时合理规划优先级,避免多个任务覆盖同一配置项造成不可预期的结果。

状态管理

每项自动任务具有三种生命周期状态:

  • 待生效(状态标记为 warning 色):当前日期尚未到达任务的开始日期,配置尚未应用。
  • 生效中(状态标记为 success 色):当前日期在任务的开始日期和结束日期之间(含首尾),配置已生效。
  • 已过期(状态标记为 error 色):当前日期已超过任务的结束日期,配置已自动恢复为任务生效前的状态。

状态判断基于服务端的当前日期与任务的日期范围比较。任务过期后,服务端会将其标记为已过期状态,不再将其配置纳入客户端的请求响应中。任务本身不会自动删除,便于日后查阅或重新启用。

调休数据

调休任务(类型 0)涉及节假日与工作日的双向转换。系统提供以下数据查询方式:

节假日与工作日双向查询

管理端在配置调休任务时,提供两个方向的自动填充接口:

  • 根据节假日查工作日:输入一个节假日期,系统返回该日期对应的补班日(工作日),帮助确定需要上课的日期。
  • 根据工作日查休息日:输入一个应上班但因调休变为休息日的日期,系统返回对应的休息说明。

两种查询均通过服务端 API 实时返回结果,确保数据准确。

全年调休批量导入

管理端提供全年调休批量导入功能。操作方法:

  1. 进入"实用工具"页面,点击"调休导入"入口。
  2. 选择目标年份,系统自动调用 API 获取该年份的全部节假日与工作日对应关系。
  3. 系统逐条创建调休类型的自动任务,每条任务包含一个节假日→工作日的转换关系。

批量导入适用于学期初一次性配置全年的调休安排,避免逐条手动录入。

自动填充课程模板

在创建"课程表调整"或"全部调整"类型的任务时,系统提供自动填充课程模板功能。点击"自动填充"按钮后:

  • 系统获取生效域内所有班级在目标工作日(星期几)的现有课表作为模板。
  • 如果多个班级的课表一致,自动填充到任务配置中。
  • 如果不同班级的课表节数不一致,弹出冲突提示框,列出差异详情。

自动填充可大幅减少手动录入课表的工作量,尤其适用于在多个班级之间统一调整课表的场景。

冲突检测

系统在保存任务前执行基本的冲突检测:

  • 生效域冲突:当多个任务覆盖同一个班级且在日期上有重叠时,系统不会自动阻止,但会在客户端渲染时按优先级选取生效的配置。建议在创建任务前检查已有任务列表,避免意外覆盖。
  • 课表节数冲突:在使用自动填充功能时,如果多个班级的课表节数不同,系统会提示冲突。此时需要手动选择其中一个班级的课表作为模板,或逐班单独创建任务。

冲突检测并非强制性阻止,而是提供信息供操作者判断。对于复杂的多班级场景,建议逐班创建独立任务,确保每个班级的配置精确可控。