T-10-A Schedule Planner
內容依原始規格呈現 · 查看 Markdown 來源 ↗需具備倉庫查看權限
課程排期規劃器
🖼️ 截圖: (Kou 提供)
🎯 功能定位
使用者: Teacher
從 T-10 主畫面的 [📅 Schedule Planner] 按鈕開啟,用於一次性批次設定全班 Session 的開放日期:
- 日期設定: 教師指定起始日期(Date),系統基於 Interval 自動推算後續所有 Session 的開放日期。
- Skip 跳過機制: 遇到假期或特殊安排時,透過
+ Add Note標記特定日期為 Skip,並記錄備註原因。 - 自動位移: 每新增一個 Skip,系統自動向後推移後續所有 Session 的日期,無需手動重算。
- 無預設值: 首次進入時 Date 為空、無任何 Skip 記錄,所有設定均由教師手動完成。
🧱 畫面結構
Modal 彈窗覆蓋層,從 T-10 主畫面點擊
[📅 Schedule Planner]開啟
- Date: DatePicker,設定排期起始日期(例如
2026/06/01) - Interval: Dropdown,選擇 Session 間隔天數(如 7 Days),系統據此推算後續日期
- Skip Section:
+ Add Note按鈕 → 新增一筆 Skip 條目(日期選擇器 + Note 文字輸入)- Skip List → 已記錄的 Skip 條目列表,每筆顯示
日期 : Note(例如6/19 : Dragon Boat Festival) - 每筆 Skip 可刪除(刪除後後續日期自動前移恢復)
[Save]→ Primary Button,儲存全部排期設定並關閉 Modal
📦 區塊說明
| # | 區塊 | 元件 | 行為/交互 | 備註 |
|---|---|---|---|---|
| 1 | Date | DatePicker | 選擇排期起始日期 | 無預設值,必須由教師手動選擇 |
| 2 | Interval | Dropdown | 選擇間隔天數(1 / 3 / 7 / 14 / 30 Days) | 變更後後端立即重算所有 Session 日期 |
| 3 | + Add Note | Button | 新增一筆 Skip 條目,彈出 DatePicker + Text Input | 可多次點擊,新增多筆 Skip |
| 4 | Skip 條目 | DatePicker + Text Input + Delete | 選擇要跳過的日期 + 輸入原因備註 | Note 為必填;可點擊 Delete 移除該 Skip |
| 5 | [Save] | Button (Primary) | 儲存排期設定,寫入後端並關閉 Modal | 系統根據 Date + Interval - Skip 計算最終日期序列;成功後 T-10 主畫面的 Date 欄自動更新 |
🔁 交互流程
正在載入流程圖…
⚙️ 狀態管理
| 狀態 | 觸發條件 | 畫面表現 |
|---|---|---|
| 空白 | 首次進入 | Date 為空,Interval 未選,Skip List 為空 |
| 編輯中 | 已設定 Date + Interval | Date/Interval 顯示已選值 |
| 有 Skip | 已透過 + Add Note 新增 Skip | Skip List 顯示條目(日期 : Note),[Delete] 圖標可見 |
| Saving | 點擊 Save | Loading + 按鈕禁用 |
| Saved | 儲存成功 | Toast「Schedule saved」 + Modal 關閉 + T-10 刷新 |
🔎 邏輯自我檢查
- 無預設值原則: 首次進入 Schedule Planner 時,Date 為空、Interval 未選、Skip List 為空。所有設定均由教師手動完成。
- 日期計算: 最終 Session[N] 的 Date = Start Date + Interval × (N-1) + 累計 Skip 位移天數。系統自動處理,教師無需手算。
- Skip 自動推移: 每新增一個 Skip,該 Skip 日期對應的 Session 被跳過,後續所有 Session 日期向後推移一個 Interval。
- 取消 Skip 回推: 刪除一個 Skip 條目後,後續 Session 日期自動前移一個 Interval。
- 日期不可逆: 已標記為 Unlocked 的 Session 不可被 Skip(已對學生開放)。
- Note 必填: Skip 時 Note 為必填欄位,確保有記錄可追溯原因。
- 多筆 Skip 累計: 同一排期中可有多個 Skip,每個獨立記錄 Note。後續日期累計推移(N 個 Skip = N × Interval 位移)。
- Save 全量覆蓋: 每次 Save 為全量覆蓋寫入所有 Session 的 Date,而非增量更新,確保排程一致性。