Skip to content
 
 

Repository files navigation

学校排课、调课与代课管理系统 · Course Scheduling System

CI License: MIT

开源免费、单校自建、纯 Web 的中小学排课、调课与代课管理系统。 适用于小学、初中、普通高中、综合高中和中职,以排课管理员的日常工作流程为中心设计。

系统覆盖学期基础数据、教学任务、手动与自动排课(OR-Tools CP-SAT 引擎),以及学期中的请假、调课、代课、通知和课时统计。使用 Docker Compose 即可部署到校内主机,业务数据保存在学校自己的环境中。

English summary: A free, open-source (MIT), self-hosted scheduling, course-change, and substitute-teaching system for schools in mainland China. It provides a Simplified Chinese interface, Gregorian academic years, the Asia/Shanghai timezone, manual and automatic scheduling, leave handling, notifications, exports, and backups.


功能总览

领域 内容
基础数据 学期与作息时间表、教师、班级、科目、教室/场地、Excel 导入、设置向导、开新学期复制、班级作息时间表指派
教学任务与手动排课 教学任务管理(走班群组、协同教学、连堂)、课时实时统计、拖拽式周课表、单格冲突检查(<100ms)、多草稿版本管理与发布
自动排课 OR-Tools CP-SAT 引擎,H1–H10 硬约束 + S1–S8 软约束加权;后台求解显示实时进度;无解时以教务语言定位冲突并支持部分排课
调课与代课 请假登记与受影响节次展开、代课推荐引擎、调课验证、指派即生效、站内+Email 通知与确认、今日看板与 A4 公告打印、月结课时统计(Excel)
报表/导出 班级、教师、教室/场地课表导出 Excel / PDF(内嵌中文字体)/ PNG、全校总表、批量 ZIP
运维 每日自动备份 + 手动备份 / 下载 / 上传恢复(恢复前自动保护、恢复后强制重登)、审计记录、RBAC(管理员/主任/排课管理员/教师)

快速开始

需先安装 Docker完整步骤(含 Windows / Linux / NAS)见 部署手册

一键安装脚本(推荐新部署)

脚本会询问学校名称、管理员密码和对外端口,并自动生成密钥;执行前会先检查同名项目,避免误接管另一套部署。

Windows(PowerShell):

Invoke-WebRequest https://raw.githubusercontent.com/sine-io/Course_Scheduling_System/main/install.ps1 -OutFile install.ps1
.\install.ps1

Linux / macOS / NAS:

curl -fLO https://raw.githubusercontent.com/sine-io/Course_Scheduling_System/main/install.sh
bash install.sh

脚本刻意采用“先下载、再执行”的方式,方便学校管理员先检查内容;更多选项见安装指南

拉取官方镜像(推荐)

mkdir scheduling && cd scheduling
curl -fLO https://raw.githubusercontent.com/sine-io/Course_Scheduling_System/main/docker-compose.yml
curl -fL  https://raw.githubusercontent.com/sine-io/Course_Scheduling_System/main/.env.example -o .env
# 编辑 .env:改 ADMIN_PASSWORD、SCHOOL_NAME、SECRET_KEY
sudo docker compose pull
sudo docker compose up -d

从源代码构建

git clone https://github.com/sine-io/Course_Scheduling_System.git
cd Course_Scheduling_System
cp .env.example .env      # 改 ADMIN_PASSWORD、SCHOOL_NAME、SECRET_KEY
sudo docker compose up -d # 首次会构建镜像,需数分钟

启动后开浏览器连 http://<主机IP>(本机为 http://localhost),以 .env 的管理员账号和密码登录,依设置向导完成构建。

想先体验系统? 可在首次设置向导中直接加载示例数据,也可在全新系统的“系统管理 → 示例数据”中加载:系统会生成一套虚构的国内初中示例,包含 18 个班、49 位教师、252 条教学任务、16 个科目和每周 594 课时。示例数据仅用于功能演示,不代表任何学校或政策。

  • 健康检查:http://localhost/api/health{"status":"ok"}
  • 容器状态:sudo docker compose ps(六个容器均应为 healthy)

硬件最低需求

2 核 / 4GB RAM / 10GB 磁盘(自动排课建议 4 核 8GB)。支持 x86-64 与 ARM64(NAS / 树莓派)。


页面

排课工作台(拖拽排课、三视角、实时冲突检查) 自动排课(进度、软约束达成度)
排课工作台 自动排课
今日调课与代课看板(可打印 A4 通知单) 课表查询与导出(Excel / PDF / PNG)
今日调课与代课 课表查询

完整逐章图解见排课管理员操作手册


文件

文件 内容
排课管理员操作手册源文件 面向用户:设置向导、教学任务、排课、调课与代课、导出、备份和常见问题
部署手册 给安装者:安装、升级、备份、域名 HTTPS、FAQ
架构设计 需求、数据模型、排课引擎和技术栈(架构规范来源)
开发任务卡 Milestone 与逐卡实现记录
变更记录 各版本变更
贡献指南 开发环境、程序风格、测试、发布流程

离线阅读docs/ 下的部署与开发 Markdown 文档均有对应的 .html 文件。可直接用浏览器打开,无需联网;修改 Markdown 后运行 python scripts/build_docs.py 重新生成,CI 会检查两者是否同步。


技术栈

技术
前端 Vue 3 + TypeScript + Vite + Pinia + Naive UI
后端 Python 3.12 + FastAPI + SQLAlchemy 2 + Pydantic v2
排课引擎 Google OR-Tools CP-SAT(RQ + Redis 背景执行)
导出 openpyxl(Excel)、WeasyPrint(PDF,内嵌 Noto CJK)、poppler(PNG)
数据库 PostgreSQL 16
反向代理 Caddy(内网 HTTP;设域名即自动 HTTPS)
部署 Docker Compose(6 容器:web / api / worker(排课)/ worker-ops(导出·备份·定时)/ postgres / redis)

项目状态

v1.2.0 已发行(2026-08-02)。 六大里程碑 M0–M5 全部完成,功能齐备并经完整验收;本版加入可配置学校名称、国内示例数据、教学任务超课时上限、一键安装脚本和离线文档。官方镜像(amd64 + arm64)已发布于 GHCR。

请直接从最新版开始安装(见上方快速开始);v1.2.0 是目前建议使用的版本。各版变更见 CHANGELOG,开发历程见 docs/tasks.md

系统仍在实际校园环境试用中。如果你是第一批用户,欢迎通过 Issues 报告问题。


反馈问题与意见反馈

发现错误、有功能建议,或想分享贵校的使用经验,都非常欢迎:

  • 反馈问题 / 提出建议:在本项目创建 GitHub Issue;附上操作步骤和 sudo docker compose logs 片段有助于更快定位问题。

这套系统是为第一线排课管理员而写的,你的实际使用反馈对它的改进最有帮助。

授权

MIT — 可自由使用、修改、散布。欢迎各校自架与二次开发。

执行时使用的第三方组件与其授权见 THIRD-PARTY-NOTICES.md(均与 MIT 兼容)。

About

開源免費、單校自架的中小學排課與調代課系統(國小/國中/高中職)。Free, self-hosted course-scheduling & teacher-substitution system for Taiwan K–12 schools.

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages