系統地圖 老闆報告 Specs 索引 員工小費系統
#W12 · spec · 老闆已答 7Q

員工小費系統 — 客人直接打賞員工(老闆不沾錢)

客人在線上付款時可以直接打賞特定員工 / 主廚, 錢直接進員工個人收款帳戶(LINE Pay / 台灣 Pay)。 老闆有 toggle 設定「直接進員工帳戶 vs 先入餐廳代收」(預設前者,推薦)。 老闆已於 2026-05-25 答完 7 問,Phase 1 可開做。

✅ 老闆已答 (2026-05-25) — 7 個問題答覆已收齊並併入 spec 各章節。 重點差異:(1) 進入點改 3 個(新增桌邊主頁面打賞員工 section) (2) 預設金額改 100/200/500 (3) 員工資料擴充自我介紹 + 頭貼 + 工作崗位 + 職稱(在 staffsmate App 填) (4) 客人選打賞員工頁顯示所有員工含老闆 (5) 不做整桌均分 (6) 方案 B 做為備援選項。完整答覆見 §7。

背景

老闆原話:「我們可不可以在系統裡面設定一個刷小費的工具,直接讓客人付小費給喜歡的工作人員或是廚師, 具體要怎麼操作才不會被老闆拿走這筆錢呢?」

後續討論補充需求:

  1. 員工自己申請 LINE Pay / 台灣 Pay 個人收款帳戶
  2. 老闆設定:小費直接進員工帳戶 / 先入餐廳代收(建議直接進員工)
  3. 菜單 / 結帳頁出現「員工小費」選項,客人選員工 + 自填金額
  4. 線上付款時自動「拆帳」(技術上是 redirect 到員工收款連結,不是真的 split payment)

§1. 「人人都可以申請 LINE Pay 收款」嗎?

工具個人能申請?限制
LINE Pay Money 個人收款 ✅ 大部分人可 需綁 LINE Pay Money 帳號(2025 升級後)+ 實名認證,有單日/單月限額
台灣 Pay 個人收款 QR ✅ 有銀行帳戶都可 用各銀行 App 開啟「我要收款」,綁本人銀行帳戶,等於是 ATM 轉帳收款
街口支付 個人收款 ✅ 個人帳號可 月收款額有上限,超過要升商戶
LINE Pay 商戶 / 子商戶 split 需要公司營業登記,個人不行
結論:員工綁 LINE Pay Money 個人收款連結台灣 Pay 個人 QR 最務實。錢直接入該員工本人帳戶,老闆完全 touch 不到。 「線上付款拆帳」改成「redirect 到員工個人連結」(兩筆獨立交易),技術上比 split payment 簡單很多。

§2. 設計選項對比

方案 B:餐廳代收 + 月底分潤

機制:小費跟主餐一起付給餐廳, ChefsMate 在 staff_tip_balances 表記錄該員工該月應得 N 元, 月底老闆 batch 匯款給員工。

老闆能拿錢?⚠️ 理論上可以(錢實際進老闆帳戶,系統只 enforce 帳目透明)
員工幾時收到月底 / 看老闆心情
技術難度⭐⭐⭐ 中高
適合老闆值得信任 / 員工不想處理稅 / 集團模式

方案 C:TapPay / NewebPay split payment(子商戶)

機制:用 TapPay 子商戶 split API, 客人付 $1100 → $1000 進老闆,$100 直接打到員工銀行。

老闆能拿錢?❌ 完全不能
技術難度⭐⭐⭐⭐ 高 — 員工要簽 TapPay 子商戶合約
適合連鎖店 / 員工有正職身分 / 規模大才划算
建議:Phase 1 做方案 A(個人 routing) — 老闆 toggle 預設選這個。 這已涵蓋老闆「不被拿走」核心需求,且技術可行 / 員工可自由綁工具。 若有員工想用方案 B(餐廳代收),老闆 toggle 切換就好。方案 C 等規模起來再做。

§3. 完整使用流程(方案 A)

3.1 老闆設定階段(一次性)

  1. POS 設定 → 「員工小費系統」
  2. Toggle「啟用客人打賞」on/off
  3. 分潤模式 picker:
    • 直接進員工帳戶(預設 / 推薦 — 方案 A)
    • 先入餐廳代收 → 月底分潤(備援選項 — 方案 B,用於員工尚未綁定個人收款工具的情境)
  4. (若 directToStaff)設定打賞金額預設選項:$100 / $200 / $500 + 自填(老闆已拍板)
  5. 是否強制顯示主廚:on/off(預設 on)
  6. 是否允許「整桌均分打賞」老闆 Q5 已答:不做,移除此 toggle

3.2 員工設定階段(每位員工自己在 StaffsMate App 做)

老闆 Q6 已答:客人選打賞員工的畫面要顯示所有員工(含老闆), 並讓員工自己在 StaffsMate App 內維護「給客人看的自我介紹 + 頭貼 + 工作崗位 + 職稱」, 避免客人賞錯人 / 認不出來。

  1. StaffsMate App「我的」tab → 「打賞收款設定」
  2. 啟用打賞 toggle
  3. 選收款工具:LINE Pay / 台灣 Pay / 街口
  4. 輸入收款連結 / 上傳 QR code(該工具自己有 export 連結的功能)
  5. 顯示名稱(可改):e.g.「小明」、「主廚 陳師傅」
  6. ★ 工作崗位(picker):服務生 / 主廚 / 副廚 / 吧台 / 外場主管 / 老闆 / 行政 / 其他
  7. ★ 職稱(自填,可選):e.g.「資深主廚」「實習生」「店長」
  8. ★ 拍攝 / 上傳頭貼(給客人看,建議用相機現場拍提高真實感)
  9. ★ 給客人看的自我介紹(最多 100 字):e.g.「我是阿明,在這裡 3 年了,擅長推薦海鮮料理 ❤️」
  10. 頭像顯示是否要在客人結帳頁顯示 toggle(隱私)
  11. 是否顯示在菜單頁 toggle
  12. 是否顯示在桌邊主頁面 toggle(進入點 3)

老闆視角同步:老闆也是員工的一種(role=owner), 一樣可以在 StaffsMate App 內填這些欄位,並選擇是否要顯示給客人(可不參與打賞)。

3.3 客人打賞流程(3 個進入點 — 老闆 Q1 已答)

進入點 1:結帳完成頁加「為您服務」section

客人桌邊結帳頁
└─ 看到帳單
   └─ 帳單下方出現「為您服務 ❤️」section
      ├─ 服務生 王小明     [打賞]
      ├─ 主廚    陳大華     [打賞]
      └─ (老闆 Q5 已答:不做整桌均分)

   點任一「打賞」按鈕:
   1. 選金額($100/$200/$500/自填) ← Q3 已拍板
   2. (選填)留言鼓勵員工「謝謝,服務很棒」 ← Q4 已拍板
   3. 點「確認打賞」
   4. ChefsMate redirect → 該員工的 LINE Pay/台灣 Pay 收款連結
   5. 客人在該工具完成付款
   6. 回到 ChefsMate 顯示「已送出 ❤️」+ 留言會同步到員工 App
   7. audit log INSERT 一筆 tip_events
  

進入點 2:菜單頁加「員工小費」項目

客人桌邊瀏覽菜單
└─ 滑到最底
   └─ 「為員工加油」section
      ├─ 員工卡片 (照片 + 名字 + 工作崗位 + 職稱 + 自我介紹)
      │   點卡片 → 跳金額選擇 → 加入購物車
      └─ 主廚卡片 / 老闆卡片(若有開啟)
         (作為 cart 內的「項目」,結帳時跟主餐分流)

   結帳:
   - 主餐金額照 normal flow 結帳(進餐廳)
   - 員工小費項目 → ChefsMate 偵測 → redirect 到對應員工連結
  

★ 進入點 3:桌邊主頁面加「打賞員工」section(老闆 Q1 新增)

老闆 2026-05-25 親自指定:除了結帳完成頁和菜單頁, 桌邊主頁面(用餐中的「A 桌」主畫面,目前有 訂單 / 結帳 / 服務鈴 / 分享這一桌 四個 quadrant icons) 應該新增第 5 個 icon「打賞員工 ❤️」,讓客人在用餐過程中任何時刻 (不只結帳時)都能打賞欣賞的服務生 / 主廚。
客人在桌邊主頁面(用餐中)
└─ 看到 quadrant icons:
   ├─ 📋 訂單              (查看點過的菜)
   ├─ 💳 結帳              (準備結帳)
   ├─ 🛎️ 服務鈴             (呼叫服務)
   ├─ 🔗 分享這一桌          (傳給其他客人加菜)
   └─ ❤️ 打賞員工           ← ★ 新增(Q1)

   點「打賞員工」:
   1. 進入「選擇打賞對象」頁
      - 顯示「所有員工(含老闆)」每張卡片有:
        頭貼 + 名字 + 工作崗位 + 職稱 + 自我介紹
      - 老闆 Q6 已答:全顯示,讓客人好決定
   2. 點員工卡片 → 進入打賞流程(同進入點 1 的步驟 1~7)
  

3.4 員工視角(收款後)

  1. 該員工的 LINE Pay / 台灣 Pay 收到入帳通知(系統原生)
  2. 員工 App「打賞紀錄」tab 看到 audit:
    • 2026-05-25 18:30 王太太桌(訂位 #1234) → LINE Pay $200 + 留言「謝謝」
  3. 實際金額 ChefsMate 不存(只記事件 + 留言),金額是 client estimate(因為錢沒經 ChefsMate)

3.5 老闆視角

  1. POS 主畫面看不到員工小費金額(隱私)
  2. 管理 tab → 「員工小費報表」可以看:
    • 每位員工被打賞次數(不顯示金額)
    • 整餐廳 tip event 趨勢圖
    • 客人留言摘要(可選功能)
  3. 用來評估服務品質,不評估員工收入(避免老闆據此扣底薪)

§4. Database Schema

-- 員工小費設定
CREATE TABLE staff_tip_settings (
  id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  staff_id UUID NOT NULL REFERENCES staff(id) ON DELETE CASCADE,
  restaurant_id UUID NOT NULL,
  enabled BOOLEAN NOT NULL DEFAULT FALSE,
  payment_tool TEXT,                -- 'line_pay' / 'taiwan_pay' / 'jko_pay'
  payment_link TEXT,                -- 該工具的個人收款連結
  qr_code_url TEXT,                 -- 可選,QR image
  display_name TEXT,                -- 給客人看的名字
  show_in_checkout BOOLEAN DEFAULT TRUE,
  show_in_menu BOOLEAN DEFAULT FALSE,
  show_in_table_main BOOLEAN DEFAULT TRUE,  -- ★ Q1 進入點 3
  created_at TIMESTAMPTZ DEFAULT NOW(),
  updated_at TIMESTAMPTZ DEFAULT NOW()
);

-- ★ Q6 員工 staff 表擴充(staffsmate App 維護)
ALTER TABLE staff ADD COLUMN customer_intro TEXT;           -- 給客人看的自我介紹(最多 100 字)
ALTER TABLE staff ADD COLUMN customer_photo_url TEXT;       -- 給客人看的頭貼
ALTER TABLE staff ADD COLUMN job_position TEXT;             -- 工作崗位 e.g. 服務生 / 主廚 / 吧台
ALTER TABLE staff ADD COLUMN job_title TEXT;                -- 職稱 e.g. 資深主廚 / 店長 / 實習生
ALTER TABLE staff ADD COLUMN show_to_customer BOOLEAN DEFAULT FALSE;
  -- 是否在客人選打賞員工頁顯示(老闆也可開,Q6:含老闆)

-- 餐廳級設定
ALTER TABLE restaurant_settings ADD COLUMN tip_system_enabled BOOLEAN DEFAULT FALSE;
ALTER TABLE restaurant_settings ADD COLUMN tip_distribution_mode TEXT DEFAULT 'direct_to_staff';
  -- 'direct_to_staff' (方案A 預設) / 'restaurant_collect_then_distribute' (方案B 備援)
ALTER TABLE restaurant_settings ADD COLUMN tip_amount_options JSONB DEFAULT '[100,200,500]';
  -- ★ Q3 老闆拍板 100/200/500
-- ★ Q5 不做整桌均分,移除 tip_allow_table_split,不增此 column

-- 打賞事件 audit(不存實際金額,只 client estimate)
CREATE TABLE tip_events (
  id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  restaurant_id UUID NOT NULL,
  reservation_id UUID REFERENCES reservations(id),
  staff_id UUID NOT NULL REFERENCES staff(id),
  customer_phone TEXT,
  customer_email TEXT,
  estimated_amount INTEGER,         -- client 端 estimate(實際進員工帳戶我們不知)
  payment_tool TEXT,                -- 客人實際選的工具
  entry_point TEXT,                 -- 'checkout' / 'menu' / 'table_main' (Q1 三個進入點)
  message TEXT,                     -- 客人留言(選填,鼓勵員工 Q4)
  redirect_url TEXT,                -- 我們導出去的 URL(audit 用)
  created_at TIMESTAMPTZ DEFAULT NOW()
);

-- RLS:員工只看自己的,老闆只看次數不看金額(Q2 已答)

§5. Phase Plan

Phase內容工時
1DB schema(staff_tip_settings + tip_events + restaurant_settings 擴充 + staff 表加 4 個欄位)1 天
2StaffsMate App 設定 UI(綁 LINE Pay link / 上傳 QR / 自我介紹 / 頭貼 / 工作崗位 / 職稱)3 天 +1 天
3老闆 App 全餐廳開關 + 分潤模式 picker + per-staff 啟用1 天
4客人結帳完成頁加「為您服務」section + 打賞 button(進入點 1)2 天
5菜單頁「員工小費」項目(進入點 2)2 天
6桌邊主頁面加「打賞員工」icon + 員工選擇頁(進入點 3,Q1 新增)2 天
7tip_events audit log + StaffsMate App「打賞紀錄」tab(含留言顯示)1 天
8老闆 App「員工小費報表」(只顯示次數,Q2)1 天
9(Phase 2 — 備援)方案 B「餐廳代收 + 月底分潤」實作(老闆 Q7 已答:做)3 天
合計 Phase 13 個進入點 + 完整 audit + StaffsMate 員工檔案擴充~13 天
合計 + Phase 2+ 餐廳代收模式(備援)~16 天

§6. 已知限制 / 風險

§7. 老闆答覆(2026-05-25)

✅ 7/7 全答完 — 以下答覆已併入上方 §3、§4、§5 各章節, Phase 1 可直接開做(預估 ~13 天)。
Q1. Phase 1 進入點要做幾個?
✅ 答:3 個進入點。 除了原本提的(1)結帳完成頁、(2)菜單頁之外, 桌邊主頁面(用餐中的「A 桌」主畫面,目前有 訂單 / 結帳 / 服務鈴 / 分享這一桌 quadrant icons) 也要新增「打賞員工」section(進入點 3),讓客人在用餐過程中任何時刻都能打賞。 → spec §3.3 已新增進入點 3 完整流程 + Phase 6 新增 2 天工時。
Q2. 老闆能看員工小費「次數」還是「金額」?
✅ 答:只看次數。 用來評估服務品質,不影響薪資,避免員工擔心被據此扣底薪。 → spec §3.5 + Phase 8 已 reflect。
Q3. 打賞金額預設選項?
✅ 答:預設 100 / 200 / 500,且可自填。 → spec §3.1 + §4 DB schema tip_amount_options DEFAULT '[100,200,500]' 已更新。
Q4. 客人留言是必填還是選填?
✅ 答:選填,但定位為「鼓勵員工」。 文案設計要鼓勵客人留下正面留言給員工(不是「備註」這種中性詞彙)。 → spec §3.3 各進入點流程已更新文案 + tip_events.message 註解已更新。
Q5. 要不要支援「整桌均分打賞」?
✅ 答:不做。 → spec §3.1 已移除 toggle、§4 DB schema 不增 tip_allow_table_split column、 §3.3 流程也刪掉「整桌一起」按鈕。
Q6. 「為您服務」section 顯示哪幾位員工?
✅ 答:顯示所有員工(含老闆)。 員工在 StaffsMate App 內填寫:
  • 給客人看的自我介紹(最多 100 字)
  • 拍攝 / 上傳頭貼(讓客人認識才不會賞錯人)
  • 工作崗位(服務生 / 主廚 / 吧台 / 老闆 / ...)
  • 職稱(資深主廚 / 店長 / 實習生)
讓客人有足夠資訊好決定要打賞誰。老闆也可顯示給客人看。 → spec §3.2 已大改 + §4 staff 表新增 4 個 column + Phase 2 工時 +1 天。
Q7. 要不要做方案 B(餐廳代收 + 月底分潤)當 toggle 選項?
✅ 答:要做,當作備援選項。 預設方案 A(直接進員工帳戶),但若有員工尚未綁定個人收款工具, 老闆可切到方案 B 由餐廳代收 → 月底批次匯款。 → spec §3.1 picker 第二項已調整文案、Phase 9 保留 3 天工時。

§8. 相關 sysmap 文件

Spec 建立 2026-05-25 · 老闆同日答完 7Q · Phase 1 可直接開做(~13 天)