規劃階段 · v0.1 · 先單校(文華高中)起步

AI 直接排課
把全校課表交給模型生成,程式負責把關

把現行的桌面排課系統重做為現代 Web 平台。排課不再靠本機 CPU 演算法, 而是呼叫 AI/LLM 直接產生課表,再由確定性程式驗證硬條件、回饋 AI 逐格修補到收斂。

Web
瀏覽器操作 · 跨平台 · 可多人協作
AI 直排
模型產生 + 程式驗證修補迴圈
PHP · MySQL
Linux + Laravel · 資料開放易維護
0 硬違規
教師/班級/教室不衝堂為底線
Why Rebuild

從單機桌面,走向雲端與 AI

現行桌面排課系統是 Windows 單機程式,以本機演算法排課、資料存本機,多人協作與遠端存取困難。新平台在保留領域模型的前提下,全面 Web 化並改用 AI 排課。

🖥️ 現行桌面排課系統

  • Windows 桌面單機程式,只能在特定電腦操作
  • 本機 CPU 跑排課演算法,資料存本機,難備份難整合
  • 多人協作、遠端存取困難
  • 調整規則與擴充需仰賴原廠

☁️ 新平台 · AI 排課平台(Web 版)

  • Web 化:瀏覽器操作、跨平台、可遠端、可多人協作
  • AI 排課:依基本資料+條件,由 AI 直接產生課表
  • 保留領域模型:沿用現行系統驗證過的資料結構,資料可遷移
  • 可維護:PHP + MySQL,資料開放、易備份、易整合校務
Core Features

核心特色

務實可用為原則:AI 當排課引擎、程式當把關者,每一步都可稽核、可回復。

🤖

AI 為引擎、程式為把關

AI 產生課表,系統以確定性驗證器檢查硬條件,把違規回饋 AI 只修那幾格——絕不信任 AI 自述正確。

🔁

非同步排課 + 進度回報

排課耗時且花 API 費用,一律走背景佇列 Job;前端輪詢/SSE 顯示第幾批、目前違規數與花費。

🧩

固定格鎖定,AI 不得覆蓋

全校共同科目、班級手排課在排課時轉為 locked 格,AI 只能在其餘時段安排,維持既定安排不變。

🕹️

版本化與回滾

每次排課 = 一個 timetable_run 版本,可比較多方案、可回滾,現有課表匯入為唯讀基準版。

🔌

供應商中立

走 AiSchedulerClient 抽象介面,Claude/OpenAI/Gemini 可設定切換、可比價、可降級,不綁單一模型。

🛡️

資料除錯先擋錯

送 AI 前先跑「應排 vs 總節數、漏配重配、衝突」報表,擋掉排不出的資料,省 API 費用並提升成功率。

AI Engine

AI 排課引擎:直排 + 驗證修補迴圈

核心排課由 AI 產生;為讓它在全校規模下可靠,系統加上確定性驗證與「把違規回饋 AI 修補」的迭代迴圈,逼模型收斂到零硬違規。

STEP 1

組裝輸入

教師/班級/科目/教室/開課配課/固定格+硬軟條件,整理成結構化 JSON。

STEP 2

呼叫 AI

依批次策略組 prompt,模型以嚴格 JSON schema 回傳課表片段。

STEP 3

解析寫入

解析回應、外鍵校驗,寫入暫存課表。

STEP 4

驗證硬條件

ConstraintValidator 列出所有衝堂/超額等硬違規。

STEP 5

回饋修補 → 收斂

把違規清單回饋 AI 只修那幾格,迭代到零違規或轉人工。

🎯 把關原則:不信任 AI 自述的正確性,所有輸出一律經 schema 與外鍵校驗;達收斂上限仍殘餘的違規,標記為「待人工調課」並在課表上 highlight。規模化以依年級/依日分批貪婪固定只回傳異動格控制成本與穩定性。
Modules

功能模組

沿用老師熟悉的操作概念,降低學習與遷移成本。

模組功能分類內容
基本資料管理基本資料教師/班級/科目/教室/群組/共同科目/手排課/每天節數/開課配課 CRUD
排課條件硬條件以 constraints 表統一管理硬條件,UI 分類呈現
修飾條件軟條件偏好設定(課表集中、連堂、午休等)
資料除錯排課前檢查應排 vs 總節數、教師時數、漏配重配、衝突偵測
AI 排課排課引擎觸發排課 Job、超級參數、進度、方案比較、回滾
調課課表調整課表檢視+拖曳/手動調課+即時衝突檢查+異動回復
列印匯出報表輸出班級/教師/教室課表、總表,輸出 PDF/Excel
系統系統管理備份/回復、匯入匯出、帳號權限、AI 設定、稽核
Tech Stack

技術棧

以熟悉、開放、易維護的 PHP 生態為主軸,搭配背景佇列與 AI 抽象層。

🧱 平台基礎

Linux Rocky Apache + PHP-FPM PHP 8.3+ Laravel 13 MySQL / MariaDB Redis / DB Queue

🎨 前端 / 整合

Blade + Alpine.js Tailwind CSS SortableJS 拖曳調課 PhpSpreadsheet Excel mPDF PDF AiSchedulerClient 抽象層
Roadmap

開發路線圖

規劃已完成,正進入 P1 骨架建置。

P0已完成
規劃:架構、技術選型、資料模型、AI 整合方式、模組與路線圖確認。
骨架:環境、Auth、DB migration、基本資料 CRUD、現有資料匯入器。
P2
排課輸入:開課配課、排課/修飾條件、資料除錯報表。
P3
AI 引擎:AiSchedulerClient 抽象、排課 Job、驗證器、修補迴圈(先單年級試點)。
P4
規模化:分批策略、全校排課、方案比較/回滾、用量與花費控管。
P5
調課:拖曳調課頁、異動回復、即時衝突檢查。
P6
列印/系統:PDF/Excel 匯出、備份/回復、稽核。
P7
多校/國教署:多租戶隔離、國教署上傳格式。