Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ HTTP_PORT=80
# ── 預建映像版本(僅「拉取映像」部署方式需要)──────────
# 用 docker compose pull 拉官方映像時,決定要拉哪一版。
# 預設 latest(最新);正式部署建議釘選版本號以利可控升級,例如:
# IMAGE_TAG=v1.3.3
# IMAGE_TAG=v1.3.4
# 若你是從原始碼 docker compose up -d 自行建置,此項可忽略。
IMAGE_TAG=latest

Expand Down
20 changes: 19 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,28 @@

破壞性變更(需人工介入才能升級)以 ⚠️ 標註。

> **新使用者請直接安裝 v1.3.3**(見 [README](README.md) 快速開始)。v1.0.0 ~ v1.3.2 是先前版本;以下條目保留作為變更紀錄。
> **新使用者請直接安裝 v1.3.4**(見 [README](README.md) 快速開始)。v1.0.0 ~ v1.3.3 是先前版本;以下條目保留作為變更紀錄。

## [Unreleased]

## [1.3.4] — 2026-10-21

**下拉選單可以打字搜尋了。** 來自使用者詢問:社團、分組多的學校,跑班群組有十幾二十個,新增配課時只能在下拉清單裡一個個找。

**本版沒有資料表結構變更**,升級只需換映像;若要退回 v1.3.3,把 `IMAGE_TAG` 改回即可。

官方映像(amd64 + arm64 雙架構)已發布於 GHCR:
`ghcr.io/begin0808/course_scheduling_system-{api,worker,web}:v1.3.4`

### 調整
- 下列下拉選單點開後可直接打字篩選(比對名稱的任何一段,例如「週會」找得到「班/週會」):
- 配課管理 → 新增配課:**跑班群組**、單雙週組、指定場地
- 基礎資料 → 班級:**導師**
- 基礎資料 → 教師:任教科目、綁定登入帳號
- 基礎資料 → 場地:適用科目
- 班級、科目、教師原本就可以打字搜尋;學期、假別等只有幾個選項的選單維持原樣。
- 手冊配課章節補上「下拉選單可以打字搜尋」的提示。

## [1.3.3] — 2026-10-21

**儀表板新增「即時概況」:現在這一節,各班實際在上什麼課、誰在上。** 來自使用者 Issue #50:儀表板原本只有資料筆數與今日異動數,看不出現在各班在上什麼。
Expand Down
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -132,11 +132,11 @@ docker compose up -d # 首次會建置映像,需數分鐘

## 專案狀態

**v1.3.3 已發行(2026-10-21)。** 六大里程碑 M0–M5 全部完成,功能齊備並經完整驗收(後端 685 項單元/整合測試、52 項 Playwright 端對端測試涵蓋全部 20 個頁面,每次提交皆對真實 Docker 全棧跑過)。官方映像(amd64 + arm64)已發布於 GHCR。
**v1.3.4 已發行(2026-10-21)。** 六大里程碑 M0–M5 全部完成,功能齊備並經完整驗收(後端 685 項單元/整合測試、53 項 Playwright 端對端測試涵蓋全部 20 個頁面,每次提交皆對真實 Docker 全棧跑過)。官方映像(amd64 + arm64)已發布於 GHCR。

v1.3.3 的儀表板新增**即時概況**(現在這一節各班在上什麼課、誰在上,已套用當天的調代課);v1.3.2 新增**重設管理員密碼**的指令(忘了密碼或第一次就登不進去時,不必刪資料或還原備份);v1.3.1 新增**帳號管理**(系統管理員可設定教學組長、教務主任的帳號);v1.3.0 支援**單雙週課程**(同一節單週、雙週輪流上不同的課,排課、請假代課、調課、巡堂表、鐘點都分單雙週;⚠️ 首次改動資料表結構,升級前請先備份);v1.2.19 支援**日薪代課**(國小常見:月結統計把鐘點與日薪分開列)並可**整批指派代課**(整張假單或整天一次派給同一位老師);v1.2.18 可**檢查課表**(發布前列出衝堂、教師不可排時段等衝突;事後修改不可排時段時當場提示已排的課);v1.2.17 修正登入按一次送出兩筆請求(輸錯密碼約第 3 次就被鎖定);v1.2.15、v1.2.16 修正跑班群組的兩個問題(同一位老師在群組裡重複配課時自動排課會排出撞課的課表;同一格有多筆同科目配課時,手動排課把每日節數重複計算);v1.2.12~v1.2.14 可列印**巡堂表**並匯出 Excel(依當天的調代課結果產生,社團另出分組巡堂單);v1.2.10、v1.2.11 讓**國中小、完全中學**跨部上課的老師,課表與通知單都標出實際上課時間,兩部節數不同(國中七節、高中八節)也不會漏課;v1.2.9 可一次匯出**全校教師課表**(總表與批次打包);v1.2.8 可用 Excel **批次更新既有教師**(新學年職務異動),並能**停用/啟用教師登入帳號**(離職教師保留歷史紀錄又進不來);v1.2.7 補上**學期起訖日期**的填寫與修改(先前畫面上無處可填,導致請假被擋);v1.2.6 修掉第一批外部使用者回報的三個問題(教師帳號首次登入卡死、無法事後補開教師帳號、未排課務清單過長時拖不動),並可在畫面上自行修改與重設密碼;v1.2.5 可列印**教師代課通知單與班級代課通知單**(照學校紙本格式,代課時可選計費方式);v1.2.4 的調代課處理會寫出處置方式(代課或調課、哪天補課);v1.2.3 起系統會顯示目前版本,並在有新版時提醒系統管理員(只提醒、不自動升級);v1.2.2 可列印**教師調課通知單與班級調課通知單**(照學校紙本格式);v1.2.1 補上**調課**的操作畫面——請假(含研習)的節次可直接列出雙方都有空的對調節次,支援跨週(最多四週)與連堂,補課日也會出現在今日看板。v1.2.0 起另有**一鍵示範資料**,裝好後兩分鐘內就能看到一張排好的全校課表。
v1.3.4 讓跑班群組、導師、任教科目等下拉選單都能**打字搜尋**;v1.3.3 的儀表板新增**即時概況**(現在這一節各班在上什麼課、誰在上,已套用當天的調代課);v1.3.2 新增**重設管理員密碼**的指令(忘了密碼或第一次就登不進去時,不必刪資料或還原備份);v1.3.1 新增**帳號管理**(系統管理員可設定教學組長、教務主任的帳號);v1.3.0 支援**單雙週課程**(同一節單週、雙週輪流上不同的課,排課、請假代課、調課、巡堂表、鐘點都分單雙週;⚠️ 首次改動資料表結構,升級前請先備份);v1.2.19 支援**日薪代課**(國小常見:月結統計把鐘點與日薪分開列)並可**整批指派代課**(整張假單或整天一次派給同一位老師);v1.2.18 可**檢查課表**(發布前列出衝堂、教師不可排時段等衝突;事後修改不可排時段時當場提示已排的課);v1.2.17 修正登入按一次送出兩筆請求(輸錯密碼約第 3 次就被鎖定);v1.2.15、v1.2.16 修正跑班群組的兩個問題(同一位老師在群組裡重複配課時自動排課會排出撞課的課表;同一格有多筆同科目配課時,手動排課把每日節數重複計算);v1.2.12~v1.2.14 可列印**巡堂表**並匯出 Excel(依當天的調代課結果產生,社團另出分組巡堂單);v1.2.10、v1.2.11 讓**國中小、完全中學**跨部上課的老師,課表與通知單都標出實際上課時間,兩部節數不同(國中七節、高中八節)也不會漏課;v1.2.9 可一次匯出**全校教師課表**(總表與批次打包);v1.2.8 可用 Excel **批次更新既有教師**(新學年職務異動),並能**停用/啟用教師登入帳號**(離職教師保留歷史紀錄又進不來);v1.2.7 補上**學期起訖日期**的填寫與修改(先前畫面上無處可填,導致請假被擋);v1.2.6 修掉第一批外部使用者回報的三個問題(教師帳號首次登入卡死、無法事後補開教師帳號、未排課務清單過長時拖不動),並可在畫面上自行修改與重設密碼;v1.2.5 可列印**教師代課通知單與班級代課通知單**(照學校紙本格式,代課時可選計費方式);v1.2.4 的調代課處理會寫出處置方式(代課或調課、哪天補課);v1.2.3 起系統會顯示目前版本,並在有新版時提醒系統管理員(只提醒、不自動升級);v1.2.2 可列印**教師調課通知單與班級調課通知單**(照學校紙本格式);v1.2.1 補上**調課**的操作畫面——請假(含研習)的節次可直接列出雙方都有空的對調節次,支援跨週(最多四週)與連堂,補課日也會出現在今日看板。v1.2.0 起另有**一鍵示範資料**,裝好後兩分鐘內就能看到一張排好的全校課表。

**請直接從最新版開始安裝**(見上方快速開始);`v1.3.3` 是目前建議使用的版本。各版變更見 [CHANGELOG](CHANGELOG.md),開發歷程見 [docs/tasks.md](docs/tasks.md)。
**請直接從最新版開始安裝**(見上方快速開始);`v1.3.4` 是目前建議使用的版本。各版變更見 [CHANGELOG](CHANGELOG.md),開發歷程見 [docs/tasks.md](docs/tasks.md)。

系統仍在實際校園環境試用中,若你是第一批使用者,歡迎加入 [LINE 社群](https://line.me/ti/g2/hP0Lg7mqvE5rvWg0sE9MHI-QsLkd94Cfp3wKcg) 或透過 [Issues](https://github.com/begin0808/Course_Scheduling_System/issues) 回報任何問題。

Expand Down
4 changes: 2 additions & 2 deletions docs/deploy/upgrade.html
Original file line number Diff line number Diff line change
Expand Up @@ -213,7 +213,7 @@ <h2 id="方式-a拉取映像部署最常見">方式 A:拉取映像部署(最常
# https://raw.githubusercontent.com/begin0808/Course_Scheduling_System/main/docker-compose.yml

# 3) 選擇版本:編輯 .env
# 釘選版本(可控):IMAGE_TAG=v1.3.3
# 釘選版本(可控):IMAGE_TAG=v1.3.4
# 永遠最新: IMAGE_TAG=latest

# 4) 拉新映像並重啟
Expand All @@ -233,7 +233,7 @@ <h2 id="方式-b從原始碼建置部署">方式 B:從原始碼建置部署</h2>
<hr />
<h2 id="關於版本釘選">關於版本釘選</h2>
<ul>
<li><strong>正式環境建議 <code>IMAGE_TAG=v1.3.3</code> 這樣釘住特定版本</strong>,你才能決定何時升級、升到哪一版,而不是每次 <code>pull</code> 都可能變動。</li>
<li><strong>正式環境建議 <code>IMAGE_TAG=v1.3.4</code> 這樣釘住特定版本</strong>,你才能決定何時升級、升到哪一版,而不是每次 <code>pull</code> 都可能變動。</li>
<li>想升級時,把 <code>IMAGE_TAG</code> 改成新版本號,再 <code>docker compose pull &amp;&amp; up -d</code>。</li>
<li>各版本的變更內容見專案根目錄的 <a href="../../CHANGELOG.html">CHANGELOG.md</a>;破壞性變更(若有)會在該版本明確標註 ⚠️ 與對應處置。</li>
</ul>
Expand Down
4 changes: 2 additions & 2 deletions docs/deploy/upgrade.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ v1.2.19 三個版本的實際資料上驗證過:課表、配課、鐘點、請
# https://raw.githubusercontent.com/begin0808/Course_Scheduling_System/main/docker-compose.yml

# 3) 選擇版本:編輯 .env
# 釘選版本(可控):IMAGE_TAG=v1.3.3
# 釘選版本(可控):IMAGE_TAG=v1.3.4
# 永遠最新: IMAGE_TAG=latest

# 4) 拉新映像並重啟
Expand Down Expand Up @@ -70,7 +70,7 @@ docker compose up -d --build # 重新建置並重啟

## 關於版本釘選

- **正式環境建議 `IMAGE_TAG=v1.3.3` 這樣釘住特定版本**,你才能決定何時升級、升到哪一版,而不是每次 `pull` 都可能變動。
- **正式環境建議 `IMAGE_TAG=v1.3.4` 這樣釘住特定版本**,你才能決定何時升級、升到哪一版,而不是每次 `pull` 都可能變動。
- 想升級時,把 `IMAGE_TAG` 改成新版本號,再 `docker compose pull && up -d`。
- 各版本的變更內容見專案根目錄的 [CHANGELOG.md](../../CHANGELOG.md);破壞性變更(若有)會在該版本明確標註 ⚠️ 與對應處置。

Expand Down
11 changes: 6 additions & 5 deletions docs/features.html
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="排課與調代課系統 v1.3.3 的完整功能清單:基礎資料、配課、手動與自動排課、發布查詢、調代課、匯出、系統管理與部署,以及目前的限制與規劃中的功能。">
<meta name="description" content="排課與調代課系統 v1.3.4 的完整功能清單:基礎資料、配課、手動與自動排課、發布查詢、調代課、匯出、系統管理與部署,以及目前的限制與規劃中的功能。">
<title>功能總覽 · 排課與調代課系統</title>
<link rel="icon" href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'><text y='.9em' font-size='88'>📋</text></svg>">
<style>
Expand Down Expand Up @@ -90,7 +90,7 @@
<header>
<div class="eyebrow">FEATURE OVERVIEW</div>
<h1>排課與調代課系統 · 功能總覽</h1>
<p class="lead">目前最新版 <b>v1.3.3</b>(2026-10-21)已經具備的全部功能,依「一個學期的工作流程」整理。每項功能的操作步驟請見<a href="index.html">教學組長操作手冊</a>;各版變更細節見 <a href="https://github.com/begin0808/Course_Scheduling_System/blob/main/CHANGELOG.md">CHANGELOG</a>。遇到問題或有建議,歡迎<a href="#feedback">加入 LINE 社群、寫信或到 GitHub Issues 回報</a>。</p>
<p class="lead">目前最新版 <b>v1.3.4</b>(2026-10-21)已經具備的全部功能,依「一個學期的工作流程」整理。每項功能的操作步驟請見<a href="index.html">教學組長操作手冊</a>;各版變更細節見 <a href="https://github.com/begin0808/Course_Scheduling_System/blob/main/CHANGELOG.md">CHANGELOG</a>。遇到問題或有建議,歡迎<a href="#feedback">加入 LINE 社群、寫信或到 GitHub Issues 回報</a>。</p>
<div class="meta">
<span class="chip">單校自架 · 資料不出校</span>
<span class="chip">開源免費(MIT)</span>
Expand Down Expand Up @@ -156,7 +156,7 @@ <h2 id="assign"><span class="no">03</span>配課</h2>
<p class="intro">決定哪位老師、教哪個班、哪一科、每週幾節——排課的核心輸入。</p>
<div class="tbl"><table>
<tr><th>功能</th><th>說明</th><th>版本</th></tr>
<tr><td>基本配課</td><td>班級 × 科目 × 任課教師 × 每週節數。</td><td class="ver">v1.0</td></tr>
<tr><td>基本配課</td><td>班級 × 科目 × 任課教師 × 每週節數。班級、科目、教師、跑班群組、單雙週組、場地的下拉選單都可打字搜尋。</td><td class="ver">v1.0 / v1.3.4</td></tr>
<tr><td>連堂</td><td>設定連堂長度(2~4 節)與每週次數,例如實習 3 節連上每週 2 次;連堂不跨午休。</td><td class="ver">v1.0</td></tr>
<tr><td>場地需求</td><td>指定特定場地,或只指定場地類型由自動排課挑選。</td><td class="ver">v1.0</td></tr>
<tr><td>協同教學</td><td>同一筆配課多位教師(第一位為主教),所有教師同時被占用。</td><td class="ver">v1.0</td></tr>
Expand Down Expand Up @@ -270,7 +270,7 @@ <h2 id="ops"><span class="no">13</span>部署、升級與備份</h2>
<div class="card"><b>HTTPS</b><span>設定網域即自動申請憑證(Caddy);未設定時為校內 HTTP。</span></div>
<div class="card"><b>資料不出校</b><span>單校自架,不連任何雲端服務;唯一的對外連線是每天一次的版本查詢,可關閉。</span></div>
</div>
<div class="note good">每一版發布前都經過:後端 685 項、前端 35 項、端對端 52 項自動測試(對真實 Docker 全棧),合併與標籤兩輪 CI,以及用正式映像在全新環境的實測。</div>
<div class="note good">每一版發布前都經過:後端 685 項、前端 35 項、端對端 53 項自動測試(對真實 Docker 全棧),合併與標籤兩輪 CI,以及用正式映像在全新環境的實測。</div>

<h2 id="limits"><span class="no">14</span>目前的限制</h2>
<p class="intro">已知、尚未處理的部分。多數有變通做法(見手冊 FAQ)。</p>
Expand Down Expand Up @@ -313,6 +313,7 @@ <h2 id="history"><span class="no">16</span>版本沿革</h2>
<tr><td>v1.3.1</td><td class="ver">2026-10-20</td><td>帳號管理(設定教學組長、教務主任)</td></tr>
<tr><td>v1.3.2</td><td class="ver">2026-10-20</td><td>重設管理員密碼指令;安裝說明補上 .env 密碼的注意事項</td></tr>
<tr><td>v1.3.3</td><td class="ver">2026-10-21</td><td>儀表板即時概況(Issue #50)</td></tr>
<tr><td>v1.3.4</td><td class="ver">2026-10-21</td><td>下拉選單打字搜尋(跑班群組、導師、任教科目等)</td></tr>
</table></div>

<h2 id="feedback"><span class="no">17</span>意見回報</h2>
Expand All @@ -324,7 +325,7 @@ <h2 id="feedback"><span class="no">17</span>意見回報</h2>
</div>
<div class="note good">回報問題時附上<b>系統版本</b>(選單底部)、<b>操作步驟</b>和<b>畫面截圖</b>,會更快找到原因;截圖請先遮住老師姓名等個人資料。</div>

<footer>排課與調代課系統 · 功能總覽 · 對應 v1.3.3 · 開源免費(MIT)· 單校自架<br>開發者:國立南大附中 李佳恩老師 · <a href="mailto:begin0808@gmail.com">begin0808@gmail.com</a></footer>
<footer>排課與調代課系統 · 功能總覽 · 對應 v1.3.4 · 開源免費(MIT)· 單校自架<br>開發者:國立南大附中 李佳恩老師 · <a href="mailto:begin0808@gmail.com">begin0808@gmail.com</a></footer>
</div>
</body>
</html>
3 changes: 2 additions & 1 deletion docs/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -431,6 +431,7 @@ <h3>進階結構</h3>
</tbody>
</table></div>

<div class="cal tip"><div class="lab">💡 提示:下拉選單可以打字搜尋</div><p>班級、科目、教師、跑班群組、單雙週組、場地這些下拉選單,點開後直接打字就會篩選,打名稱的任何一段都可以(例如打「週會」就找得到「班/週會」),不必在長長的清單裡捲動。基礎資料裡的導師、任教科目也一樣。</p></div>
<div class="cal tip"><div class="lab">💡 提示:即時鐘點統計</div><p>頁面右側會即時顯示每位教師的「配課節數 vs 基本鐘點」。超鐘點會變紅字(如配 22 節、基本 20 → 顯示 +2),讓你當下就發現負擔不均。</p></div>
<div class="cal warn"><div class="lab">⚠️ 注意</div><p>若某班每週配課總節數<strong>超過可排的節次數</strong>,系統會警告(這班根本排不下)。跑班群組的成員班級若<strong>節次表不一致</strong>,建立會被擋下。</p></div>
<div class="cal warn"><div class="lab">⚠️ 注意</div><p>跑班群組裡的課是<strong>同一節一起上</strong>,所以<strong>同一位老師在一個群組裡只能有一筆配課</strong>。請照「這一節有哪幾位老師在上課」來建,不要照班級每班各建一筆;建了兩筆,排課前檢查會指出是哪個群組的哪位老師,修正後才能自動排課。</p></div>
Expand Down Expand Up @@ -777,7 +778,7 @@ <h4>Q. 換到下學期,要重新建一次全部資料嗎?</h4>

<div class="foot">
<p>排課與調代課系統 · 教學組長操作手冊 · v1.1 · 開源免費(MIT)· 單校自架</p>
<p>本手冊隨系統版本更新;截圖對應系統 v1.2.9(8.8 巡堂表為 v1.2.12),文字內容已更新至 v1.3.3。</p>
<p>本手冊隨系統版本更新;截圖對應系統 v1.2.9(8.8 巡堂表為 v1.2.12),文字內容已更新至 v1.3.4。</p>
</div>
</section>

Expand Down
7 changes: 6 additions & 1 deletion docs/roadmap.html
Original file line number Diff line number Diff line change
Expand Up @@ -328,13 +328,18 @@ <h2 id="已出貨">已出貨</h2>
<td>2026-10-21</td>
<td><strong>儀表板即時概況</strong>(Issue #50):現在這一節各班在上什麼課、誰在上,已套用當天的調代課</td>
</tr>
<tr>
<td>v1.3.4</td>
<td>2026-10-21</td>
<td><strong>下拉選單打字搜尋</strong>(使用者詢問):跑班群組、單雙週組、指定場地、導師、任教科目、綁定帳號</td>
</tr>
</tbody>
</table></div>
<p>各版細節見 <a href="../CHANGELOG.html">CHANGELOG.md</a>。</p>
<hr />
<h2 id="工程改善原v13-範圍v130-改做單雙週後順延內容與順序不變">工程改善(原「v1.3 範圍」;v1.3.0 改做單雙週後順延,內容與順序不變)</h2>
<p>排序原則:<strong>學校裝得快、用得順的先做</strong>,純工程衛生的後做。全部不改資料表結構。</p>
<p><strong>開工時機</strong>:由專案負責人決定;先讓使用學校實際用 v1.3.3 幾天,沒有新的問題回報再動工。</p>
<p><strong>開工時機</strong>:由專案負責人決定;先讓使用學校實際用 v1.3.4 幾天,沒有新的問題回報再動工。</p>
<h3 id="1-api-映像拆掉-ortools-m">1. api 映像拆掉 ortools —— M</h3>
<ul>
<li><strong>現況</strong>:<code>ortools</code> 在 <code>pyproject.toml</code> 主依賴,api 映像 <strong>674MB</strong>;排課求解只在 worker 跑,api 容器用不到。</li>
Expand Down
Loading
Loading