空白班表一鍵生成排班後每位員工每天都有排定結果
前置條件
- 我是 "Demo team W35" 的排班管理者
- 我正在看 "三月, 2026" 的月班表
- 三月班表尚未生成
操作
- 我按下 "生成排班"
預期結果
- 系統顯示 "已生成 三月 班表"
- 8 位員工在 "3/1" 到 "3/31" 的每一格都是班次或休假,沒有空白格
完整流程共 8 個階段,下圖標出每個階段的產出與目前進度。用例設計的展開方式列在它下方:先用測試矩陣、狀態機與互動原型系統化展開,再寫成 BDD 情境,最後交給獨立評審打分。
★ 人工確認是整個流程中唯一需要你決定的地方;其他階段由 AI 完成,並由 CLI 檢查放行條件。確認之後才會開始寫自動化測試。
由設計產物自動計算。
這次要驗收的內容與資料來源。
P0 與 P1 必須被情境覆蓋,或寫明延後的理由。
12 種技法逐一判定;不適用必須寫出理由。
TC-1 TC-9 TC-10 TC-12 TC-15 TC-16 TC-19 TC-20 TC-22 TC-23 TC-24 TC-25 TC-35 TC-36 TC-37
TC-1 TC-2 TC-4 TC-5 TC-6 TC-7 TC-8 TC-28 TC-39 TC-40 TC-29 TC-30 TC-31 TC-32 TC-33 TC-34
context.outOfScope 已排除權限與多團隊切換;官網與產品圖只呈現排班管理者一種角色操作排班頁,沒有其他角色能看到或操作生成排班的畫面,也沒有可越權的「別人的班表」。員工平台是否只能看到已發布的班表,已列入待釐清問題
影響結果的因子(員工能力、班次、工時、間隔、連續天數)各只有 2–3 個值,決策表 M-1 已逐列列出全部有意義的組合,不需要再用成對組合收斂
依評分標準逐項打分;點開每個維度可以看到核對了什麼、為什麼扣分。
及格門檻 85 分 · 共 2 輪評審
需要需求方回答的問題,會影響預期結果。
每一列是一個要驗證的條件組合。有對應情境的列會標出情境編號;不測的列必須寫明理由。
影響「是否顯示違規」的條件組合。參數為假設值:工時上限 176 h、最短間隔 11 h、最多連續 6 天。
| 員工能力 | 班次 | 期間工時 vs 上限 | 與前一班間隔 | 連續上班天數 | 結果 | 情境 |
|---|---|---|---|---|---|---|
| 可值小夜班 | E | ≤ 上限 | ≥ 11 h | ≤ 6 | 無違規 | TC-12 TC-14 |
| 不可值小夜班 | N / D | ≤ 上限 | ≥ 11 h | ≤ 6 | 無違規 | TC-12 |
| 不可值小夜班 | E | ≤ 上限 | ≥ 11 h | ≤ 6 | 非小夜班員工不能安排小夜班 | TC-13 |
| 任一 | 任一 | > 上限(184 > 176) | ≥ 11 h | ≤ 6 | 超過期間最大工作時數 | TC-16 |
| 任一 | 任一 | = 新上限(184 = 184) | ≥ 11 h | ≤ 6 | 無違規(參數調高) | TC-17 |
| 任一 | D(前一天 E) | ≤ 上限 | 8 h | ≤ 6 | 班次間隔不足 | TC-18 |
| 任一 | 任一 | ≤ 上限 | ≥ 11 h | 7 | 超過最多連續工作天數 | TC-20 |
| 違規組合 | — | — | — | — | 多項違規同時列出並可點選定位 | TC-21 |
| 門檻 | 值 | 類別 | 預期 | 情境 |
|---|---|---|---|---|
| 期間最大工時 176 h | 168 h(杜蘭特) | 內側 | 加班 0 h、無違規 | TC-22 |
| 期間最大工時 176 h | 176 h(艾倫) | 剛好 | 加班 0 h、無違規 | TC-15 |
| 期間最大工時 176 h | 184 h | 外側 | 加班 8 h、超時違規 | TC-16 |
| 最多連續工作 6 天 | 5 天(生成結果最長) | 內側 | 無違規 | TC-12 |
| 最多連續工作 6 天 | 6 天 | 剛好 | 無違規 | TC-19 |
| 最多連續工作 6 天 | 7 天 | 外側 | 連續天數違規 | TC-20 |
| 最短間隔 11 h | 10 h / 11 h / 12 h | 剛好與兩側 | — | 不測三種班別都是 8 小時且起點為 0/8/16 點,任兩班的間隔只會是 0/8/16/24/32 h,無法產生 10–12 h;兩側以 8 h(TC-18)與 24 h(TC-14)代表 |
| 最短間隔 11 h | 8 h(E→D) | 外側 | 班次間隔不足 | TC-18 |
| 最短間隔 11 h | 24 h(D→E) | 內側 | 無違規 | TC-14 |
| 班次需求人數 | 少 1 人(0/1) | 外側 | 紅色缺口 | TC-25 TC-28 |
| 班次需求人數 | 剛好(2/2) | 剛好 | 紫色 | TC-23 |
| 班次需求人數 | 多 1 人(3/2) | 外側 | 黃色過載 | TC-24 |
| 月份天數 | 28 天(2026/2) | 最小 | 只排 28 天 | TC-10 |
| 月份天數 | 30 天(2026/4) | 中間 | 只排 30 天,不影響其他月 | TC-9 |
| 月份天數 | 31 天(2026/3) | 最大 | 31 天全部排定 | TC-1 |
| 偏好班次數量 | 1 個 | 內側 | 單一主要偏好 | TC-36 |
| 偏好班次數量 | 2 個 | 剛好 | 主要+次要 | TC-35 |
| 偏好班次數量 | 3 個 | 外側 | 仍只保留主要與次要兩個 | TC-37 |
| 輸入 | 類別 | 代表值 | 預期 | 情境 |
|---|---|---|---|---|
| 格子值 | 班次 E | 艾倫 3/1 | 顯示綠色 E,計入工時 | TC-1 TC-14 |
| 格子值 | 班次 N | 杜蘭特 3/1 | 顯示藍色 N,計入 N 班人數 | TC-28 |
| 格子值 | 班次 D | 艾倫 3/9 | 顯示橘色 D,計入 D 班人數 | TC-18 |
| 格子值 | 休 / 例 / OFF | 產品圖 3 月 | 灰底文字,不計工時 | TC-2 |
| 格子值 | 指定休假 | 哈登 3/11 | 生成後為休,不被排班 | TC-3 |
| 格子值 | 空白(未生成) | 3 月尚未生成 | 工時 0 h,人力全部不足 | TC-27 |
| 員工能力 | 可值小夜班 | 杜蘭特 | 可排 E | TC-14 |
| 員工能力 | 不可值小夜班 | 保羅 | 排 E 時違規 | TC-13 |
| 偏好 | 有主要偏好 | 艾倫 E | 生成結果符合主要偏好 | TC-38 |
| 偏好 | 未設定偏好 | 保羅 | 可設定主要與次要 | TC-35 |
| 動作 | 正向 | 負向(規則擋下) | 例外(系統錯誤) | 情境 |
|---|---|---|---|---|
| 生成排班(空白班表) | 產出完整班表 | — | 服務失敗時顯示錯誤,班表不變 | TC-1 TC-8 |
| 生成排班(已有班表) | 確認後重新生成 | 先詢問;取消則保留手動調整 | — | TC-5 TC-6 TC-7 |
| 手動調整格子 | 班別狀態即時更新 | 違規時標紅框與警告 | — | TC-28 TC-13 |
| 手動調整格子(例外) | — | — | 儲存調整失敗 | 不測官網與產品圖沒有任何調整儲存失敗的畫面或規則;寫成預期結果等於自行發明規則,已列入待釐清問題,待 PM 提供 prod 行為後補情境 |
| 發布 | 狀態變為已發布 | 未生成或已發布時按鈕停用 | — | TC-32 TC-31 TC-33 |
| 發布(例外) | — | — | 發布服務失敗 | 不測原型沒有後端,prod 發布失敗時的畫面與資料狀態沒有依據,已列入待釐清問題 |
| 設定偏好 | 主要/次要標示 | 已滿兩個時擋下 | — | TC-35 TC-37 |
| 設定偏好(例外) | — | — | 儲存偏好失敗 | 不測同上:產品圖沒有偏好儲存失敗的依據,已列入待釐清問題 |
| 物件 | 操作 | 情況 | 預期 | 情境 |
|---|---|---|---|---|
| 月班表 | 新增 | 空白→生成 | 31 天全部排定 | TC-1 |
| 月班表 | 讀取 | 切換月份/週檢視 | 顯示該期間的同一份資料 | TC-9 TC-11 |
| 月班表 | 修改 | 手動調整單格 | 統計與發布狀態同步更新 | TC-28 TC-34 |
| 月班表 | 覆蓋 | 確認重新生成 | 手動調整被覆蓋,指定休假保留 | TC-7 TC-39 TC-40 |
| 月班表 | 空 | 尚未生成 | 人力全部不足、不能發布 | TC-27 TC-31 |
| 月班表 | 大量 | 8 人 × 31 天 | 與產品圖逐格一致 | TC-2 |
| 月班表 | 刪除 | 清除整月班表 | — | 不測產品圖與官網都沒有「刪除班表」功能;最接近的是復原(TC-29) |
| 偏好 | 新增/刪除 | 設定與取消主要偏好 | 標示與頭像同步 | TC-35 TC-36 |
功能中的狀態與轉換。允許的轉換都要有情境走過;系統必須阻擋的轉換也要有負向情境驗證。
只畫出允許的轉換。
flowchart LR
start(("·")):::start
s0("未生成")
s1("生成中")
s2("已生成未發布")
s3("重新生成確認中")
s4("已發布")
start --> s0
s0 -->|"按下「生成排班」"| s1
s1 -->|"生成完成"| s2
s1 -->|"排班服務失敗"| s0
s2 -->|"再按「生成排班」"| s3
s3 -->|"選擇「取消」"| s2
s3 -->|"選擇「重新生成」"| s1
s2 -->|"按下「發布」"| s4
s4 -->|"手動調整任一格"| s2
s4 -->|"再按「生成排班」"| s3
s2 -->|"手動調整任一格(未發布時)"| s2
s2 -->|"按下「復原」"| s0
s0 -->|"按下「重做」"| s2
classDef start fill:#16191a,stroke:#16191a無法載入狀態圖元件(可能離線),請參考轉換表。
允許與應被阻擋的轉換。
| 從 | 觸發條件 | 到 | 結果 | 情境 |
|---|---|---|---|---|
| 未生成 | 按下「生成排班」 | 生成中 | 允許 | TC-1 |
| 生成中 | 生成完成 | 已生成未發布 | 允許 | TC-1 TC-2 |
| 生成中 | 排班服務失敗 | 未生成 | 允許 | TC-8 |
| 已生成未發布 | 再按「生成排班」 | 重新生成確認中 | 允許 | TC-5 |
| 重新生成確認中 | 選擇「取消」 | 已生成未發布 | 允許 | TC-6 |
| 重新生成確認中 | 選擇「重新生成」 | 生成中 | 允許 | TC-7 TC-39 TC-40 |
| 已生成未發布 | 按下「發布」 | 已發布 | 允許 | TC-32 |
| 已發布 | 手動調整任一格 | 已生成未發布 | 允許 | TC-34 |
| 已發布 | 再按「生成排班」 | 重新生成確認中 | 允許 | TC-40 |
| 已生成未發布 | 手動調整任一格(未發布時) | 已生成未發布 | 允許 | TC-28 |
| 已生成未發布 | 按下「復原」 | 未生成 | 允許 | TC-29 |
| 未生成 | 按下「重做」 | 已生成未發布 | 允許 | TC-30 |
| 未生成 | 按下「發布」 | — | 阻擋 · 沒有班表可以發布,發布按鈕停用 | TC-31 |
| 生成中 | 生成中再按「生成排班」 | — | 阻擋 · 重複觸發會重複生成並產生多筆復原紀錄 | TC-4 |
| 已發布 | 再按「發布」 | — | 阻擋 · 內容沒有變更,不應重複發布 | TC-33 |
在左側點選情境,右側會自動示範該情境的操作與結果;也可以直接在畫面上點擊、輸入,自由走一遍流程。 在新分頁開啟原型 ↗
每個情境一段:前置條件、操作、預期結果。逐條核對後打勾,勾選只存在你的瀏覽器中。
作為一個排班管理者我想要依人力需求與員工條件一鍵產出整個月的班表以便省去手動排班的時間並得到符合規則的最佳班表
作為一個排班管理者我想要在生成與調整班表時自動檢核工時、休息、連續天數與員工能力以便確保班表符合勞動規範,並讓關鍵時段由適任的人負責
作為一個排班管理者我想要一眼看到每位員工的工時,以及每天每個班次的人力覆蓋狀況以便及早發現人力缺口與過載,並即時調整班表
作為一個排班管理者我想要在生成後復原或重做操作,並在確認後發布班表以便安心試排,並讓員工只看到正式的班表
作為一個排班管理者我想要記錄每位員工的主要與次要偏好班次以便排班時優先滿足員工的合理需求
沒有符合篩選條件的情境。
以下 Gherkin 是用例的原文,確認後會直接轉成自動化測試。
Given、When、Then 各用一種顏色,一眼分出前置、操作與結果。
CLI 依 tag 做覆蓋檢查。
| 套件 | @regression 每個情境都要有;核心正向流程再加 @smoke |
| 執行 | @auto 代表可以自動化;沒有 @auto 就是人工驗收 |
| 性質 | @邊界 只標臨界值、資源耗盡、競態、故障這類極端情境 |
| 描述 | 其餘中文 tag 描述頁面與情境條件,例如 @登入頁面 @密碼錯誤 |
| 編號 | 情境編號、優先級與風險記在 design.json,不放進 tag |
# 頁面 code 路徑:index.html(排班頁「生成排班」按鈕,依官網產品圖還原的原型)# 註:規則檢核在 schedule-rules.feature;差勤概況在 schedule-overview.feature;調整與發布在 schedule-adjust-publish.feature# 註:班表代碼 E=小夜班 16-00、N=大夜班 00-08、D=白班 08-16、x=休、y=例、o=OFF# 註:生成結果以官網產品圖 reference/01-schedule-march-2026.png 為準Feature: 一鍵生成排班 作為一個排班管理者 我想要依人力需求與員工條件一鍵產出整個月的班表 以便省去手動排班的時間並得到符合規則的最佳班表 Background: Given 我是 "Demo team W35" 的排班管理者 And 我正在看 "三月, 2026" 的月班表 # ############################################ # 生成結果 # ############################################ @排班頁面 @smoke @regression @auto @空白班表 Scenario: 空白班表一鍵生成排班後每位員工每天都有排定結果 Given 三月班表尚未生成 When 我按下 "生成排班" Then 系統顯示 "已生成 三月 班表" And 8 位員工在 "3/1" 到 "3/31" 的每一格都是班次或休假,沒有空白格 @排班頁面 @regression @auto @產品圖對照 Scenario: 生成的三月班表與產品圖逐格一致 Given 三月班表尚未生成 When 我按下 "生成排班" Then "艾倫" 的三月班表為 "EEEExxyEEEEyEEEEEyEEEExEEyxEEEy" And "柯瑞" 的三月班表為 "yEExEEEEEyxEEExyEEEEExEExyEEEEE" And "杜蘭特" 的三月班表為 "NyxDDDDDxyDDDDDyxxxDyDDDDDyDDDD" And "哈登" 的三月班表為 "DDDDyDDDDDxyxxyDDDDyDDDDDyDDDoD" And "馬龍" 的三月班表為 "EyEEEExxyEEEEExyxEEEyEEEEEyEEEE" And "保羅" 的三月班表為 "xNNNNyNNNNyNNNNNyNNNNxxyyxDDDDD" And "戴維斯" 的三月班表為 "DDDDDxyxDDDDDyxNNNNNyNNNNxyNNyN" And "約基奇" 的三月班表為 "DDyxDDDDDyNNNNNyNNNxxyNNNNNyNNx" @排班頁面 @regression @auto @指定休假 Scenario: 生成排班時避開員工指定休假 Given "哈登" 已預填指定休假 "3/11"、"3/13"、"3/14" When 我按下 "生成排班" Then "哈登" 在 "3/11"、"3/13"、"3/14" 都是 "休" And "哈登" 在這三天都沒有被排任何班次 # ############################################ # 重複觸發與重新生成 # ############################################ @排班頁面 @regression @auto @邊界 @生成中連點 Scenario: 生成中連按兩次只會生成一次 Given 三月班表尚未生成 When 我在生成進行中連續按兩次 "生成排班" Then 只產生一次生成紀錄,我按一次 "復原" 就回到尚未生成的空白班表 @排班頁面 @regression @auto @已有班表 Scenario: 已有班表時再按生成排班會先詢問是否重新生成 Given 三月班表已經生成 When 我按下 "生成排班" Then 系統顯示確認視窗 "重新生成排班?" And "杜蘭特" 在 "3/8" 的班次仍然是 "D" @排班頁面 @regression @auto @取消重新生成 Scenario: 取消重新生成時保留我的手動調整 Given 三月班表已經生成 And 我把 "杜蘭特" 在 "3/8" 的班次改成 "E" When 我按下 "生成排班" 後在確認視窗選擇 "取消" Then "杜蘭特" 在 "3/8" 的班次仍然是 "E" @排班頁面 @regression @auto @確認重新生成 Scenario: 確認重新生成時覆蓋我的手動調整 Given 三月班表已經生成 And 我把 "杜蘭特" 在 "3/8" 的班次改成 "E" When 我按下 "生成排班" 後在確認視窗選擇 "重新生成" Then "杜蘭特" 在 "3/8" 的班次變回 "D" @排班頁面 @regression @auto @重新生成保留休假 Scenario: 重新生成後員工指定休假仍然保留 Given 三月班表已經生成 And 我把 "哈登" 在 "3/11" 的 "休" 改成 "D" When 我按下 "生成排班" 後在確認視窗選擇 "重新生成" Then "哈登" 在 "3/11" 回到指定休假 "休" @排班頁面 @regression @auto @發布後重新生成 Scenario: 已發布的班表重新生成後狀態回到未發布 Given 三月班表已經發布 When 我按下 "生成排班" 後在確認視窗選擇 "重新生成" Then 發布狀態顯示 "未發布" # ############################################ # 例外與跨月份 # ############################################ @排班頁面 @regression @auto @邊界 @排班服務失敗 Scenario: 排班服務失敗時顯示錯誤且班表維持原狀 Given 三月班表尚未生成 And 排班服務暫時無法回應 When 我按下 "生成排班" Then 系統顯示 "排班生成失敗,請稍後再試(待確認)" And 三月班表仍然是空白,"艾倫" 的工時為 "0 h 0 h" @排班頁面 @regression @auto @切換月份 Scenario: 在四月生成排班不影響已生成的三月班表 Given 三月班表已經生成 When 我切換到 "四月, 2026" 並生成排班 And 我切換回 "三月, 2026" Then "艾倫" 的三月班表仍為 "EEEExxyEEEEyEEEEEyEEEExEEyxEEEy" @排班頁面 @regression @auto @邊界 @二月天數 Scenario: 二月生成排班只排到 28 日 Given "二月, 2026" 的班表尚未生成 When 我在 "二月, 2026" 按下 "生成排班" Then 班表只顯示 "2/1" 到 "2/28" 共 28 天 And "艾倫" 在 "2/28" 有排定結果 @排班頁面 @regression @auto @週檢視 Scenario: 切換週檢視顯示同一份生成結果 Given 三月班表已經生成 When 我把檢視切換為 "週" Then 班表只顯示 "3/1" 到 "3/7" 共 7 天 And "艾倫" 在 "3/1" 的班次仍然是 "E"
# 頁面 code 路徑:index.html(排班頁的違規提示:紅框格子、右下角數字徽章與警告卡片)# 註:規則對應官網「排班參數設定」與「員工能力」;警告文案取自產品圖 reference/05-violation-warnings.png# 註:參數值為假設:期間最大工時 176 h、班次最短間隔 11 h、最多連續工作 6 天(官網只說可以設定,沒有給數值)# 註:「保羅」「約基奇」不可值小夜班,其他員工都可以# 註:原型另依官網實作「四週內最少休息天數 8 天」等規則,手動把休假改成上班可能同時觸發,因此各情境只驗證自己那一條規則Feature: 排班規則檢核 作為一個排班管理者 我想要在生成與調整班表時自動檢核工時、休息、連續天數與員工能力 以便確保班表符合勞動規範,並讓關鍵時段由適任的人負責 Background: Given 我是 "Demo team W35" 的排班管理者 And 我正在看 "三月, 2026" 的月班表 # ############################################ # 生成結果合規 # ############################################ @排班頁面 @smoke @regression @auto @生成結果合規 Scenario: 生成結果沒有任何排班規則違規 Given 三月班表尚未生成 When 我按下 "生成排班" Then 畫面沒有顯示違規數字徽章 And 沒有任何格子被標示紅框 # ############################################ # 員工能力 # ############################################ @排班頁面 @regression @auto @不可值小夜班 Scenario: 非小夜班員工被排小夜班時顯示違規 Given 三月班表已經生成 When 我把 "保羅" 在 "3/5" 的班次改成 "E" Then 系統顯示違規 "非小夜班員工不能安排小夜班" And "保羅" 在 "3/5" 的格子被標示紅框 @排班頁面 @regression @auto @可值小夜班 Scenario: 可值小夜班的員工改排小夜班不顯示違規 Given 三月班表已經生成 When 我把 "杜蘭特" 在 "3/8" 的班次改成 "E" Then 畫面沒有顯示違規數字徽章 # ############################################ # 工時上限 # ############################################ @排班頁面 @regression @auto @邊界 @工時剛好上限 Scenario: 工時剛好等於期間上限 176 小時不算加班 Given 三月班表尚未生成 When 我按下 "生成排班" Then "艾倫" 的工時顯示 "176 h 0 h" And 沒有 "超過期間最大工作時數" 的違規 @排班頁面 @regression @auto @邊界 @工時超過上限 Scenario: 工時超過期間上限一個班時顯示超時違規 Given 三月班表已經生成 When 我把 "艾倫" 在 "3/31" 的 "例" 改成 "E" Then "艾倫" 的工時顯示 "184 h 8 h" And 系統顯示違規 "超過期間最大工作時數" @排班頁面 @regression @auto @調整工時參數 Scenario: 期間最大工時調高為 184 小時後同樣班表不顯示違規 Given 三月班表已經生成 And 排班參數「期間最大工時」設定為 "184" 小時 When 我把 "艾倫" 在 "3/31" 的 "例" 改成 "E" Then "艾倫" 的工時顯示 "184 h 0 h" And 畫面沒有顯示違規數字徽章 # ############################################ # 班次間隔與連續工作 # ############################################ @排班頁面 @regression @auto @班次間隔不足 Scenario: 小夜班隔天接白班間隔不足時顯示違規 Given 三月班表已經生成 When 我把 "艾倫" 在 "3/9" 的班次從 "E" 改成 "D" Then 系統顯示違規 "班次間隔不足",說明為 "3/8→9 間隔 8 h" @排班頁面 @regression @auto @邊界 @連續工作六天 Scenario: 連續工作剛好 6 天不顯示連續天數違規 Given 三月班表已經生成 When 我把 "杜蘭特" 在 "3/9" 的 "休" 改成 "D" Then "杜蘭特" 從 "3/4" 到 "3/9" 連續上班 6 天 And 沒有 "超過最多連續工作天數" 的違規 @排班頁面 @regression @auto @邊界 @連續工作七天 Scenario: 連續工作 7 天顯示超過最多連續工作天數 Given 三月班表已經生成 And 我已把 "杜蘭特" 在 "3/11" 改成 "休"、"3/9" 改成 "D" When 我把 "杜蘭特" 在 "3/10" 的 "例" 改成 "D" Then 系統顯示違規 "超過最多連續工作天數",說明為 "杜蘭特 連續 7 天" # ############################################ # 違規提示的操作 # ############################################ @排班頁面 @regression @auto @違規定位 Scenario: 點選違規提示會定位到違規的格子 Given 三月班表已經生成並經手動調整後有 "5" 項違規 When 我點選違規 "超過最多連續工作天數" Then 班表捲動到 "杜蘭特" 在 "3/10" 的紅框格子
# 頁面 code 路徑:index.html(員工列的工時欄、底部「班別狀態」與「待排班次」分頁)# 註:顏色規則取自產品圖 reference/02:黃=超過需求、紫=剛好、紅=不足(待 PM 確認)# 註:需求人數為假設:E 2 人、N 1 人、D 2 人,每天合計 5 人Feature: 差勤概況與人力需求提示 作為一個排班管理者 我想要一眼看到每位員工的工時,以及每天每個班次的人力覆蓋狀況 以便及早發現人力缺口與過載,並即時調整班表 Background: Given 我是 "Demo team W35" 的排班管理者 And 我正在看 "三月, 2026" 的月班表 # ############################################ # 員工工時 # ############################################ @排班頁面 @smoke @regression @auto @員工工時 Scenario: 生成後顯示每位員工的總工時與加班時數 Given 三月班表尚未生成 When 我按下 "生成排班" Then "杜蘭特" 的工時顯示 "168 h 0 h" And 其他 7 位員工的工時都顯示 "176 h 0 h" # ############################################ # 班別狀態 # ############################################ @班別狀態 @regression @auto @人力剛好 Scenario: 班次人數剛好符合需求時以紫色顯示 Given 三月班表尚未生成 When 我按下 "生成排班" Then "3/1" 的 "E" 班別狀態顯示 "2/2" 並以紫色標示 @班別狀態 @regression @auto @人力過載 Scenario: 班次人數超過需求時以黃色標示過載 Given 三月班表尚未生成 When 我按下 "生成排班" Then "3/1" 的 "D" 班別狀態顯示 "3/2" 並以黃色標示 @班別狀態 @regression @auto @人力缺口 Scenario: 班次人數不足需求時以紅色標示缺口 Given 三月班表尚未生成 When 我按下 "生成排班" Then "3/6" 的 "N" 班別狀態顯示 "0/1" 並以紅色標示 @待排班次 @regression @auto @人力缺口 Scenario: 待排班次列出當天缺少的班次 Given 三月班表已經生成 When 我切換到 "待排班次" 分頁 Then "3/6" 列出缺少的 "N" And "3/1" 沒有列出任何缺少的班次 @班別狀態 @regression @auto @空白班表 Scenario: 尚未生成時每天都顯示人力不足 Given 三月班表尚未生成 When 我切換到 "班別狀態" 分頁 Then "3/1" 的每日合計顯示 "0/5" 並以紅色標示 And "3/1" 的 "E" 班別狀態顯示 "0/2" 並以紅色標示 @班別狀態 @regression @auto @即時更新 Scenario: 手動把班次改成休假後班別狀態即時更新 Given 三月班表已經生成 When 我把 "杜蘭特" 在 "3/1" 的 "N" 改成 "休" Then "3/1" 的 "N" 班別狀態變為 "0/1" 並以紅色標示 And "杜蘭特" 的工時變為 "160 h 0 h"
# 頁面 code 路徑:index.html(工具列的復原/重做、右上角「發布」與發布狀態)# 註:產品圖 reference/01 顯示「未發布」狀態與發布按鈕;已發布的樣式與文案為推測(待確認)Feature: 調整與發布班表 作為一個排班管理者 我想要在生成後復原或重做操作,並在確認後發布班表 以便安心試排,並讓員工只看到正式的班表 Background: Given 我是 "Demo team W35" 的排班管理者 And 我正在看 "三月, 2026" 的月班表 # ############################################ # 復原與重做 # ############################################ @排班頁面 @regression @auto @復原生成 Scenario: 復原生成會回到空白班表 Given 三月班表尚未生成 And 我按下 "生成排班" 並完成生成 When 我按下 "復原" Then "艾倫" 在 "3/1" 沒有任何班次 And "艾倫" 的工時顯示 "0 h 0 h" @排班頁面 @regression @auto @重做生成 Scenario: 重做會恢復剛才的生成結果 Given 三月班表尚未生成 And 我生成排班後按下 "復原" When 我按下 "重做" Then "艾倫" 在 "3/1" 的班次是 "E" And "艾倫" 的工時顯示 "176 h 0 h" # ############################################ # 發布 # ############################################ @排班頁面 @regression @auto @未生成不能發布 Scenario: 尚未生成班表時無法發布 Given 三月班表尚未生成 When 我嘗試按下 "發布" Then "發布" 按鈕為停用 And 發布狀態仍顯示 "未發布" @排班頁面 @smoke @regression @auto @發布班表 Scenario: 生成後發布班表狀態變為已發布 Given 三月班表已經生成 When 我按下 "發布" Then 系統顯示 "班表已發布" And 發布狀態顯示 "已發布" @排班頁面 @regression @auto @重複發布 Scenario: 已發布的班表無法重複發布 Given 三月班表已經發布 When 我嘗試再按一次 "發布" Then "發布" 按鈕為停用 And 發布狀態仍顯示 "已發布" @排班頁面 @regression @auto @發布後調整 Scenario: 發布後再手動調整狀態回到未發布 Given 三月班表已經發布 When 我把 "杜蘭特" 在 "3/8" 的班次改成 "E" Then 發布狀態顯示 "未發布" And "發布" 按鈕恢復可以按
# 頁面 code 路徑:index.html(員工列的偏好頭像 → 偏好班次 → 選擇主要和次要)# 註:選單結構取自產品圖 reference/03-preference-menu.png;包班班次、固定班次的規則不在本次範圍# 註:選單標題「選擇主要和次要」代表最多兩個偏好;第三個被擋下時是否有提示文案,待確認Feature: 員工偏好班次 作為一個排班管理者 我想要記錄每位員工的主要與次要偏好班次 以便排班時優先滿足員工的合理需求 Background: Given 我是 "Demo team W35" 的排班管理者 And "三月, 2026" 的班表已經生成 # ############################################ # 設定偏好 # ############################################ @偏好選單 @smoke @regression @auto @設定偏好 Scenario: 設定員工的主要與次要偏好班次 Given "保羅" 尚未設定偏好班次 When 我把 "保羅" 的偏好依序選擇 "白班"、"大夜班" Then "白班" 標示為 "主要","大夜班" 標示為 "次要" And "保羅" 的偏好頭像依序顯示 "D"、"N" @偏好選單 @regression @auto @取消偏好 Scenario: 取消主要偏好後次要偏好遞補為主要 Given "杜蘭特" 的偏好為主要 "白班"、次要 "小夜班" When 我取消 "杜蘭特" 的 "白班" 偏好 Then "小夜班" 標示為 "主要" And "杜蘭特" 的偏好頭像只顯示 "E" @偏好選單 @regression @auto @邊界 @偏好已滿 Scenario: 已選兩個偏好時無法再選第三個 Given "艾倫" 的偏好為主要 "小夜班"、次要 "大夜班" When 我再選擇 "白班" Then "艾倫" 的偏好仍只有主要 "小夜班"、次要 "大夜班" # ############################################ # 偏好與生成結果 # ############################################ @排班頁面 @regression @auto @符合主要偏好 Scenario: 生成結果符合員工的主要偏好班次 Given "艾倫" 的主要偏好為 "小夜班" When 我查看 "艾倫" 的三月班表 Then "艾倫" 在三月被排的 22 個班全部是 "E"