WARNING

本文档已随「自动任务」升级(任务 + 条目模型)更新,部分内容尚未经过人工复核。如果无法解决问题或需要协助部署,可邮箱联系:kuohu@getastra.cn

自动任务

管理系统中的定时自动化任务。任务支持六种类型(调休、作息表调整、课程表调整、调课、全部调整、客户端配置)与五种生效条件(单日、日期范围、每周轮换、时刻事件、cron)。任务列表按状态排序:生效中 > 待生效 > 已过期,生效中内部按优先级降序排列。

列表页面

表格展示所有自动任务,包含以下列:

列说明
名称任务名称,未填写时显示「未命名任务」
类型彩色标签:调休(橙)、作息表调整(蓝)、课程表调整(绿)、调课(红)、全部调整(灰)、客户端配置(紫)
生效域任务的作用范围,显示为标签列表(学校/年级/班级)
内容首条条目的「条件 · 内容」摘要,多条条目时显示「等 N 条」
条目任务内条目数量
优先级数字标签,数值越高执行优先级越高
状态待生效(黄)、生效中(绿)、已过期(红)、已停用(灰)
快捷操作修改(跳转编辑页)、删除(需密码确认)

右上角提供「新增」「清理已过期」「刷新」三个按钮:

  • 清理已过期:一键删除所有「已过期」且未停用的自动任务,需要二次密码确认,完成后提示删除条数。被停用的任务会保留;后端也可通过 autorun.auto_clean 自动清理(见服务端配置)。

自动任务列表页

新增/编辑页面

基本字段

  • 任务名称:可选,便于在列表中识别;留空时按任务内容生成 ID,不影响功能。
  • 类型:下拉选择六种任务类型之一。

任务类型下拉(六种类型)

  • 生效域:多选下拉,选项按学校/年级/班级三级列出。选中上级后其下级选项自动禁用(由上级范围覆盖)。
  • 优先级:数字输入,决定当多个任务同时生效时的执行顺序。
  • 启用:关闭后任务不参与课表解析(列表显示「已停用」)。

条目

每个任务包含一条或多条条目,条目之间共享类型、生效域与优先级。条目卡片头部显示该条目的条件与内容摘要,并提供启用开关、复制、删除操作;页面底部可「添加条目」。

生效条件

条件需要填写
单日日期
日期范围起始日期、结束日期;可选「限定星期」
每周轮换每 N 周、周期内第几周;可选「限定星期」与周期起止日期
时刻事件事件类型(客户端启动 / 第 N 节课上课 / 第 N 节课下课);上课、下课事件需填节次
cron5 字段表达式(分 时 日 月 周)与持续分钟数(0 表示持续到下一次命中)
NOTE

「时刻事件」只对客户端配置类型开放:这类条件的时刻由客户端按当天作息表本地判定。

内容(按类型)

  • 调休(COMPENSATION):填写「借用哪一天的课(useDate)」。页面上方提供「导入全年调休」入口,以及在条目内按节假日/工作日互相反推的按钮。
  • 作息表调整(TIMETABLE):选择该条件生效期间使用的作息表。选项来自生效域内各年级作息表的交集,因此需要把生效域选到具体的年级或班级。
  • 课程表调整(SCHEDULE):按节次填写科目,或点击「按当前课表自动填充」(需要条目条件为「单日」)。系统会检测各班节次数是否一致,不一致时弹出冲突提示。
  • 调课(LESSON_SWAP):填写要互换的两端「日期 + 节次」。等效于两条课程表调整,但精确到某一天具体的课,不必把多个调课堆在同一条任务下维护;生效条件由两端日期自动生成。
  • 全部调整(ALL):同时选择作息表与课程表。
  • 客户端配置(CLIENT_CONFIG):对「窗口置顶 / 上课隐藏 / 始终缩小 / 课上计时」逐项选择 不变 / 开启 / 关闭。

编辑视图

编辑器提供三种视图,适用范围各不相同:

  • 条目列表:全部任务类型。逐条编辑条件与内容,适合混合条件(例如一条单日条目 + 一条范围条目)。
  • 轮换表:除调休与调课之外的类型。把「每 N 周的第 X 周」聚合成一张 N 行的表,每行填写该周的配置;保存时会展开为 N 条「每周轮换」条目。
    • 已存在的任务若全部由同周期的每周轮换条目组成,打开轮换表视图时会自动还原成表格,可随时切回条目列表。
    • 「课程表调整 / 全部调整」类型在轮换表中需要先选择「课程模板日期」,自动填充会按该日期所在星期取模板。
  • 逐节轮换:仅「课程表调整」类型。按「星期 + 节次」组织,每一节单独设置自己的轮换周期,不必为了照顾周期最长的节把整周凑成最小公倍数。

逐节轮换视图

页面按天分组,每天包含:

  • 课表横条:按当前预览周渲染当天的课程单字,格子上方是节次序号,并按该天作息表的分隔线配置插入分隔线,用来确认「第 N 节」究竟是哪一节。
  • 逐节编辑行:一节一行,逐周选择科目;「+周」为该节增加一个轮换周,「删除」移除某一周。

保存时按天计算 N = 各节轮换周数的最小公倍数,展开为 N 条「每周轮换」条目(限定星期为该天):服务端命中某一条后整张覆盖当天的课表。因此:

  • 第一节两周一换、第十节三周一换时,这一天会展开为 6 条条目,但界面上只需分别配置 2 周和 3 周。
  • 某天的轮换周期超过 52 周时该天会被拒绝保存并提示,避免展开出上百条条目。
  • 允许留空科目:空科目与课表配置里的空槽行为一致。

从班级课表导入

「从班级课表导入」把课表配置中已经写好的多周轮换直接转成逐节轮换:

  1. 把生效域限定为一个班级——条目是任务级配置,多班生效域会把该班课表套用到其它班。
  2. 点击「从班级课表导入」,读取该班级的课表配置,只导入含多周轮换的天,其余天保持原样。
  3. 校验后保存,展开为若干条「每周轮换」条目。

导入只是把旧配置翻译成自动任务,不会改动原课表:自动任务在课表解析时覆盖当天的课程,任务停用或过期后会回落到课表配置里的原值。

保存

  • 保存需要二次密码验证(与其它写操作一致)。
  • 编辑已有任务时按主键原地更新,唯一 ID 与创建时间保持不变。
  • 保存后服务端会按新旧生效域的并集向在线客户端广播配置刷新。