班表
班表管理設定每位服務人員的可預約工作時段。系統依班表計算哪些時間可供顧客預約,未排班的時段不開放預約。班表以「人員 × 日期」矩陣呈現,可逐格點擊編輯。
多分店:班別設定 / 特殊日期是 per-store
shifts@storeId、exception_shifts@storeId)。
頂部 banner 顯示「正在編輯:[分店名] / 全店共用」,儲存只影響 banner 上顯示的那一間。
班表矩陣本身則是依登入身份 + 當前門市 filter 出該店人員的班次,毋須手動切。進入路徑
後台左側 美業預約 → 班表。
時間一律用 24 小時制下拉選(2026-08-17 起)
本頁所有要填時間的地方 —— 班別設定、特殊日期的縮短營業時段、點格子編輯班次 —— 都改成「時」「分」兩個下拉選單,一律 24 小時制。
- 不會再出現「上午 / 下午」:以前用的是瀏覽器內建的時間欄位,顯示 12 或 24 小時制是由裝置的語言設定決定的,同一套系統在不同平板上長得不一樣,排「晚班 17:20」時特別容易看成「下午 05:20」而設錯。改成下拉後每台裝置看到的都一樣。
- 分鐘每 5 分一格(00、05、10…55),不必再手動敲數字。
- 既有的時間不會被吸走:若您以前設過 09:17 這種不在 5 分格線上的時間,下拉會把 09:17 這個選項一起列出來並保持選中,只是進來改別的欄位不會把它偷偷改成 09:15 或 09:20。
美業的新增預約與預約詳情改時間也是同一套下拉,見「模組總覽」。
班別設定
點擊頁面右上 班別設定 按鈕,可定義本店常用的班別名稱與時段(例:早班 09:00–13:00、晚班 14:00–18:00)。
設定後的好處:
快速排班 點任意班表格子編輯時,會出現班別 chip 一鍵套用,不必每次手動填時段。
CSV 匯入對應 CSV 批次匯入排班時,系統以「班別名稱」對應這裡設定的起訖時間,欄位 shifts 填「早班」即可。
矩陣圖例 矩陣上方圖例會顯示各班別的對應顏色,方便辨識。
班別設定不會直接綁定班表,僅作為「命名快捷鍵」用途;改時段不會回頭異動已建立的班表。
特殊日期 / 店休
點擊頁面右上 特殊日期 按鈕,可指定某些日期全店休假或縮短營業,LIFF 預約頁該日不可選;客人會看到您填寫的原因。
兩種模式:
全店休假 該日所有設計師都停業,客人在 LIFF 看到「店休:{原因}」。
縮短營業 該日縮減所有設計師的班表交集到您指定的時段(可設多段)。例:原本 10:00–20:00,特殊日改 13:00–17:00。
每筆需填日期 + 原因(會顯示給客人,建議寫「店內裝修」「員工旅遊」等)。特殊日期是疊加邏輯,會跟設計師原班表的時段取交集;若該日某設計師原本就休假,特殊日期不會讓他變上班。
矩陣視圖
頁面以「人員 × 日期」矩陣呈現所有服務人員的排班,可切換:
整月 顯示整個月份,欄位較密但一次看完。
2 週 從指定起始日往後 14 天,欄位較寬鬆,適合精細調整。
矩陣的每一格代表「某人員 × 某日」的班次,已排班顯示對應班別的彩色 chip,「休」顯示灰色「休」字,未設定顯示空白點,今日格背景為琥珀色。
最右側「天數」欄位即時顯示該人員本期間「總天數 / 工作天 / 休假天」。
編輯班次
直接點任意格子即可開編輯 modal:
- 已設好的班別會以 chip 形式列出,點一下即一鍵套用該班別
- 也可自行選起訖時間(自訂班次),時 / 分兩個 24 小時制下拉
- 切「休」標記為休假
- 同一日可加多個時段(例:上午 + 下午分開兩個班次)
儲存後該格子即更新;矩陣即時刷新。
班別的「最晚可預約」(2026-09-04)
編輯班次時,每一個時段下面都有一格 最晚可預約:這個班別最晚幾點可以「開始」一筆線上預約。
| 填法 | 意思 |
|---|---|
| 留空(沿用)(預設) | 沿用全店的預設值。欄位旁邊會把全店目前的值直接寫出來(「沿用全店設定:最晚 17:30 開始」或「未設定,不限制」),不用回去翻設定頁 |
| 填一個時刻 | 只覆寫這一個班別。可以比全店晚,也可以比全店早。欄位旁會顯示「此班別最晚 HH:MM 開始(已覆寫全店設定)」 |
有覆寫的班別,在矩陣視圖的格子上就看得出來——chip 的文字後面會多一段「最晚 HH:MM」,不必點進去才知道。
規則:填的時間必須落在這個班別的起訖時間之內;不在範圍內或格式不對時儲存會被擋下並說明原因。
這一格管的是「最晚幾點開始」,不是「最晚做到幾點」
全店預設值在哪裡設、不指定設計師時怎麼算,見「預約設定 → 最晚可預約開始時間」。
跨夜班表(2026-07-08 F108)
支援「跨過午夜」的班別,適合夜間營業型美業(美睫夜店、SPA 深夜檔)或補班到凌晨情境。
使用方式
編輯 modal 內結束時間選一個比開始時間更早的時鐘時間即代表跨夜:
- 例:
12:00 - 00:30→ 系統識別為跨夜 12.5 小時班次(當日中午上班到隔日凌晨 00:30) - 例:
22:00 - 04:00→ 跨夜 6 小時 - 例:
09:00 - 18:00→ 一般班別(未跨夜)
儲存後,班表矩陣該格會標示「跨夜」提示,方便辨識。
20 小時上限
單一班別(無論是否跨夜)時長不得超過 20 小時。若填 08:00 - 05:00 系統會擋下並回錯誤訊息:
班別 08:00-05:00 時長 21.0 小時,超過單一班別 20 小時上限
若需超過 20 小時排班,請切成兩段(例:08:00-18:00 + 20:00-04:00)。
顧客端 LIFF 呈現
跨夜班表在 LIFF 預約介面:
- 當日時段(12:00-23:59)正常顯示
- 隔日凌晨時段(00:00-00:30)在 slot 上顯示 amber「隔日」badge,避免顧客誤以為當日凌晨
- 顧客點下訂位單成立後:
reserved_date = 實際發生日(隔日 slot 存隔日日期),reserved_time = 00:00-23:59(永不 > 24:00)
DB 儲存契約
beauty_schedules.shifts:JSONB 陣列,每筆{ start: "12:00", end: "00:30" }(end < start即跨夜語意,DB 端不 +1440)beauty_bookings.reserved_time:永遠00:00-23:59(TIME 型別,不表達跨夜)beauty_bookings.reserved_date:實際發生的日期(跨夜時 = 班表日 +1)
跨夜班次的預約管理
批次操作
複製班表
三種複製範圍,作用方式相同,只有「從哪裡複製到哪裡」不一樣:
複製到下一天 入口在矩陣視圖每一個日期欄的表頭(日期下方的向右箭頭)。把該日全部人員的班表複製到隔天。因為它的作用範圍就是那一欄,所以按鈕放在那一欄上。
複製到下一週 入口在頁面右上方工具列。把基準日所在那一週(週一到週日)複製到下一週的同樣七天。
複製整月到下月 入口在頁面右上方工具列。把當前月份複製到下個月,1 號對 1 號、日對日。
三者都會先跳出確認視窗,寫明「從哪一段、到哪一段」,按下「開始複製」才會真的動資料。複製的內容包含班別、休假日,以及每個班別自己設定的最晚可預約時間。
目標日期已經有班的時候
確認視窗裡有兩個選項:
保留原本的班(預設) 已經排好班的那幾格原封不動,複製完會逐筆列出跳過了誰的哪一天,不是只給一個數字。
用來源的班蓋掉 目標日期的班會被來源的班取代。
蓋掉之後沒有還原
複製不會動到的東西
特殊日期 / 店休不會跟著複製。它是綁在那一個日子上的原因(例如「9/28 教師節店休」),跟著搬到別的日期沒有意義。
因此會出現一種容易誤會的情況:目標範圍裡如果有店休日,班表照樣複製過去,但那幾天的預約仍然以特殊日期設定為準(顧客端一樣不開放預約)。畫面上會看到那幾格有班、預約頁卻約不到 —— 要調整請用頁面右上的「特殊日期」。
目標月份沒有的日子會自動跳過。例如 31 號複製到只有 30 天的月份,那一天就是跳過,不會排到再下個月去。複製完會列出被跳過的日期。
匯入
匯入 ▼ 下載 CSV 範本、上傳 CSV 批次建立班次、查看歷次匯入結果。詳見「班表匯入」說明書。
多門市:匯入與排班都要先切門市
班次刪除的影響
把格子改為空白即刪除該日班次。原本開放的預約時段將關閉,但已建立的預約訂單不受影響,需另外通知顧客協調時間。
班次刪除前先確認
常見問題
Q1 設定了班次但顧客仍無法預約
確認班次時段 ≥ 服務項目時長,且服務人員已關聯至對應服務項目(透過「服務項目 → 可服務人員分組」設定)。若班次時間剩餘不足一個服務時長,該時段不會出現在可預約選項中。
Q2 如何快速複製上月 / 上週排班
頁面右上方「複製整月到下月」一鍵複製當前月份到下月;同一列的「複製到下一週」複製整整一週;只想複製某一天的話,用矩陣視圖日期欄表頭的向右箭頭複製到隔天。
三者複製的都是該範圍內全部人員。若需要更細的粒度(例:只複製兩位特定人員),目前仍需手動點格子或用 CSV 匯入。
Q3 假日休假如何設定
直接點該日格子 → 切「休」即可。整月排好後的格子若想刪除,可在 modal 內清空或改為「休」。
其他問題協助