用例審閱 待確認

Radiance Base「AI 一鍵生成排班」驗收:依官網 /feature 說明與產品圖還原的互動原型

完整流程共 8 個階段,下圖標出每個階段的產出與目前進度。用例設計的展開方式列在它下方:先用測試矩陣、狀態機與互動原型系統化展開,再寫成 BDD 情境,最後交給獨立評審打分。

覆蓋摘要

由設計產物自動計算。

40情境
25P0/P1 情境
8/8高風險已覆蓋
53/60矩陣列有情境
15狀態轉換
0人工驗收

驗收範圍

這次要驗收的內容與資料來源。

  • dochttps://www.radiancebase.com/feature
  • designreference/01-schedule-march-2026.png
  • designreference/02-shift-status-panel.png
  • designreference/03-preference-menu.png
  • designreference/04-generate-button-empty.png
  • designreference/05-violation-warnings.png
  • designreference/06-generate-marketing.png
  • designreference/07-hours-summary.png
  • codeindex.html

風險與覆蓋

P0 與 P1 必須被情境覆蓋,或寫明延後的理由。

  • R-1P0生成結果與預期班表不一致(格子錯位、班次代碼錯、漏格)主流程產出錯的班表,員工照錯的班上班,造成缺人或超時TC-1 TC-2 TC-8已覆蓋
  • R-2P0生成時沒有避開員工指定休假員工已核准的休假被排班,休假資料等同失效,是資料不一致TC-3 TC-39已覆蓋
  • R-3P1違反員工能力:非小夜班員工被排到小夜班,卻沒有提示不適任人力上關鍵時段,影響服務品質與營運安全TC-12 TC-13 TC-14已覆蓋
  • R-4P1超過期間最大工時沒有被偵測,或工時/加班時數算錯班表違反勞動規範,加班費計算依據錯誤TC-12 TC-15 TC-16 TC-17 TC-22已覆蓋
  • R-5P1班次最短間隔與最多連續工作天數沒有被檢核產生花班(例如 E 接 D 只休 8 小時)或連續上班過長,員工過勞TC-12 TC-18 TC-19 TC-20已覆蓋
  • R-6P1班別狀態(已排/需求)計算或顏色錯,人力缺口、過載顯示不正確排班者依錯誤的覆蓋率做決策,漏補缺口TC-23 TC-24 TC-25 TC-26 TC-27 TC-28已覆蓋
  • R-7P1重新生成時覆蓋手動調整卻沒有確認,或取消後仍被覆蓋排班者手動調整的成果遺失(資料損失)TC-5 TC-6 TC-7 TC-40已覆蓋
  • R-8P2生成或手動調整後,復原/重做讓狀態錯亂復原到錯誤版本,造成班表不一致;但可以重新生成或手動修正TC-29 TC-30已覆蓋
  • R-9P1生成後發布狀態不正確(未生成就能發布,或修改後仍顯示已發布)員工看到舊的或空的班表TC-31 TC-32 TC-33 TC-34 TC-40已覆蓋
  • R-10P2員工偏好(主要/次要)設定錯誤,或沒有反映在畫面上偏好無法被滿足,員工滿意度下降TC-35 TC-36 TC-37 TC-38已覆蓋
  • R-11P2生成中重複點擊造成重複生成或狀態卡住畫面閃爍或歷史紀錄重複TC-4已覆蓋
  • R-12P2切換月份、月週檢視、篩選班別後,生成結果顯示錯月或錯格看錯期間的班表TC-9 TC-10 TC-11已覆蓋
  • R-13P3顯示細節:週末灰字、休例 OFF 樣式、按鈕淡色狀態、提示文案辨識不易,但不影響資料TC-21已覆蓋

測試設計技法

12 種技法逐一判定;不適用必須寫出理由。

等價類劃分

equivalence

TC-1 TC-2 TC-3 TC-13 TC-14 TC-18 TC-27 TC-28 TC-35 TC-38

決策表

decision-table

TC-12 TC-13 TC-14 TC-16 TC-17 TC-18 TC-20 TC-21

正向/負向/例外路徑

path

TC-1 TC-5 TC-6 TC-7 TC-8 TC-13 TC-28 TC-31 TC-32 TC-33 TC-35 TC-37

角色與權限

role-permission · 不適用

context.outOfScope 已排除權限與多團隊切換;官網與產品圖只呈現排班管理者一種角色操作排班頁,沒有其他角色能看到或操作生成排班的畫面,也沒有可越權的「別人的班表」。員工平台是否只能看到已發布的班表,已列入待釐清問題

資料生命週期

data-lifecycle

TC-1 TC-2 TC-7 TC-39 TC-40 TC-9 TC-11 TC-27 TC-28 TC-31 TC-34 TC-35 TC-36

成對組合

pairwise · 不適用

影響結果的因子(員工能力、班次、工時、間隔、連續天數)各只有 2–3 個值,決策表 M-1 已逐列列出全部有意義的組合,不需要再用成對組合收斂

錯誤猜測

error-guessing

TC-4 TC-9 TC-10 TC-29 TC-30

併發與重複操作

concurrency

TC-4

外部依賴失效

dependency-failure

TC-8

環境與設定差異

environment

TC-16 TC-17

評審

依評分標準逐項打分;點開每個維度可以看到核對了什麼、為什麼扣分。

88/100

及格門檻 85 分 · 共 2 輪評審

  • 風險覆蓋20/20

    核對了什麼

    • R-1(P0) → TC-1, TC-2, TC-8(error)
    • R-2(P0) → TC-3, TC-39(state)
    • R-3 → TC-12, TC-13(negative), TC-14
    • R-4 → TC-15, TC-16(boundary), TC-17, TC-22
    • R-5 → TC-18(negative), TC-19, TC-20
    • R-6 → TC-23–TC-28,含 TC-25、TC-27 negative
    • R-7 → TC-5, TC-6(negative), TC-7, TC-40
    • R-9 → TC-31(negative), TC-32, TC-33, TC-34, TC-40
    • R-8/R-10/R-11/R-12/R-13(P2–P3)也都有情境,deferredRisks 為空
  • 技法與矩陣17/20

    核對了什麼

    • 12 項技法逐一核對:10 項適用,role-permission、pairwise 為 N/A
    • M-1 決策表:能力 × 班次 × 工時 × 間隔 × 連續天數,共 8 列
    • M-2 邊界:工時 168/176/184、連續 5/6/7 天、需求人數 少/剛好/多、月份 28/30/31 天、偏好 1/2/3 個
    • M-2 間隔 10–12 h 的 skipReason:8 小時班別的間隔只會是 8 的倍數,理由成立
    • M-4 路徑:生成與重新生成有正向、負向、例外;發布例外以 skipReason 處理
    • pairwise N/A:M-1 已列出全部有意義的組合,理由成立;role-permission N/A:對應 context.outOfScope,理由成立

    扣分

    • −3 M-4 「手動調整格子」是核心動作,例外路徑(儲存失敗)只以 skipReason 處理,沒有情境;理由是缺乏依據,已列入 openQuestions,但仍是覆蓋缺口
  • 狀態機10/10

    核對了什麼

    • 5 個狀態:未生成、生成中、已生成未發布、重新生成確認中、已發布
    • 13 條合法轉換都有情境(含第 1 輪補上的「已發布 → 重新生成確認中」TC-40,以及手動調整自轉換 TC-28)
    • 3 條非法轉換都有負向情境:未生成→已發布 TC-31、生成中重複觸發 TC-4、已發布重複發布 TC-33
  • 預期可判定15/15

    核對了什麼

    • 每個 Then 都有具體值:班表字串(TC-2)、"176 h 0 h"、"2/2" 加顏色、違規文案、"已發布"/"未發布"
    • TC-8 例外路徑寫出資料一致性:班表仍為空白、工時 "0 h 0 h"
    • 第 1 輪 TC-5「維持不變」已改成具體格子 "杜蘭特" 3/8 仍是 "D"
  • 依據真實5/10

    核對了什麼

    • R-1–R-5、R-10:生成、指定休假、偏好、能力、工時、間隔、連續天數都對應官網 /feature 原文
    • TC-2 班表資料對應 reference/01;TC-13/16/18/20 違規文案對應 reference/05;TC-35 偏好選單對應 reference/03;TC-23/24/25 狀態色對應 reference/02
    • TC-15/16/18/19/20 用到的參數(176 h/11 h/6 天)與 TC-23–TC-28 的需求人數為假設,已寫進 context.assumptions 與 openQuestions
    • TC-37 第 1 輪自行發明的提示文案已移除,改成只驗「仍只有主要與次要」(依據:選單標題「選擇主要和次要」)

    扣分

    • −5 TC-5 重新生成前跳出確認視窗(TC-5/6/7/39/40 共用)在官網與產品圖中沒有依據,屬於推測行為;雖已標示並列入 openQuestions,仍是自訂規則
  • BDD 品質13/15

    核對了什麼

    • generate-schedule.feature、schedule-rules.feature、schedule-overview.feature、schedule-adjust-publish.feature、employee-preference.feature:英文關鍵字、中文內容,沒有 # language;都有作為一個/我想要/以便三行
    • 每個 Scenario 都有 @regression;@smoke 只給 TC-1、TC-12、TC-22、TC-32、TC-35 這些核心成功流程
    • @邊界 只用於臨界值(TC-10/15/16/19/20/37)、故障(TC-8)、競態(TC-4);40 個情境都可程式驗證,都標 @auto
    • 第 1 輪一次驗兩件事的 TC-4、TC-7 已拆開或改寫,新增 TC-39 專驗保留休假

    扣分

    • −2 schedule-rules.feature 同一動作的措辭不一致:有時寫「的班次改成」、有時寫「的 "例" 改成」,工時有「顯示」也有「變為」,不利 step 重用
  • 精簡與原型8/10

    核對了什麼

    • 第 1 輪重複的 TC-1/TC-2(艾倫 3/1)與 TC-15/TC-22(艾倫 176 h)已去重
    • prototype:6 個畫面,含空白、已生成、已發布、週檢視、違規、生成失敗;生成中與停用狀態可以在畫面內操作出來
    • prototype:TC-1 到 TC-40 的情境示範已用 headless Chrome 逐一播放,所有選擇器都存在,預期值與 Then 一致
    • prototype:擴充為 13 個畫面,TC-13/14/17/22 的相關設定可在個人資料與排班需求頁實際操作

    扣分

    • −2 TC-15 TC-15 的「沒有超時違規」是 TC-12「沒有任何違規」的子集,兩者部分重疊
  • 第 1 輪 64 分:[狀態機] 缺「已發布 → 重新生成」(−5);[依據] TC-37 提示文案與重新生成確認都是自行發明(−10);[BDD] TC-4、TC-7 一次驗兩件事(−4);[預期] TC-5「維持不變」無法判定(−2);[精簡] TC-1/TC-2、TC-15/TC-22 重複(−4);[技法] 手動調整與偏好缺例外路徑、role-permission 理由薄弱(−11)
  • 修正:新增 TC-39(重新生成保留休假)、TC-40(已發布重新生成回到未發布);TC-37 改驗只保留兩個偏好;TC-5 改驗具體格子;TC-1、TC-22 去重;M-4 補上例外列與理由;role-permission 理由改為引用 context.outOfScope
  • 未採納:重新生成確認視窗(TC-5/6/7/39/40)保留。理由:R-7 手動調整遺失屬於 P1 資料損失風險,需要有情境;prod 行為待 PM 確認後再調整預期
  • 未採納:手動調整與偏好的例外路徑沒有補情境。理由:沒有任何依據,硬寫等於發明規則,已列入 openQuestions
  • 第 2 輪 88 分,達門檻 85
  • 原型擴充(使用者要求):依官網補上 Σ 工時統計、班別狀態職級展開、排班需求參數頁、員工列表與個人資料(含個人班表、可編輯能力)、一鍵發送個人班表、班別設定、員工平台,共 13 個畫面;情境不變,周邊規則是否納入驗收已列入 openQuestions
  • 手機版逐一檢查(13 個畫面+10 種互動):修正月曆標頭換行、班別時段換行、違規卡片遮住班表(改成點徽章展開)、發布狀態被隱藏、員工與班別表格擠成直排、員工平台月曆擠壓、手機無法切換頁面(側欄改成底部分頁列)、偏好頭像被隱藏
  • 原型新增「四週內最少休息天數 8 天」(官網原值)後,TC-19 的「畫面沒有顯示違規數字徽章」不再成立,改成只驗證「沒有超過最多連續工作天數的違規」;TC-21 的違規數由 4 改為 5
  • 原型依官方操作指南影片與官網英文版再擴充:員工管理(員工資訊列表含搜尋/勾選/匯出/⋮ 選單、出勤與工時)、個人資料(FTE、證照、聯絡資訊可編輯含格式驗證、工作狀態的工時與休假紀錄)、員工平台(我的班表、工時紀錄、預假申請連動管理者班表、偏好班次)、說明中心(快速上手、操作影片、可搜尋 FAQ、聯絡資訊)、語言切換(繁中/English),共 17 個畫面;情境不變

待釐清

需要需求方回答的問題,會影響預期結果。

  • prod 的需求人數與排班參數預設值是多少?目前用假設值
  • 重新生成時,prod 會保留手動調整過的格子,還是全部覆蓋?
  • 「休」「例」「OFF」三者在 prod 的業務定義與差別是什麼?
  • 班別狀態格的顏色規則是否為:黃=超額、紫=剛好、紅=不足?
  • 包班班次、固定班次對生成結果的影響規則是什麼?
  • 生成失敗時 prod 顯示的錯誤文案與重試方式?原型暫用「排班生成失敗,請稍後再試(待確認)」
  • 已選兩個偏好班次時再選第三個,prod 是擋下、取代次要,還是允許多選?
  • 重新整理頁面後,未發布的班表是否自動保存為草稿?發布失敗時的畫面與資料狀態?
  • 手動調整或偏好儲存失敗時,prod 的畫面與資料狀態為何?
  • 員工平台是否只能看到「已發布」的班表?是否有多角色權限(例如組長只能排自己的組)?
  • 排班頁是否支援手機瀏覽器?
  • 原型依官網補上的周邊規則(非大夜班員工不能安排大夜班、每週最多工作時數、兩週/四週內最少休息天數)是否要納入本次驗收?目前只在原型中可互動,尚未寫成情境
  • 一鍵發送個人班表是否只能在發布後使用?
  • 官方操作指南影片(2024/11)顯示「建立班表」為 4 步驟精靈(開始→選擇休假→加入偏好班次→生成),官網 2026 產品圖則是單一「生成排班」按鈕;prod 目前是哪一種?
  • 登入的密碼步驟、錯誤文案、忘記密碼流程沒有公開畫面(只有第一步電子郵件頁),原型為推測;切換團隊時各團隊的班表、發布狀態、預假是否各自獨立?
  • 員工平台的員工端流程(預假申請、偏好設定、查看班表的權限)沒有公開畫面,原型為推測;停用的員工是否排除於生成?

每一列是一個要驗證的條件組合。有對應情境的列會標出情境編號;不測的列必須寫明理由。

排班規則檢核決策表

M-1 · 決策表 · 8 / 8 列有情境

影響「是否顯示違規」的條件組合。參數為假設值:工時上限 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 h7超過最多連續工作天數TC-20
違規組合————多項違規同時列出並可點選定位TC-21

門檻邊界值

M-2 · 邊界值分析 · 17 / 18 列有情境
門檻值類別預期情境
期間最大工時 176 h168 h(杜蘭特)內側加班 0 h、無違規TC-22
期間最大工時 176 h176 h(艾倫)剛好加班 0 h、無違規TC-15
期間最大工時 176 h184 h外側加班 8 h、超時違規TC-16
最多連續工作 6 天5 天(生成結果最長)內側無違規TC-12
最多連續工作 6 天6 天剛好無違規TC-19
最多連續工作 6 天7 天外側連續天數違規TC-20
最短間隔 11 h10 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 h8 h(E→D)外側班次間隔不足TC-18
最短間隔 11 h24 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

班表格子與員工條件的等價類

M-3 · 等價類劃分 · 10 / 10 列有情境
輸入類別代表值預期情境
格子值班次 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
員工能力可值小夜班杜蘭特可排 ETC-14
員工能力不可值小夜班保羅排 E 時違規TC-13
偏好有主要偏好艾倫 E生成結果符合主要偏好TC-38
偏好未設定偏好保羅可設定主要與次要TC-35

動作的正向/負向/例外路徑

M-4 · 正向/負向/例外路徑 · 5 / 8 列有情境
動作正向負向(規則擋下)例外(系統錯誤)情境
生成排班(空白班表)產出完整班表—服務失敗時顯示錯誤,班表不變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
設定偏好(例外)——儲存偏好失敗不測同上:產品圖沒有偏好儲存失敗的依據,已列入待釐清問題

班表與偏好的資料生命週期

M-5 · 資料生命週期 · 7 / 8 列有情境
物件操作情況預期情境
月班表新增空白→生成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

錯誤猜測

M-6 · 錯誤猜測 · 4 / 5 列有情境
類型情境預期情境
連續操作生成中連按兩次只生成一次TC-4
時間跨月切換後回到原月份原月份班表不變TC-9
時間二月只有 28 天不排出 2/29–2/31TC-10
流程中斷生成後復原再重做回到正確版本TC-29 TC-30
流程中斷重新整理頁面後未發布的班表是否保留—不測原型沒有持久化,prod 是否自動儲存草稿沒有依據,已列入待釐清問題

排班參數與裝置差異

M-7 · 環境與設定差異 · 2 / 3 列有情境
設定值預期差異情境
期間最大工時176 h(預設)184 h 顯示超時違規TC-16
期間最大工時184 h184 h 不違規、加班 0 hTC-17
裝置手機瀏覽器—不測官網與產品圖只有桌面版排班畫面,行動版排班行為沒有依據,已列入待釐清問題

功能中的狀態與轉換。允許的轉換都要有情境走過;系統必須阻擋的轉換也要有負向情境驗證。

月班表

只畫出允許的轉換。

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

在左側點選情境,右側會自動示範該情境的操作與結果;也可以直接在畫面上點擊、輸入,自由走一遍流程。 在新分頁開啟原型 ↗

每個情境一段:前置條件、操作、預期結果。逐條核對後打勾,勾選只存在你的瀏覽器中。

generate-schedule.feature

一鍵生成排班

作為一個排班管理者我想要依人力需求與員工條件一鍵產出整個月的班表以便省去手動排班的時間並得到符合規則的最佳班表

生成結果3

TC-1

空白班表一鍵生成排班後每位員工每天都有排定結果

排班頁面空白班表正向冒煙P0

前置條件

  • 我是 "Demo team W35" 的排班管理者
  • 我正在看 "三月, 2026" 的月班表
  • 三月班表尚未生成

操作

  • 我按下 "生成排班"

預期結果

  • 系統顯示 "已生成 三月 班表"
  • 8 位員工在 "3/1" 到 "3/31" 的每一格都是班次或休假,沒有空白格
TC-2

生成的三月班表與產品圖逐格一致

排班頁面產品圖對照回歸P0

前置條件

  • 我是 "Demo team W35" 的排班管理者
  • 我正在看 "三月, 2026" 的月班表
  • 三月班表尚未生成

操作

  • 我按下 "生成排班"

預期結果

  • "艾倫" 的三月班表為 "EEEExxyEEEEyEEEEEyEEEExEEyxEEEy"
  • "柯瑞" 的三月班表為 "yEExEEEEEyxEEExyEEEEExEExyEEEEE"
  • "杜蘭特" 的三月班表為 "NyxDDDDDxyDDDDDyxxxDyDDDDDyDDDD"
  • "哈登" 的三月班表為 "DDDDyDDDDDxyxxyDDDDyDDDDDyDDDoD"
  • "馬龍" 的三月班表為 "EyEEEExxyEEEEExyxEEEyEEEEEyEEEE"
  • "保羅" 的三月班表為 "xNNNNyNNNNyNNNNNyNNNNxxyyxDDDDD"
  • "戴維斯" 的三月班表為 "DDDDDxyxDDDDDyxNNNNNyNNNNxyNNyN"
  • "約基奇" 的三月班表為 "DDyxDDDDDyNNNNNyNNNxxyNNNNNyNNx"
TC-3

生成排班時避開員工指定休假

排班頁面指定休假正向P0

前置條件

  • 我是 "Demo team W35" 的排班管理者
  • 我正在看 "三月, 2026" 的月班表
  • "哈登" 已預填指定休假 "3/11"、"3/13"、"3/14"

操作

  • 我按下 "生成排班"

預期結果

  • "哈登" 在 "3/11"、"3/13"、"3/14" 都是 "休"
  • "哈登" 在這三天都沒有被排任何班次

重複觸發與重新生成6

TC-4

生成中連按兩次只會生成一次

排班頁面生成中連點併發邊界P2

前置條件

  • 我是 "Demo team W35" 的排班管理者
  • 我正在看 "三月, 2026" 的月班表
  • 三月班表尚未生成

操作

  • 我在生成進行中連續按兩次 "生成排班"

預期結果

  • 只產生一次生成紀錄,我按一次 "復原" 就回到尚未生成的空白班表
TC-5

已有班表時再按生成排班會先詢問是否重新生成

排班頁面已有班表狀態P1

前置條件

  • 我是 "Demo team W35" 的排班管理者
  • 我正在看 "三月, 2026" 的月班表
  • 三月班表已經生成

操作

  • 我按下 "生成排班"

預期結果

  • 系統顯示確認視窗 "重新生成排班?"
  • "杜蘭特" 在 "3/8" 的班次仍然是 "D"
TC-6

取消重新生成時保留我的手動調整

排班頁面取消重新生成負向P1

前置條件

  • 我是 "Demo team W35" 的排班管理者
  • 我正在看 "三月, 2026" 的月班表
  • 三月班表已經生成
  • 我把 "杜蘭特" 在 "3/8" 的班次改成 "E"

操作

  • 我按下 "生成排班" 後在確認視窗選擇 "取消"

預期結果

  • "杜蘭特" 在 "3/8" 的班次仍然是 "E"
TC-7

確認重新生成時覆蓋我的手動調整

排班頁面確認重新生成狀態P1

前置條件

  • 我是 "Demo team W35" 的排班管理者
  • 我正在看 "三月, 2026" 的月班表
  • 三月班表已經生成
  • 我把 "杜蘭特" 在 "3/8" 的班次改成 "E"

操作

  • 我按下 "生成排班" 後在確認視窗選擇 "重新生成"

預期結果

  • "杜蘭特" 在 "3/8" 的班次變回 "D"
TC-39

重新生成後員工指定休假仍然保留

排班頁面重新生成保留休假狀態P0

前置條件

  • 我是 "Demo team W35" 的排班管理者
  • 我正在看 "三月, 2026" 的月班表
  • 三月班表已經生成
  • 我把 "哈登" 在 "3/11" 的 "休" 改成 "D"

操作

  • 我按下 "生成排班" 後在確認視窗選擇 "重新生成"

預期結果

  • "哈登" 在 "3/11" 回到指定休假 "休"
TC-40

已發布的班表重新生成後狀態回到未發布

排班頁面發布後重新生成狀態P1

前置條件

  • 我是 "Demo team W35" 的排班管理者
  • 我正在看 "三月, 2026" 的月班表
  • 三月班表已經發布

操作

  • 我按下 "生成排班" 後在確認視窗選擇 "重新生成"

預期結果

  • 發布狀態顯示 "未發布"

例外與跨月份4

TC-8

排班服務失敗時顯示錯誤且班表維持原狀

排班頁面排班服務失敗例外邊界P1

前置條件

  • 我是 "Demo team W35" 的排班管理者
  • 我正在看 "三月, 2026" 的月班表
  • 三月班表尚未生成
  • 排班服務暫時無法回應

操作

  • 我按下 "生成排班"

預期結果

  • 系統顯示 "排班生成失敗,請稍後再試(待確認)"
  • 三月班表仍然是空白,"艾倫" 的工時為 "0 h 0 h"
TC-9

在四月生成排班不影響已生成的三月班表

排班頁面切換月份回歸P2

前置條件

  • 我是 "Demo team W35" 的排班管理者
  • 我正在看 "三月, 2026" 的月班表
  • 三月班表已經生成

操作

  • 我切換到 "四月, 2026" 並生成排班
  • 我切換回 "三月, 2026"

預期結果

  • "艾倫" 的三月班表仍為 "EEEExxyEEEEyEEEEEyEEEExEEyxEEEy"
TC-10

二月生成排班只排到 28 日

排班頁面二月天數邊界邊界P2

前置條件

  • 我是 "Demo team W35" 的排班管理者
  • 我正在看 "三月, 2026" 的月班表
  • "二月, 2026" 的班表尚未生成

操作

  • 我在 "二月, 2026" 按下 "生成排班"

預期結果

  • 班表只顯示 "2/1" 到 "2/28" 共 28 天
  • "艾倫" 在 "2/28" 有排定結果
TC-11

切換週檢視顯示同一份生成結果

排班頁面週檢視正向P3

前置條件

  • 我是 "Demo team W35" 的排班管理者
  • 我正在看 "三月, 2026" 的月班表
  • 三月班表已經生成

操作

  • 我把檢視切換為 "週"

預期結果

  • 班表只顯示 "3/1" 到 "3/7" 共 7 天
  • "艾倫" 在 "3/1" 的班次仍然是 "E"
schedule-rules.feature

排班規則檢核

作為一個排班管理者我想要在生成與調整班表時自動檢核工時、休息、連續天數與員工能力以便確保班表符合勞動規範,並讓關鍵時段由適任的人負責

生成結果合規1

TC-12

生成結果沒有任何排班規則違規

排班頁面生成結果合規正向冒煙P1

前置條件

  • 我是 "Demo team W35" 的排班管理者
  • 我正在看 "三月, 2026" 的月班表
  • 三月班表尚未生成

操作

  • 我按下 "生成排班"

預期結果

  • 畫面沒有顯示違規數字徽章
  • 沒有任何格子被標示紅框

員工能力2

TC-13

非小夜班員工被排小夜班時顯示違規

排班頁面不可值小夜班負向P1

前置條件

  • 我是 "Demo team W35" 的排班管理者
  • 我正在看 "三月, 2026" 的月班表
  • 三月班表已經生成

操作

  • 我把 "保羅" 在 "3/5" 的班次改成 "E"

預期結果

  • 系統顯示違規 "非小夜班員工不能安排小夜班"
  • "保羅" 在 "3/5" 的格子被標示紅框
TC-14

可值小夜班的員工改排小夜班不顯示違規

排班頁面可值小夜班正向P2

前置條件

  • 我是 "Demo team W35" 的排班管理者
  • 我正在看 "三月, 2026" 的月班表
  • 三月班表已經生成

操作

  • 我把 "杜蘭特" 在 "3/8" 的班次改成 "E"

預期結果

  • 畫面沒有顯示違規數字徽章

工時上限3

TC-15

工時剛好等於期間上限 176 小時不算加班

排班頁面工時剛好上限邊界邊界P1

前置條件

  • 我是 "Demo team W35" 的排班管理者
  • 我正在看 "三月, 2026" 的月班表
  • 三月班表尚未生成

操作

  • 我按下 "生成排班"

預期結果

  • "艾倫" 的工時顯示 "176 h 0 h"
  • 沒有 "超過期間最大工作時數" 的違規
TC-16

工時超過期間上限一個班時顯示超時違規

排班頁面工時超過上限邊界邊界P1

前置條件

  • 我是 "Demo team W35" 的排班管理者
  • 我正在看 "三月, 2026" 的月班表
  • 三月班表已經生成

操作

  • 我把 "艾倫" 在 "3/31" 的 "例" 改成 "E"

預期結果

  • "艾倫" 的工時顯示 "184 h 8 h"
  • 系統顯示違規 "超過期間最大工作時數"
TC-17

期間最大工時調高為 184 小時後同樣班表不顯示違規

排班頁面調整工時參數正向P2

前置條件

  • 我是 "Demo team W35" 的排班管理者
  • 我正在看 "三月, 2026" 的月班表
  • 三月班表已經生成
  • 排班參數「期間最大工時」設定為 "184" 小時

操作

  • 我把 "艾倫" 在 "3/31" 的 "例" 改成 "E"

預期結果

  • "艾倫" 的工時顯示 "184 h 0 h"
  • 畫面沒有顯示違規數字徽章

班次間隔與連續工作3

TC-18

小夜班隔天接白班間隔不足時顯示違規

排班頁面班次間隔不足負向P1

前置條件

  • 我是 "Demo team W35" 的排班管理者
  • 我正在看 "三月, 2026" 的月班表
  • 三月班表已經生成

操作

  • 我把 "艾倫" 在 "3/9" 的班次從 "E" 改成 "D"

預期結果

  • 系統顯示違規 "班次間隔不足",說明為 "3/8→9 間隔 8 h"
TC-19

連續工作剛好 6 天不顯示連續天數違規

排班頁面連續工作六天邊界邊界P1

前置條件

  • 我是 "Demo team W35" 的排班管理者
  • 我正在看 "三月, 2026" 的月班表
  • 三月班表已經生成

操作

  • 我把 "杜蘭特" 在 "3/9" 的 "休" 改成 "D"

預期結果

  • "杜蘭特" 從 "3/4" 到 "3/9" 連續上班 6 天
  • 沒有 "超過最多連續工作天數" 的違規
TC-20

連續工作 7 天顯示超過最多連續工作天數

排班頁面連續工作七天邊界邊界P1

前置條件

  • 我是 "Demo team W35" 的排班管理者
  • 我正在看 "三月, 2026" 的月班表
  • 三月班表已經生成
  • 我已把 "杜蘭特" 在 "3/11" 改成 "休"、"3/9" 改成 "D"

操作

  • 我把 "杜蘭特" 在 "3/10" 的 "例" 改成 "D"

預期結果

  • 系統顯示違規 "超過最多連續工作天數",說明為 "杜蘭特 連續 7 天"

違規提示的操作1

TC-21

點選違規提示會定位到違規的格子

排班頁面違規定位介面P3

前置條件

  • 我是 "Demo team W35" 的排班管理者
  • 我正在看 "三月, 2026" 的月班表
  • 三月班表已經生成並經手動調整後有 "5" 項違規

操作

  • 我點選違規 "超過最多連續工作天數"

預期結果

  • 班表捲動到 "杜蘭特" 在 "3/10" 的紅框格子
schedule-overview.feature

差勤概況與人力需求提示

作為一個排班管理者我想要一眼看到每位員工的工時,以及每天每個班次的人力覆蓋狀況以便及早發現人力缺口與過載,並即時調整班表

員工工時1

TC-22

生成後顯示每位員工的總工時與加班時數

排班頁面員工工時正向冒煙P1

前置條件

  • 我是 "Demo team W35" 的排班管理者
  • 我正在看 "三月, 2026" 的月班表
  • 三月班表尚未生成

操作

  • 我按下 "生成排班"

預期結果

  • "杜蘭特" 的工時顯示 "168 h 0 h"
  • 其他 7 位員工的工時都顯示 "176 h 0 h"

班別狀態6

TC-23

班次人數剛好符合需求時以紫色顯示

班別狀態人力剛好正向P1

前置條件

  • 我是 "Demo team W35" 的排班管理者
  • 我正在看 "三月, 2026" 的月班表
  • 三月班表尚未生成

操作

  • 我按下 "生成排班"

預期結果

  • "3/1" 的 "E" 班別狀態顯示 "2/2" 並以紫色標示
TC-24

班次人數超過需求時以黃色標示過載

班別狀態人力過載正向P1

前置條件

  • 我是 "Demo team W35" 的排班管理者
  • 我正在看 "三月, 2026" 的月班表
  • 三月班表尚未生成

操作

  • 我按下 "生成排班"

預期結果

  • "3/1" 的 "D" 班別狀態顯示 "3/2" 並以黃色標示
TC-25

班次人數不足需求時以紅色標示缺口

班別狀態人力缺口負向P1

前置條件

  • 我是 "Demo team W35" 的排班管理者
  • 我正在看 "三月, 2026" 的月班表
  • 三月班表尚未生成

操作

  • 我按下 "生成排班"

預期結果

  • "3/6" 的 "N" 班別狀態顯示 "0/1" 並以紅色標示
TC-26

待排班次列出當天缺少的班次

待排班次人力缺口正向P1

前置條件

  • 我是 "Demo team W35" 的排班管理者
  • 我正在看 "三月, 2026" 的月班表
  • 三月班表已經生成

操作

  • 我切換到 "待排班次" 分頁

預期結果

  • "3/6" 列出缺少的 "N"
  • "3/1" 沒有列出任何缺少的班次
TC-27

尚未生成時每天都顯示人力不足

班別狀態空白班表負向P2

前置條件

  • 我是 "Demo team W35" 的排班管理者
  • 我正在看 "三月, 2026" 的月班表
  • 三月班表尚未生成

操作

  • 我切換到 "班別狀態" 分頁

預期結果

  • "3/1" 的每日合計顯示 "0/5" 並以紅色標示
  • "3/1" 的 "E" 班別狀態顯示 "0/2" 並以紅色標示
TC-28

手動把班次改成休假後班別狀態即時更新

班別狀態即時更新狀態P1

前置條件

  • 我是 "Demo team W35" 的排班管理者
  • 我正在看 "三月, 2026" 的月班表
  • 三月班表已經生成

操作

  • 我把 "杜蘭特" 在 "3/1" 的 "N" 改成 "休"

預期結果

  • "3/1" 的 "N" 班別狀態變為 "0/1" 並以紅色標示
  • "杜蘭特" 的工時變為 "160 h 0 h"
schedule-adjust-publish.feature

調整與發布班表

作為一個排班管理者我想要在生成後復原或重做操作,並在確認後發布班表以便安心試排,並讓員工只看到正式的班表

復原與重做2

TC-29

復原生成會回到空白班表

排班頁面復原生成狀態P2

前置條件

  • 我是 "Demo team W35" 的排班管理者
  • 我正在看 "三月, 2026" 的月班表
  • 三月班表尚未生成
  • 我按下 "生成排班" 並完成生成

操作

  • 我按下 "復原"

預期結果

  • "艾倫" 在 "3/1" 沒有任何班次
  • "艾倫" 的工時顯示 "0 h 0 h"
TC-30

重做會恢復剛才的生成結果

排班頁面重做生成狀態P2

前置條件

  • 我是 "Demo team W35" 的排班管理者
  • 我正在看 "三月, 2026" 的月班表
  • 三月班表尚未生成
  • 我生成排班後按下 "復原"

操作

  • 我按下 "重做"

預期結果

  • "艾倫" 在 "3/1" 的班次是 "E"
  • "艾倫" 的工時顯示 "176 h 0 h"

發布4

TC-31

尚未生成班表時無法發布

排班頁面未生成不能發布負向P1

前置條件

  • 我是 "Demo team W35" 的排班管理者
  • 我正在看 "三月, 2026" 的月班表
  • 三月班表尚未生成

操作

  • 我嘗試按下 "發布"

預期結果

  • "發布" 按鈕為停用
  • 發布狀態仍顯示 "未發布"
TC-32

生成後發布班表狀態變為已發布

排班頁面發布班表正向冒煙P1

前置條件

  • 我是 "Demo team W35" 的排班管理者
  • 我正在看 "三月, 2026" 的月班表
  • 三月班表已經生成

操作

  • 我按下 "發布"

預期結果

  • 系統顯示 "班表已發布"
  • 發布狀態顯示 "已發布"
TC-33

已發布的班表無法重複發布

排班頁面重複發布負向P3

前置條件

  • 我是 "Demo team W35" 的排班管理者
  • 我正在看 "三月, 2026" 的月班表
  • 三月班表已經發布

操作

  • 我嘗試再按一次 "發布"

預期結果

  • "發布" 按鈕為停用
  • 發布狀態仍顯示 "已發布"
TC-34

發布後再手動調整狀態回到未發布

排班頁面發布後調整狀態P1

前置條件

  • 我是 "Demo team W35" 的排班管理者
  • 我正在看 "三月, 2026" 的月班表
  • 三月班表已經發布

操作

  • 我把 "杜蘭特" 在 "3/8" 的班次改成 "E"

預期結果

  • 發布狀態顯示 "未發布"
  • "發布" 按鈕恢復可以按
employee-preference.feature

員工偏好班次

作為一個排班管理者我想要記錄每位員工的主要與次要偏好班次以便排班時優先滿足員工的合理需求

設定偏好3

TC-35

設定員工的主要與次要偏好班次

偏好選單設定偏好正向冒煙P2

前置條件

  • 我是 "Demo team W35" 的排班管理者
  • "三月, 2026" 的班表已經生成
  • "保羅" 尚未設定偏好班次

操作

  • 我把 "保羅" 的偏好依序選擇 "白班"、"大夜班"

預期結果

  • "白班" 標示為 "主要","大夜班" 標示為 "次要"
  • "保羅" 的偏好頭像依序顯示 "D"、"N"
TC-36

取消主要偏好後次要偏好遞補為主要

偏好選單取消偏好狀態P2

前置條件

  • 我是 "Demo team W35" 的排班管理者
  • "三月, 2026" 的班表已經生成
  • "杜蘭特" 的偏好為主要 "白班"、次要 "小夜班"

操作

  • 我取消 "杜蘭特" 的 "白班" 偏好

預期結果

  • "小夜班" 標示為 "主要"
  • "杜蘭特" 的偏好頭像只顯示 "E"
TC-37

已選兩個偏好時無法再選第三個

偏好選單偏好已滿邊界邊界P2

前置條件

  • 我是 "Demo team W35" 的排班管理者
  • "三月, 2026" 的班表已經生成
  • "艾倫" 的偏好為主要 "小夜班"、次要 "大夜班"

操作

  • 我再選擇 "白班"

預期結果

  • "艾倫" 的偏好仍只有主要 "小夜班"、次要 "大夜班"

偏好與生成結果1

TC-38

生成結果符合員工的主要偏好班次

排班頁面符合主要偏好正向P2

前置條件

  • 我是 "Demo team W35" 的排班管理者
  • "三月, 2026" 的班表已經生成
  • "艾倫" 的主要偏好為 "小夜班"

操作

  • 我查看 "艾倫" 的三月班表

預期結果

  • "艾倫" 在三月被排的 22 個班全部是 "E"

沒有符合篩選條件的情境。

以下 Gherkin 是用例的原文,確認後會直接轉成自動化測試。

步驟顏色

Given、When、Then 各用一種顏色,一眼分出前置、操作與結果。

Given前置條件When操作Then預期結果And/But 沿用上一個步驟的顏色

Tag 說明

CLI 依 tag 做覆蓋檢查。

套件@regression 每個情境都要有;核心正向流程再加 @smoke
執行@auto 代表可以自動化;沒有 @auto 就是人工驗收
性質@邊界 只標臨界值、資源耗盡、競態、故障這類極端情境
描述其餘中文 tag 描述頁面與情境條件,例如 @登入頁面 @密碼錯誤
編號情境編號、優先級與風險記在 design.json,不放進 tag
design/features/generate-schedule.feature
# 頁面 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"
design/features/schedule-rules.feature
# 頁面 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" 的紅框格子
design/features/schedule-overview.feature
# 頁面 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"
design/features/schedule-adjust-publish.feature
# 頁面 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 "發布" 按鈕恢復可以按
design/features/employee-preference.feature
# 頁面 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"