現行桌面排課系統是 Windows 單機程式,以本機演算法排課、資料存本機,多人協作與遠端存取困難。新平台在保留領域模型的前提下,全面 Web 化並改用 AI 排課。
務實可用為原則:AI 當排課引擎、程式當把關者,每一步都可稽核、可回復。
AI 產生課表,系統以確定性驗證器檢查硬條件,把違規回饋 AI 只修那幾格——絕不信任 AI 自述正確。
排課耗時且花 API 費用,一律走背景佇列 Job;前端輪詢/SSE 顯示第幾批、目前違規數與花費。
全校共同科目、班級手排課在排課時轉為 locked 格,AI 只能在其餘時段安排,維持既定安排不變。
每次排課 = 一個 timetable_run 版本,可比較多方案、可回滾,現有課表匯入為唯讀基準版。
走 AiSchedulerClient 抽象介面,Claude/OpenAI/Gemini 可設定切換、可比價、可降級,不綁單一模型。
送 AI 前先跑「應排 vs 總節數、漏配重配、衝突」報表,擋掉排不出的資料,省 API 費用並提升成功率。
核心排課由 AI 產生;為讓它在全校規模下可靠,系統加上確定性驗證與「把違規回饋 AI 修補」的迭代迴圈,逼模型收斂到零硬違規。
教師/班級/科目/教室/開課配課/固定格+硬軟條件,整理成結構化 JSON。
依批次策略組 prompt,模型以嚴格 JSON schema 回傳課表片段。
解析回應、外鍵校驗,寫入暫存課表。
ConstraintValidator 列出所有衝堂/超額等硬違規。
把違規清單回饋 AI 只修那幾格,迭代到零違規或轉人工。
沿用老師熟悉的操作概念,降低學習與遷移成本。
| 模組 | 功能分類 | 內容 |
|---|---|---|
| 基本資料管理 | 基本資料 | 教師/班級/科目/教室/群組/共同科目/手排課/每天節數/開課配課 CRUD |
| 排課條件 | 硬條件 | 以 constraints 表統一管理硬條件,UI 分類呈現 |
| 修飾條件 | 軟條件 | 偏好設定(課表集中、連堂、午休等) |
| 資料除錯 | 排課前檢查 | 應排 vs 總節數、教師時數、漏配重配、衝突偵測 |
| AI 排課 | 排課引擎 | 觸發排課 Job、超級參數、進度、方案比較、回滾 |
| 調課 | 課表調整 | 課表檢視+拖曳/手動調課+即時衝突檢查+異動回復 |
| 列印匯出 | 報表輸出 | 班級/教師/教室課表、總表,輸出 PDF/Excel |
| 系統 | 系統管理 | 備份/回復、匯入匯出、帳號權限、AI 設定、稽核 |
以熟悉、開放、易維護的 PHP 生態為主軸,搭配背景佇列與 AI 抽象層。
規劃已完成,正進入 P1 骨架建置。