48 lines
3.9 KiB
Markdown
48 lines
3.9 KiB
Markdown
---
|
|
title: 课表
|
|
description: 日课表、共享作息、轮换、临时换课和教学周。
|
|
---
|
|
|
|
# 课表
|
|
|
|
Web 管理端统一从「教学事务 → 课表档案」查看周课表并编辑时间表与日课表,客户端提供“今天”时间轴和“本周”视图。
|
|
上课状态、灵动岛课程提醒和紧急通知确认共用服务端的课表判定。
|
|
|
|
编辑工作区参照 [ClassIsland 档案编辑器](https://github.com/ClassIsland/ClassIsland/blob/master/ClassIsland/Views/ProfileSettingsWindow.axaml) 的布局与交互实现,使用独立的深色全屏工作区。顶部切换课表、时间表、科目和调课;默认以周网格展示课程,右侧提供科目简称面板,底部可切换列表、周和月视图。旧管理页地址 `/schedules` 自动进入同一工作区,点击「返回管理」回到管理端。
|
|
|
|
点击每天列头的「新课表」选择时间表并创建日课表。点击网格中的课时后可用右侧科目按钮快速填充,支持选择是否自动移动到下一节;方向键可移动焦点,Delete 可清空选中课程。课表名称、时间表、启用星期、轮换规则、生效周次与群组在「详细信息」中维护。
|
|
|
|
列表视图保留批量排课、复制粘贴、拖动交换课程等操作;时间表页支持拖动时间点排序、任意分钟输入,以及上课、课间、分割线、行动四种时间点。设置的课程/课间分钟数用于新建时间点的默认起止时间。编辑完成点击「保存」或按 Ctrl+S;切周与实时刷新保留草稿,切换班级和离开页面时提醒未保存的修改。
|
|
|
|
完整档案可在页头「导入/导出」中导入或导出 JSON,保留轮换、时间点类型、空课、停用、群组和预定。月视图提供日期导航,点击日期后由服务端解析教学周并进入周视图。
|
|
|
|
## 日课表与时间表
|
|
|
|
时间表保存时间点:上课、课间、分割线、行动;日课表引用时间表,每节课程通过外键关联时间点。
|
|
可以维护多套班级作息或共享作息、复制日课表、调整课程、配置启用规则和群组。
|
|
时间点排序不会改变课程关联。行动配置当前保存数据,不执行外部动作。
|
|
|
|
日课表按星期、周次范围和轮换规则启用,支持 1–9 周轮换;单双周是 2 周轮换的特例,第 1 教学周为单周。
|
|
可以预定某天使用某张表,临时换课/叠加层保留原表。相同日期的最终启用选择由服务端唯一解析器完成。
|
|
|
|
## 教学周
|
|
|
|
班级有自己的学期周数;全校上限由“学期周次”设置,默认 30、可设 1–60,班级不能超过该上限。
|
|
默认班级周数为 20。管理员可在界面修改全校开学日和逐周起止区间,班级可有独立设置。
|
|
计算优先使用班级逐周区间、再全校区间;无适用区间时按开学日线性计算。
|
|
开学日解析还会参考第 1 周起点,环境变量 TERM_START_DATE 是兜底,具体顺序见 `lib/term.ts`。
|
|
|
|
## 上课状态与提醒
|
|
|
|
`GET /api/schedules/current?classId=<id>&at=<ISO时间>` 返回 inClass/current/next/week/serverTime 等状态;at 用于诊断。
|
|
`/schedules` 是新模型的兼容门面,旧 Schedule 只保留迁移审计记录。
|
|
经典岛普通通知上课暂存、下课补弹;普通叫人保留可点击胶囊,紧急消息立即展开。
|
|
自定义常驻岛先显示铃铛,由用户主动查看。紧急通知在课堂发布仍需服务端二次确认。
|
|
|
|
## 权限与导入
|
|
|
|
日课表写入需 schedule:write,并通过管理员或本班班主任检查;时间表写入需 timetable:manage。
|
|
离线导入完整 ClassIsland 档案可创建班级自有作息,不依赖在线联动插件。
|
|
完整导入保留 1–9 周轮换、空课、停用、群组和预定;旧预览界面的单双周展示不代表新模型只能表达双周。
|
|
见[表格与课表导入](imports.md)。修改后广播 schedule:updated,客户端刷新。
|