← 回後台主控台

ChefsMate · POS → Flutter

UI 並排驗收

把現在的 POS App(Swift)跟正在重做的 Flutter 新版逐張並排。左邊是真機截圖、右邊是 Flutter 新版(假資料、免登入的預覽)。逐張看像不像,看完跟 AI 說哪張要調什麼。

左 = Swift 現役 App(真機) 右 = Flutter 新版(gallery 假資料) ⚠️ 兩邊資料不同(真機是當下店況、新版是示範假資料)→ 看的是版面/元件/顏色,不是同一筆資料
⚠️ 重新逐張稽核 + 修完大缺 + 三輪小差(2026-06-22)

之前標的「完成」大多沒有真的跟 Swift 比對過(這頁左欄 Swift 真機 137 張只截到 2 張)。已重新用 Swift 原始碼當基準逐張稽核 135 張,修完全部 24 個大缺並跑三輪小差修補,每步重截+重稽核。目前: 🟢 對齊 106🟡 小差 29🔴 大缺 0(共 135)。剩 🟡 多為 SF Symbol↔Material icon 形狀等平台本質細節。

→ 看 UI 對齊進度板(每張狀態 + 缺口)

① 登入 / 選餐廳

登入頁 SignInView.swift

已對齊:logo、Google 藍鈕、Email 連結、條款。「以 LINE 繼續」本次已改成跟 Swift 一樣的啟用綠(#06C755)。

Swift 真機
Swift 登入頁
Flutter 新版
Flutter 登入頁

※ Swift 那張是全新模擬器抓的,所以上面壓了一個系統「通知權限」對話框(截圖工具點不掉),看版面就好。

📋 操作流程 / 說明書草稿

使用者怎麼操作

  1. 開啟 App → 進入登入頁。
  2. 點「以 Google 繼續」→ 跳系統瀏覽器完成 Google 登入 → 自動帶回 App 建立登入。
  3. 或點「以 LINE 繼續」(即將推出)。
  4. 或點「使用 Email 登入 / 註冊」→ 輸入 Email → 系統判斷此 Email 是否已有帳號。
  5. 登入成功 → 自動進入「選擇餐廳」。

判斷 / 邊界

  • Email 已存在 → 顯示「登入」(輸入密碼);不存在 → 顯示「註冊」(設定密碼 + 確認)。
  • 註冊密碼少於 6 碼、或兩次密碼不一致 → 擋住並提示。
  • 忘記密碼 → 寄出重設連結。

流程來源:ChefsMateShared/UI/Auth/SignInView.swift(登入頁本回直接讀 Flutter login_page.dart 對照)

✓ 版面對齊 ✓ LINE 鈕改啟用綠 功能 Phase C 才接(Google/LINE/Email)

選擇餐廳 WorkspaceSwitcherView.swift

Flutter 為 Stitch 重設計版,一次顯示三種卡片狀態:可進入(海邊小巫)、審核中、已停權。

Swift 真機
尚未抓到 Swift 基準圖
(要登入後才到得了,下次補)
Flutter 新版
Flutter 選擇餐廳
📋 操作流程 / 說明書草稿

使用者怎麼操作

  1. 登入後 → 列出你加入的所有餐廳。
  2. 可進入的餐廳(active)→ 點卡片 → 進入該店主控台開始工作。
  3. 「搜尋並加入其他餐廳」→ 輸入店名搜尋 → 申請加入 → 等店家核准。

判斷 / 邊界

  • 審核中(pending)→ 卡片變灰、顯示「申請審核中・等待店家核准」,不可點。
  • 已停權(suspended)→ 卡片變灰、顯示「已停權」,不可點。
  • 只有 active 的餐廳能被選為工作店家。

流程來源:ChefsMateShared/UI/Shared/WorkspaceSwitcher/WorkspaceSwitcherView.swift(Flutter 為 Stitch 重設計版)

✓ active / 審核中 / 停權 三狀態 待補 Swift 並排

② 主控台

主控台 POSMainControlView.swift

依並排調到一致:① 分頁列等寬塞滿、不切;② 桌位卡自適應撐滿整行(Swift 同套格子算法);③ 桌位中間的客人符號系統完整重做(徹底對照 Swift TableComponent + GuestCircleView 的 5 維狀態):訂位=圓形 / 散客(訪)=菱形、位置色(待確認金黃 / 已確認灰藍 / 待入座綠 / 遲到橘 / 用餐灰藍 / 超時紅…)、點餐 badge(紅=未出完 / 灰=已出完)、結帳 ✅、服務鈴 🔔💧💳、結帳中、待審核修改 ✎、N大M小人數;④ 底部訂位/候位改成可上拉下滑的抽屜(拖把手調高度)。

Swift 真機(海邊小巫)
Swift 主控台
Flutter 新版(假資料)
Flutter 主控台

※ Swift 那張是當下即時店況(截圖時 5 桌全空);老闆手機晚點看到的「B/C 有訪客菱形」是真客人入座了,不是版面不同。Flutter 那張是假資料,1F 對齊真機(A 空、B·C 訪 2大、D·E 空),2F 故意擺滿各種狀態讓你一次看到所有符號。

📋 操作流程 / 說明書草稿 桌位狀態邏輯已對照原始碼

怎麼看這個畫面

  1. 頂部分頁切換功能:訂位 / 主控台 / 廚房 / 外場 / 菜單 / 戰情室 / LINE訂位 / 設定。
  2. 統計卡:一眼看 空桌、未出完餐、未結帳 各幾桌。
  3. 分區(1F / 2F…)顯示每桌的小卡,桌號 + 座位數。
  4. 底部抽屜:上拉看「訂位 / 候位」清單;點「+新增訂位」。

桌位中間的符號怎麼讀

  • 形狀:圓形 = 訂位客人、菱形 = 散客(訪)。
  • 顏色:待確認金黃 / 已確認灰藍 / 待入座綠 / 遲到橘 / 用餐灰藍 / 超時紅(閃)。
  • 右上角數字:點餐狀態 — 紅 = 還有餐沒出完、灰 = 已全部出完。
  • = 已結帳;🔔💧💳 = 服務鈴(呼叫 / 加水 / 結帳); = 有待審核的修改。
  • 中央文字 = 姓氏(散客顯示「訪」)+ 人數(如「2大」「3大1小」)。

操作

  • 空桌點一下 → 開始入座 / 點餐。
  • 已入座的客人圓圈點一下 → 繼續點餐 / 結帳。
  • 浮動鈕:星星(會員集點)、拆桌、出店刪除(把客人拖到此)。

桌位狀態怎麼來的(已對照 TableStatusGate 原始碼)

  • 沒有在座 → 空桌
  • 有在座、已超過用餐門檻分鐘 → 超時(最優先提醒)。
  • 有在座、沒開單 → 已入座;有開單、餐全出完 → 已出餐;還有沒出完 → 已點餐
  • 已結帳是結帳完成後的明確結果(寫入結帳時間),不是用時間推的。

流程來源:POSMainControlView.swift + Components/TableComponent.swift + GuestCircleView.swift + 桌位狀態 Gate(lib/shared/gates/table_status_gates.dart,已單元測試)

✓ 分頁列等寬不切 ✓ 桌卡自適應撐滿整行 ✓ 客人符號系統(訂位⭕/散客◇ + 各狀態) ✓ 底部訂位/候位可拖拉抽屜 ✓ 統計卡 / 營收條 / FAB

主控台 ・ 空狀態 POSMainControlView.swift

沒有桌位 / 尚未建立樓層時的空狀態。

Swift 真機
尚未抓到 Swift 基準圖
(真機目前有桌位,下次補)
Flutter 新版
Flutter 主控台空狀態

③ 點餐 Order

點餐畫面(菜單格)POSOrderingView.swift

桌資訊 → 單點/套餐切換 → 分類膠囊 → 搜尋 → 菜單格。菜單卡狀態:已加入購物車(右上數量徽章 + 下方加減 + 藍框光暈)、套餐(左上橘標籤 + 子品項列)、剩 N 份(左下橘)、售完(黑遮罩紅標)、素食徽章。購物車是右上角圖示 → 開全螢幕購物車頁。

Swift 真機
尚未抓到 Swift 基準圖
(需在桌況點桌進入點餐,下次補)
Flutter 新版(假資料)
Flutter 點餐畫面
📋 點餐操作流程 / 說明書草稿 流程已對抗式驗證

怎麼點一桌的餐

  1. 畫面最上方顯示桌號與人數;若該桌有預約獎勵,會跳紫色提示(已自動帶入廚房,不需在此加點)。
  2. 店家同時有單點與套餐時,會出現「單點 / 套餐」切換(只有單點時不顯示)。
  3. 用分類膠囊(可左右滑)切換分類,「全部」為預設,膠囊上顯示該分類品項數。
  4. 搜尋欄輸入關鍵字即時過濾;點 X 清除。
  5. 點卡片圖片 → 開該品項詳情;點右下「+」加入購物車。
  6. 若品項有選項(辣度/份量)→ 先跳「客製選項」彈窗選完才加入。
  7. 加入後卡片右上出現數量徽章、亮起藍框,下方「- 數量 +」浮現;歸 0 即移出。
  8. 套餐卡(左上橘「套餐」標籤)加入時,若有更划算的升級套餐 → 跳「升級套餐」確認。
  9. 點右上購物車圖示 → 全螢幕購物車:逐項加減、看小計、套餐可「更換」組件、可「清空」。
  10. 按底部「送出訂單 (N 項) $金額」送單(預點餐情境為「送出預點餐」)。
  11. 若有低消且未達標 → 跳「低消提醒」,可「仍要送出」或「返回修改」。

流程來源:POSOrderingView.swift(已對抗式驗證,verify accurate)

✓ 菜單格 + 卡片各狀態 ✓ 單點/套餐 + 分類 + 搜尋 + 購物車鈕 購物車頁 / 客製 / 套餐升級 sheets 量產中 待補 Swift 並排

③ 點餐 ・ 購物車 + 彈窗(Flutter 新版)已照 Swift spec 1:1

這些是點餐流程裡的購物車與各彈窗,已照 Swift 規格做出來(假資料)。Swift 真機並排需從桌況點桌進到該流程才截得到,下次補。對應操作流程見下方「完整流程」。

購物車
購物車
客製選項
客製選項
套餐換品項
套餐換品項
升級套餐
升級套餐
✓ 購物車(含套餐組成 + 加購) ✓ 客製選項 sheet ✓ 套餐換品項 sheet ✓ 升級套餐對話框 待補 Swift 並排

③ 點餐 ・ 完整流程(含各彈窗)Order 區 7 支 Swift 檔・已驗證

以下流程全部對照原始碼 + 對抗式驗證過,可直接當使用說明書。對應的 Flutter 彈窗 UI 正依序量產(做好會在上方補截圖)。

🛒 購物車 + 送單 已驗證
  1. 加入購物車:有選項先彈客製 sheet;單品若有更貴的對應套餐先彈「升級套餐」。
  2. 加入時即時扣當日供應量(品項 + 所屬分類;套餐連同每個組件一起扣),供應不足無法加入。
  3. 同品項同選項自動合併數量;加購組合以一筆 deal 計。
  4. 右上購物車圖示 → 全螢幕購物車:縮圖、單價、選項、套餐組件、小計。
  5. -/+ 調量;減到 0 移除該列(一般品項回補供應量,含預約獎勵會釋放當日 quota)。
  6. 套餐組件可「更換」→ 開更換彈窗,差價依餐廳「更換價格政策」算(換便宜不退差等)。
  7. 底部即時「總計 $金額」→ 按送單(一般「送出訂單」/預點「送出預點餐」)。
  8. 低消未達標先跳「低消提醒」(差多少/缺哪類),可「仍要送出」或「返回修改」。
  9. 成功:一般模式建立 Order/OrderItem 送廚房;預點模式上傳 pre_orders。清空購物車、通知主控台/廚房、關閉點餐頁。

POSOrderingView.swift(submitOrder / executeSubmitOrder 各路徑)

🍱 套餐(選擇 / 升級 / 換品項) 已驗證
  1. 切到「套餐」分頁(店家有設定套餐才看得到),卡片下方列出套餐子品項。
  2. 加單品時若有對應更貴套餐 → 跳「升級為套餐更划算」:可「升級套餐 $價」或「維持單點」。
  3. 套餐加入購物車後,那一列展開列出所有組成品項。
  4. 可更換的組件後面有橘色「更換」鈕 → 開「更換品項」彈窗。
  5. 彈窗可搜尋或從同分類可替換品項挑一個;右邊顯示要補(+$ 紅)或退(-$ 綠,依政策)的差價。
  6. 想換回 → 彈窗按「恢復原品項」。
  7. 送單時套餐展開成多個獨立廚房品項(共用 comboGroupId);被換的組件在備註寫「原:A → B」。

POSOrderingView.swift(comboUpgrade / ComboSwapSheet / comboSwapPricePolicy)

⚙️ 客製選項 sheet 已驗證
  1. 點有適用選項的品項 → 開客製 sheet(頂部縮圖/品名/原價)。
  2. 各選項依序列出:單選=點了覆蓋同組其他;多選=可多選到上限,達上限再點無反應。
  3. 金額即時更新:(原價 + 已選加價)× 數量;底部加減調數量(最少 1)。
  4. 所有「必選」都選了之後,「加入購物車」才會亮起。
  5. 按「加入購物車」→ 依數量把同份選項加進車並關閉;或「取消」不加入。

MenuItemOptionSheet.swift

⚠️ 點到「已佔用桌」 已驗證
  1. 把訂位安排到「仍有未結帳客人」的桌 → 先彈桌位衝突 sheet。
  2. 上方橘色警告說明要把哪位客人(含人數)安排到哪桌、該桌還有未結帳客人。
  3. 中間列出該桌目前每組客人:姓名、人數、入座時間、已坐幾分鐘。
  4. 三選一:「選其他桌」回重挑桌 /「強制入座(前組視為同桌)」 /「取消」不處理。

TableOccupiedSheet.swift

✎ 訂單修改審核 sheet 已驗證
  1. 從訂單/通知開啟,傳入一筆待審核修改(客人請求/店家修改)。
  2. 頂部顯示來源、狀態、共幾項、多久前送出。
  3. 逐項看改了什麼:數量 2→3、新增 x1、移除、備註改、選項變更、替換為 XX、🎁 兌換獎勵變更…
  4. 待審核才會出現底部「拒絕修改 / 核准修改」;非待審核只能查看。
  5. 核准 → 呼叫後端套用 → 跳結果(全部成功/部分成功列出失敗項)。
  6. 拒絕 → 先填(選填)原因 → 確認拒絕 → 跳結果。按「確定」關閉。

OrderModificationReviewSheet.swift

📲 預點餐 → 轉現點 已驗證
  1. 候位區點訂位 → 選「先點餐」(店員代客,標題顯示「預點-姓名」、無桌位)或「自助先點餐」(產生 QR 給客人自己掃碼預點)。
  2. 照常選分類、加菜(支援單點/套餐/加購)→ 按「送出預點餐 (N 項) $金額」。
  3. 寫到雲端 pre_orders + pre_order_items,訂位標記「已預點」,主控台跳「預點餐已送出」。
  4. 訂位詳情可看橘色「已點餐」+ 預點明細。
  5. 客人到店、把訂位「安排入座」到某桌 → 系統自動把預點品項(+ 預約兌換獎勵)轉成真正廚房訂單送廚房。
  6. 轉換完成 pre_order 狀態改 converted_to_order(防重複);失敗則跳「預點訂單轉換失敗」請店員手動點餐。

POSOrderingView.swift + Services/PreOrderConversionService.swift + SeatingService.swift

④ 出餐 KDS

出餐控台(依座 / 依品)ExpediteKitchenView.swift

廚房 iPad 橫式雙欄:左可出餐區(綠)/右準備區(橘)。卡片粒度由設定切換 —— 依座(一桌一卡,桌號+等候色階+品項列+出餐/稍等)或依品(一道菜一列)。急單紅框、站別色條、催單三角、座號、改單紫標。底部懸浮工具列:縮放/全部出餐/復原/語音控單。

Flutter 新版・依座(假資料)
出餐控台 依座
Flutter 新版・依品(假資料)
出餐控台 依品
📋 出餐操作流程 / 說明書草稿 流程+計時色階已對抗式驗證

怎麼出餐

  1. 畫面分兩區:準備區(等指示)與可出餐區(已可製作/出餐)。
  2. 把準備區的菜「移到可出餐區」:單道、整桌、或「全部可做」一次全移(播『登!』音)。移錯可往回移。
  3. 插隊:「設為優先製作」丟到最前;「排在某桌之後」;「下一桌」依最早下單整桌移過去(FIFO);「這張單最後做」壓到墊底。
  4. 「催單」→ 標紅框、強制移到可出餐區、排到最前(並背景通知 server)。
  5. 做好按綠勾「出餐」:需外場送 → 變「做好等送」播『叮』鈴;不需外場送 → 直接「已送到桌」。
  6. 按錯了按「復原」可整批還原上一步(最多 30 步)。

等候時間色階(已對照原始碼)

  • 每張卡顯示「下單到現在」的分鐘數,自動變色:≥30 分 紅≥15 分 橘、其餘正常(依座綠/依品灰)。越久越紅。

ExpediteKitchenView.swift + ExpediteOrderCard/ExpeditePerDishCard.swift + ExpediteActionManager.swift(已對抗式驗證)

✓ 雙欄可出餐區/準備區 ✓ 依座 + 依品 兩模式 ✓ 計時色階 + 急單/站別/改單標記 ✓ 懸浮工具列 待補 Swift 並排

語音控單 overlayExpediteVoiceOverlay.swift

廚房手忙時用「講的」控單:點麥克風 → 說指令 → 系統即時辨識、解析、執行,並用語音回讀結果。

Flutter 新版(假資料)
語音控單
📋 語音控單流程 / 說明書草稿 已對抗式驗證
  1. 點麥克風 → 要語音辨識權限(沒給就提示去設定開)。
  2. 開始聆聽,畫面即時把你說的話轉成文字。
  3. 說中文指令(例「A桌可以做了」「B桌牛排先做」「全部可以做」「下一桌」「暫停出餐」)→ 系統辨識出指令顯示綠色預覽。
  4. 停說 2.5 秒自動完成;預設「自動執行」直接做,或關掉自動、按「執行」再做。
  5. 執行後用語音唸出結果(如「已將 3 道餐點移到可出餐區」);找不到對應餐點會唸「找不到匹配的餐點」。
  6. 說「結束/關閉/停止」或按「結束」可關閉;按「重說」重新講。

ExpediteVoiceOverlay.swift + SpeechRecognitionService.swift + ExpediteActionManager.swift(已對抗式驗證)

✓ 麥克風脈動 + 即時轉文字 ✓ 指令預覽 + 範本 + 結束/執行/重說 語音辨識本身 Phase C 接

⑤ 結帳 Checkout

結帳大廳(全額 / 現金收款 / 全部付清)POSMainControlView.swift · CheckoutSheet

結帳主畫面,單欄長捲頁(無 iPad/iPhone 分欄):貴賓摘要會員獎勵提醒(客人已用過的獎勵,紫卡提醒店員告知已扣點/折抵)→ 結帳方式(全額/分帳/按餐點)+客人端監看 → 訂單摘要(單點一列、套餐成一張分組卡,含換品項差價 +紅/-綠)→ 折扣(無/百分比/固定金額)→ 優惠券(未達門檻擋住)→ 服務費(預設 10%)→ 金額總結(小計 − 折扣 + 服務費 − 訂金折抵 = 訂單總額;部分付清顯示已結/剩餘)→ 付款方式(線上付款橘+現金收款;現金展開數字盤:收取金額、「剛好 $X」、台灣常用面額快捷含找零、應找零)→ 發票(發票內容/載具類型/統編)。付清後改顯示綠色「全部付清」橫幅+集點+傳送明細連結給客人。

未結・全額(整頁)
結帳大廳 全額
現金收款數字盤(整頁)
結帳 現金收款數字盤
全部付清(整頁)
結帳 全部付清
📋 結帳操作流程 / 說明書草稿 已對抗式驗證

怎麼結一桌的帳

  1. 主畫面點桌 → 結帳,進結帳大廳。頂部顯示桌號/人數;若客人用過會員獎勵,跳紫色「結帳提醒」(提醒店員告訴客人已扣 N 點、折抵 $X)。
  2. 選結帳方式:全額結帳分帳(除以大人數/總人數/自訂人數/按點餐人)/ 按餐點結帳(勾選要結的餐點)。
  3. 看訂單摘要:單點一列;套餐成一張分組卡(含子品項、換品項差價 +紅/-綠)。已結的品項會劃線並標「已結帳」。
  4. 加折扣(百分比/固定金額)、選優惠券(未達門檻會擋住、標「未達門檻」)、視需要加收服務費(預設 10%)。
  5. 金額即時算:小計 − 折扣 + 服務費 − 訂金折抵 = 訂單總額;部分付清時顯示「已結金額/剩餘金額」。
  6. 收款:線上付款(出 QR 給客人掃,藍新金流)或 現金收款(展開數字盤:輸入收取金額、按「剛好 $X」、台灣常用面額一鍵帶入+自動算找零、顯示應找零,按「確認收款」)。
  7. 開發票:選發票內容(逐項列出/只寫餐費)、載具類型(手機條碼/自然人憑證/捐贈碼/列印)、可填統一編號。
  8. 全部付清 → 綠色「全部付清」橫幅:可掃會員 QR 發點數、傳送明細連結給客人、回到主畫面。

CheckoutSheet(POSMainControlView.swift)+ CheckoutTypes.swift(已對抗式驗證)。✅ 球員證段位折扣/會員優惠兌換已補做(Swift 端 feature flag 仍關閉)。

✓ 長頁:摘要/折扣/優惠券/服務費/總結/付款/發票 ✓ 現金數字盤+台灣常用面額+找零 ✓ 全部付清橫幅+集點 待補 Swift 並排

結帳 ・ 各付款與發票 sheet(Flutter 新版)Checkout/Views/* · 已對抗式驗證

結帳流程裡彈出的各 sheet,已照 Swift 規格 1:1 做出來(假資料)。Swift 真機並排需從桌況進到該流程才截得到,下次補。

信用卡付款
信用卡付款
線上結帳 QR・等待
線上結帳 QR 等待
線上結帳 QR・成功
線上結帳 QR 成功
客人端結帳監看
客人端結帳監看
點數要給誰(選會員)
點數要給誰
刷載具(手機條碼)
刷載具
球員證・段位折扣
球員證折扣
球員證・會員優惠兌換
會員優惠兌換
訪客累積點數 QR
訪客集點
電子發票圖
電子發票
📋 各 sheet 用途 / 流程 已對抗式驗證
  • 信用卡付款:金額卡+ TapPay 卡片表單(卡號/到期/CCV)+確認付款。⚠️ Tap to Pay 因 Apple 帳號限制暫關,固定走手動輸入。
  • 線上結帳 QR:出 QR 給客人手機掃結帳;收到付款通知即切換「付款成功」綠勾。可分享連結。
  • 客人端結帳監看:分帳時店員即時看一桌每位客人的付款狀態(已線上付款/已收現金/處理中/未付款),可代收現金、重發 QR、刷載具;全員付清可關桌。
  • 點數要給誰:結帳人非會員時,問要不要把點數累積給同桌會員(列候選人);或出 QR 請客人自己加入會員。
  • 刷載具:相機掃客人手機發票載具(手機條碼/自然人憑證)→ 辨識後確認綁定到這筆結帳。

CreditCardPaymentSheet / CheckoutQRCodeSheet / CustomerCheckoutMonitorSheet / LoyaltyChooseSheet / CarrierScannerSheet(皆已對抗式驗證)。

✓ 信用卡付款 ✓ 線上結帳 QR(等待/成功) ✓ 客人端監看(4 狀態) ✓ 選會員給點+刷載具 待補 Swift 並排

⑥ 關帳 Settlement

關帳 / 小結(含現金面額盤點)SettlementSheet.swift + Components/*

每日結算主畫面,單欄長捲頁:Hero 卡(模式漸層:關帳深藍/小結藍/補關帳橘+總營收大數字+訂單/位客)→ 支付 4 格(現金/信用卡/行動支付/其他)→ 調整項目(折扣/服務費/稅)→ 營業統計(訂單/來客/客單價/作廢/退款)→ 發票訂金收入現金盤點(系統預期現金算式 + 幣值計數器逐張點鈔 + 差異色階)→ 營業額存入帳戶(選哪個錢包/銀行)→ 備註。底部「確認關帳(鎖定當日帳務)」。小結則改藍漸層、不鎖帳、隱藏現金盤點。

關帳・含面額盤點(整頁)
關帳 整頁
小結・不鎖帳(整頁)
小結 整頁
批次補關帳(整頁)
批次補關帳 整頁
📋 關帳操作流程 / 說明書草稿 已對抗式驗證

怎麼關一天的帳

  1. 每天打烊按「關帳」進入;系統自動算好今天的營收、各支付方式金額、訂單/來客數。想中途看數字但不鎖帳 → 用「小結」。
  2. 確認 調整項目(折扣/服務費/稅)與 營業統計(含作廢、退款筆數)。
  3. 現金盤點:系統先算「預期現金 = 零用金 + 現金收入 − 現金退款」;再用幣值計數器逐張點鈔($2,000…$1 紙鈔/硬幣各自加減),或切「直接輸入」打總額。
  4. 系統算出差異並用顏色提示:一致=綠勾、±$100 內=橘、超過 $100=紅三角並要求確認。關帳當天若現金短缺,需填「虧損原因」才能關。
  5. 營業額要存入哪個帳戶(錢包/銀行;沒有就自動建「營業額錢包」)。
  6. 按「確認關帳」→ 二次確認 → 鎖定當日帳務並同步雲端。當日僅能關一次。
  7. 忘記關帳:主控台會跳橘色漏關帳橫幅,可「逐日補」或「批次補」一次補關好幾天(補關帳算式不含零用金)。

SettlementSheet.swift + SettlementHeroCard/QuickStats/Section/ActionBar + CashDenominationCounter.swift + BatchRetroCloseSheet.swift(已對抗式驗證)。✅ DailyCloseEditSheet(編輯關帳)/PayoutReconciliationView(金流對帳)/歷史關帳挑選 已補做。

✓ Hero 三模式漸層 + 支付 4 格 ✓ 各統計 section(可摺疊) ✓ 現金幣值計數器 + 差異色階 ✓ 批次補關帳逐日明細 待補 Swift 並排

關帳 ・ 記帳 / 退款 / 補單 / 即時營收(Flutter 新版)Settlement/* · 已對抗式驗證

關帳前後會用到的各 sheet 與小元件,已照 Swift 規格 1:1(假資料)。

未結帳訂單・4 種處理
未結帳訂單詳情
臨時收支記帳
臨時收支
退款
退款
即時營收條(展開)
即時營收條
漏關帳警告橫幅
漏關帳橫幅
編輯關帳紀錄
編輯關帳
金流對帳
金流對帳
歷史關帳挑選
歷史關帳
📋 各 sheet 用途 已對抗式驗證
  • 未結帳訂單詳情:補關帳時逐筆處理沒結到帳的單,四種處理 — 補結帳(客人補付走正常結帳)/列為耗損(員工忘結記損失)/店家請客(金額視為 0)/刪除訂單(純錯誤單)。各自有權限門檻。
  • 臨時收支:臨時支出/收入記帳(金額隨方向變紅/綠)+ 6 分類(文具/食材/維修/員工餐/小費/其他)+ 帳戶 + 日期。
  • 退款:退付款/退訂金/其他退款三種,依類型出不同欄位 + 金額 + 原因。
  • 即時營收條:主控台頂部可摺疊,今日營收(已結+未結);展開看支付別、訂金、客數/均消/折扣/退款。金額 ≥1萬用「X.X萬」縮寫。
  • 漏關帳橫幅:哪天沒關帳就在主控台跳橘色橫幅,可「逐日補」或「批次補」。

UnsettledOrderDetailSheet / AdHocTransactionSheet / RefundSheet / LiveRevenueBarView / MissedCloseBannerView(皆已對抗式驗證)。

✓ 未結帳訂單 4 處理 ✓ 臨時收支 + 退款 ✓ 即時營收條(萬縮寫) ✓ 漏關帳橫幅 待補 Swift 並排

⑦ 菜單 Menu

菜單管理 + 編輯品項 / 套餐POSMenuTabView / POSMenuItemEditSheet / POSComboEditSheet

菜單管理主畫面:頂部分頁(單點 / 套餐 / 批量新增)→ 搜尋 + 批量管理 + 新增 → 分類膠囊 → 4 欄卡片格,依分類分段(sticky header + N 項)。卡片狀態:套餐橘標售完黑遮罩剩 N 份大浮水印素食徽章、品名、價格。點卡片開編輯品項(大字品名 + 廚房簡稱/EN + 分類藍膠囊/站別橘膠囊 + 照片 + 介紹 + 售價 + 每日限量 + 食譜成本唯讀),套餐則開編輯套餐(套餐內容=扁平品項清單,每項可調數量 + 標「可更換」)。

菜單管理・單點格(整頁)
菜單管理
編輯單點品項(整頁)
編輯品項
編輯套餐(整頁)
編輯套餐
📋 菜單管理流程 / 說明書草稿 已對抗式驗證

怎麼管理菜單

  1. 上方切「單點 / 套餐 / 批量新增」。單點與套餐各自一個卡片格,依分類分段。
  2. 搜尋即時過濾;分類膠囊(可左右滑)切分類;按「新增」開編輯畫面、按「批量管理」進多選(可批次設限量 / 刪除)。
  3. 長按卡片可拖到分類膠囊 / 分類標題=改分類。卡片長按選單可:標售完 / 恢復、設「剩 5/10/20 份」或不限量、回復預設份量、編輯。
  4. 編輯品項:填品名、廚房簡稱、英文名、選分類(藍膠囊)與廚房站別(橘膠囊)、上傳照片、寫介紹、設售價與每日限量。食譜與成本唯讀(在 ChefsMate App 輸入),利潤率 ≥50% 綠、否則橘。
  5. 編輯套餐:套餐內容是一串組件品項,每項可加減數量、標「可更換」(客人可換);其餘欄位同單點。
  6. 標售完前若該餐點今天有客人點過 → 跳「售完通知」讓你勾選寄信給受影響的客人(見下)。

POSMenuTabView / POSSingleItemsView / POSMenuItemCard / POSMenuItemEditSheet / POSComboEditSheet(已對抗式驗證)。

✓ 4 欄卡片格 + 分類分段 ✓ 套餐標/售完/份數浮水印/素食徽章 ✓ 編輯品項 + 編輯套餐 待補 Swift 並排

菜單 ・ 分類 / 選項 / 出餐 / 供應 / 批量 / 售完(Flutter 新版)Menu/* · 已對抗式驗證

菜單設定相關的各管理畫面與 sheet,已照 Swift 規格 1:1(假資料)。

分類管理
分類管理
客製選項設定
客製選項
出餐規則 / 順序
出餐規則
當日供應品項
當日供應
批量新增
批量新增
標售完 + 通知客人
售完通知
加購優惠與推薦
加購優惠
📋 各管理畫面用途 已對抗式驗證
  • 分類管理:分類列(icon 依名稱自動推斷 + 名 + N 項目 + 拖曳排序),「未分類」鎖定。沒有顏色/icon 自選。
  • 客製選項設定:選項群組(辣度/加料…),各有必選(紅標)/多選(藍標)+ 選項內容預覽。
  • 出餐規則:用群組排出餐順序,排越前越優先;「隨時出餐」群組(綠)不受順序限制。
  • 當日供應品項:設今天哪些品項供應 + 每項/每類的份量上限(數量加減 + 眼睛可見度),可設類別限量。
  • 批量新增:2 欄快速卡,逐張填名稱/售價/分類/區站/簡稱,一次「全部儲存」。
  • 標售完 + 通知:標餐點售完前,列出今天會受影響的訂位讓你勾選寄信(已點此餐點=必通知綠標、預估會點=橘標)。客人收信可換餐/減量/取消(免取消費)。

POSMenuCategoryManagerView / POSMenuOptionsSheet / POSServingOrderSheet / POSDailyMenuSheet / POSBatchAddView / POSItemSoldOutCommunicationSheet(皆已對抗式驗證)。✅ 加購優惠(POSAddonDealsSheet)已補做。

✓ 分類 + 選項 + 出餐規則 ✓ 當日供應 + 批量新增 ✓ 售完通知客人 待補 Swift 並排

⑧ 訂位 Reservation

訂位主畫面(待處理 Agenda / 月曆 / 日時間軸)ReservationAgendaView / MonthCalendar / DayTimeline

訂位預設是 待處理 Agenda需要你處理(一人一張卡,含每筆日期/時間/組成、狀態膠囊、判斷盒「可訂 / 需訂金 / 需審核」、以及 直接確認 / 核准 / 催繳訂金 / 婉拒 等動作鈕)→ 今天已確認即將到來。可切 月曆(每天顯示總人數 + 依載客率著色的熱區,今日藍框、假日紅、公休灰、暫停橘)或 日檢視時間軸(左桌欄 + 時間列 + 依時間擺位、可拖拉換桌/改時間的訂位方塊,依狀態著色)。

待處理 Agenda(整頁)
訂位待處理
月曆・載客熱區
訂位月曆
日檢視時間軸
日檢視時間軸
📋 訂位處理流程 / 說明書草稿 已對抗式驗證

怎麼處理訂位

  1. 打開訂位=看「待處理 Agenda」。系統把每位客人的訂位整理成卡片,並直接給判斷:可訂(綠)、需訂金(土黃)、需審核 / 不可接(紅)。
  2. 桌位夠又無備註無訂金 → 按「直接確認」一鍵接單;需訂金 → 「核准訂位」並可「催繳訂金」;接不了 → 「婉拒」(可 AI 產生禮貌訊息或靜默封存)。
  3. 想看整月忙閒 → 切「月曆」(熱區色 + 每天人數),長按某天可「暫停接訂位」。
  4. 想排桌 → 切「日檢視時間軸」,把訂位方塊拖到別桌或別時段;手動釘的位子不會被新訂位動到,系統安排會自動重排。
  5. 客人到店 → 報到 → 智慧安排入座(見下)。客人改人數 → 跳「核准修改」看會不會撞到別桌再決定。

ReservationAgendaView / POSReservationListView / POSReservationMonthCalendarView / ReservationDayTimelineView(已對抗式驗證)。

✓ 待處理 Agenda(判斷盒 + 動作鈕) ✓ 月曆載客熱區 ✓ 日時間軸(方塊排程) 待補 Swift 並排

訂位 ・ 報到 / 候位 / 排桌 / 核准 / LINE 訊息匣(Flutter 新版)Reservation/* · 已對抗式驗證

訂位流程裡的各畫面與 sheet,已照 Swift 規格 1:1(假資料)。

客人報到
客人報到
現場候位
現場候位
智慧安排入座
智慧安排入座
核准修改(人數異動)
核准修改
LINE/FB 訊息匣
LINE 訊息匣
LINE 對話(接單)
LINE 對話
📋 各畫面用途 已對抗式驗證
  • 客人報到:QR 報到後檢視客人資訊 + 特殊需求 + 備註,按「智慧安排入座」或手動選座。
  • 現場候位:散客現場登記人口組成(大人/小孩/長輩/孕婦/寵物),有位就入座、沒位就加候位。
  • 智慧安排入座:演算法建議桌位(推薦標 + 入座鈕),有衝突會變橘並提示影響哪幾筆。
  • 核准修改:客人改人數時,顯示同時段其他訂位 + 桌位安排,看會不會撞再「同意修改」或「拒絕」。
  • LINE/FB 訊息匣:智慧客服收件匣 + 單一對話(會員資訊 + 新訂位待接單卡確認接單/調整 + 聊天泡泡 + 可編輯回覆模板)。AI 自動回覆旗標目前關閉。

POSCheckInSheet / POSWalkInSheet / SmartSeatingSheet / ReservationApprovalContextSheet / POSLineInboxView(皆已對抗式驗證)。喬喬看併桌 / 暫停接單 / 售完暫停 / 婉拒 / LINE 設定·範本 / 時序進度 見下方「訂位 · 邊緣 sub-sheet」一欄。

✓ 報到 + 現場候位 ✓ 智慧排桌 + 核准修改 ✓ LINE/FB 訊息匣 + 對話接單 待補 Swift 並排

訂位 ・ 邊緣 sub-sheet(補做・Flutter 新版)Reservation/* · 1:1

先前略過、本輪補齊的訂位邊緣畫面與 sheet,皆照 Swift 規格 1:1(假資料)。喬喬看併桌用 iOS 系統色雙階段;暫停接單 / 售完暫停 banner是橘色系;LINE 設定 / 範本是 iOS grouped form(⚠️ AI 自動回覆旗標關閉);時序進度是訂位生命週期時間軸。

喬喬看併桌・選桌
喬喬看併桌 選桌
喬喬看併桌・分配人數
喬喬看併桌 分配人數
暫停接單
暫停接單
售完暫停 banner
售完暫停 banner
售完暫停・補貨
售完暫停 補貨
婉拒訂位
婉拒訂位
LINE 智慧客服設定
LINE 智慧客服設定
LINE 回覆模板
LINE 回覆模板
訂位時序進度
訂位時序進度
📋 各畫面用途 1:1 規格
  • 喬喬看併桌:人數多需要擠一擠時的桌位選擇(多選 + 容量徽章 剛好/+N/-N)→ 每桌人數分配(stepper)+ 客人將收到的通知預覽。
  • 暫停接單:暫停線上訂位(今日/指定日期 + 暫停餐期多選 + 快速理由 chip)。已暫停會顯示膠囊並改「更新暫停設定」。
  • 售完暫停 banner:餐點售完自動暫停接訂位的頂部橫幅 +「我已備新料」→ 補貨 sheet(設新份量、解除暫停)。
  • 婉拒訂位:三出口 — AI 婉拒(自動產生禮貌訊息)/ 手動回覆(自編 + 送出並封存)/ 靜默封存(不發訊息)。
  • LINE 設定 / 範本:回覆模板入口、接自己的 AI、記憶庫、問答庫、審核權限;8 情境模板可改+還原預設。⚠️ AI 自動回覆旗標關閉,改用按鈕送可編輯模板。
  • 時序進度:訂位生命週期時間軸(已完成綠 / 進行中藍 / 未來灰),嵌在訂位詳情捲動內。

POSSqueezeTableSelectionSheet / PauseBookingSheet / POSSelloutPauseBanner / ReservationAgendaView(declineSheet) / POSLineSettingsSheet / POSLineReplyTemplatesView / ReservationProgressTimeline。

✓ 喬喬看併桌(雙階段) ✓ 暫停接單 + 售完暫停 ✓ 婉拒 + LINE 設定·範本 ✓ 時序進度 待補 Swift 並排

⑨ 報表 Reports

報表(戰情室 / 營收趨勢 / 菜品 / 日誌 / 匯出 / 健康檢查)Reports/* · 1:1

戰情室是報表首頁:今日/本週/本月 + 4 KPI(營業額 / 來客數 / 客單價 / 翻桌率,含趨勢)+ 警示卡 + 時段營收 bar + 熱銷/待觀察排行 + 員工小費(依隱私只顯次數)+ 深入分析 5 模組。深入後有 營收趨勢(日別/時段/付款方式)、菜品表現(銷售排行 + 類別佔比)、營運日誌(訂單/作廢/付款 + 搜尋)、資料匯出(CSV/Excel)、資料健康檢查(15 種歷史 Model 記錄狀態)。色系用 POSColors(success teal / warning 橘)。

戰情室(整頁)
戰情室
營收趨勢
營收趨勢
菜品表現
菜品表現
營運日誌
營運日誌
資料匯出
資料匯出
資料健康檢查
資料健康檢查
📋 報表各頁用途 1:1 規格
  • 戰情室:一眼看今天賺多少、來幾組客、客單價、翻桌率(含跟昨日比的趨勢箭頭)+ 折扣/營收警示 + 時段忙閒 + 熱賣/滯銷 + 員工小費次數。
  • 營收趨勢:日別(近 7 日水平條,今日實心)/ 時段(heatmap + 圖例 + 午晚尖峰卡)/ 付款方式(各管道金額 + %)。
  • 菜品表現:銷售排行(可依 營收/數量/利潤率 排序 + 排名圈 + 利潤率色)+ 類別營收佔比(進度條 7 色循環)。
  • 營運日誌:訂單 / 作廢 / 付款 三分頁(帶數量 badge)+ 搜尋;付款分成功(綠 ✓)與退款(紅 ↩ + 末四碼)。
  • 資料匯出:日期範圍 + 6 種資料類型多選 + CSV/Excel + 產生報表(N 項)+ 已產生檔案分享列。
  • 資料健康檢查:15 種歷史 Model 的記錄狀態(正常綠 / 無資料橘 / 未實作紅)+ 今日/本月/總計 + 最後記錄。

ReportsDashboardView / RevenueTrendView / MenuPerformanceView / OperationLogView / DataExportView / DataHealthCheckView(+ 共用 ReportComponents)。

✓ 戰情室(KPI + 警示 + 排行 + 模組) ✓ 營收趨勢 + 菜品表現 ✓ 營運日誌 + 資料匯出 ✓ 資料健康檢查 待補 Swift 並排

⑩ 設定 Settings

設定主畫面 + 金流 / 發票Settings/* · POSSettingsView / Invoice / Payment

設定主畫面(搜尋+常用+分類磁磚+卡片)
設定主畫面(搜尋+常用+分類磁磚+卡片)
發票設定
發票設定
付款方式(藍新金流)
付款方式(藍新金流)
小費設定
小費設定
補零用金
補零用金

員工 / 權限 / HRSettings/Staff · Permission · HR

員工管理
員工管理
員工詳情
員工詳情
邀請員工
邀請員工
變更角色
變更角色
自訂權限
自訂權限
權限模板
權限模板
編輯權限模板
編輯權限模板
指派模板
指派模板
薪資級距
薪資級距
編輯薪資級距
編輯薪資級距
員工 HR 資料
員工 HR 資料

會員 / 錢包 / 球員證Settings/Loyalty · Wallet · PlayerCard

會員集點管理
會員集點管理
會員資料編輯
會員資料編輯
球員證優惠
球員證優惠
錢包儀表板
錢包儀表板
優惠券管理
優惠券管理
集點方案設定
集點方案設定

菜單設定 / 庫存Settings/Menu · Stock

預先點餐可見度
預先點餐可見度
推薦搭配
推薦搭配
區站管理
區站管理
份量重設與賣完暫停
份量重設與賣完暫停
售完暫停目標餐點
售完暫停目標餐點
電子菜單上傳
電子菜單上傳

訂位設定(餐廳資料 / 時段 / 訂金 / 訊息…)ChefsMateShared/UI/Booking/Settings/*

訂位設定
訂位設定
餐廳資料
餐廳資料
公休日
公休日
訂金設定
訂金設定
退款政策分級
退款政策分級
訂位確認 LINE 設定
訂位確認 LINE 設定
訂位流程細節
訂位流程細節
座位系統
座位系統
拆桌設定
拆桌設定
特殊營業日
特殊營業日
營業日設定(供餐時段)
營業日設定(供餐時段)
一般供餐時段
一般供餐時段
訊息設定
訊息設定
行事曆整合
行事曆整合
服務鈴設定
服務鈴設定
常見問題
常見問題
用餐規範
用餐規範

網站內容 / 個資 / 引導 / 內部工具WebContent · Profile · Onboarding · Engineer/Debug

品牌文案
品牌文案
相簿
相簿
個人資料
個人資料
首次啟動精靈
首次啟動精靈
快速設定提示橫幅
快速設定提示橫幅
教學覆蓋層
教學覆蓋層
操作記錄
操作記錄
配對 Apple Watch
配對 Apple Watch
工程師後台
工程師後台
工程師工具箱
工程師工具箱
編輯訂閱方案
編輯訂閱方案
訂閱方案切換器
訂閱方案切換器
功能開關(Debug)
功能開關(Debug)

⑪ 其他(外場 / 平面圖 / 聊天 / iPad)

外場 / 平面圖 / 聊天 / iPadFloorDesigner · Floor · Chat · iPad

平面圖編輯器
平面圖編輯器
外場送餐
外場送餐
客戶訊息列表
客戶訊息列表
客戶對話
客戶對話
iPad 三欄工作區
iPad 三欄工作區
iPad 雙欄工作區
iPad 雙欄工作區
iPad 側邊欄
iPad 側邊欄