UGOMK 操作手冊
10 章 / 共 13

我的訂位(顧客端)

「我的訂位」(/reserve/my) 是顧客端用 LINE 身份一次看到所有訂位的入口,取代舊版「輸入訂位編號 + 電話」的逐筆查詢,提升顧客體驗。

訪問方式

1. 圖文選單按鈕(推薦)

內容管理 → 圖文選單,編輯按鈕時:

  • 動作類型選「系統功能」
  • 從下拉選「我的訂位」(連結到 /reserve/my

顧客點按鈕後在 LIFF 內自動 LINE 登入,秒看訂位列表。

2. 訂位成功頁

顧客 LIFF 訂位成功後,「查看我的訂位」按鈕直連此頁。

3. LINE 通知 Flex 中

8 張訂位通知卡的 footer 按鈕全部都連到這一頁(按鈕文字見「訂位通知 → Flex 卡片 footer 按鈕」)。顧客從 LINE 點進來會自動登入,直接看到自己所有的訂位。

顧客端體驗

自動 LINE 登入

進入頁面立即跑 ensureLogin

  • LIFF 內 無感取 line_user_id
  • 外部瀏覽器 + 未登入 跳 LINE OAuth 後回本頁
  • 無 LINE / 取消登入 顯示「需要 LINE 登入」+ 引導去訂位頁

三 Tab 分類

Tab包含排序
即將pending / confirmed / seated 且日期 ≥ 今天reserved_date desc
已完成completed 或已過日期的 pending/confirmedreserved_date desc
已取消cancelled / no_showreserved_date desc

每個 Tab 數字徽章顯示筆數,例:即將 (3)

每筆訂位資訊

  • 訂位編號(小字、靠左)
  • 狀態徽章(彩色:待店家確認/已確認/已入座/已完成/已取消/未到場)
  • 日期時間(大字粗體)
  • 人數 / 分店名 / 桌位 label
  • 備註(若有)
  • 「取消訂位」按鈕(只在 pending/confirmed 狀態出現)

一鍵取消(受 cancel_cutoff_days 控制)

pending / confirmed 狀態的訂位可直接點「取消訂位」,後端用 line_user_id 驗證身份免電話。樂觀更新 UI 即時看到狀態變灰。

若該分店有設「訂位日前 N 天起不能取消(cancel_cutoff_days)」且已進入截止期:顧客按「取消訂位」不會真的取消,而是跳出提示訊息(店家可自訂文案,如引導改洽門市電話;留空則顯示預設)。此時後端也會擋(直接打 API 一樣回錯誤,無法繞過)。設定見 訂位設定 → 訂位分頁。「不能取消」與「不能修改」各自獨立設定。

顧客自助修改(受 modify_cutoff_days 控制,2026-06-24)

pending / confirmed 狀態的訂位在「修改截止日(modify_cutoff_days)」之前可由顧客自助改人數 / 改時段(其他欄位仍走客服)。截止日的設定見 訂位設定 → 訂位分頁。

  • modify_cutoff_days = 0(預設)→ 不限,用餐當日仍可改
  • modify_cutoff_days = 1 → 用餐前一天起截止
  • modify_cutoff_days = N → 提前 N 天(含當天)起截止

超過修改截止 → 修改按鈕灰掉、提示「請與店家聯繫」;此時能否取消另由「取消截止(cancel_cutoff_days)」決定(見上方「一鍵取消」)。

後端 API

Endpoint用途
GET /api/pos-reservation/public/my-reservations?subdomain=&line_user_id=撈該會員所有訂位(含 store_name + table_label,limit 50)
POST /api/pos-reservation/public/reservations/:no/cancel body {subdomain, line_user_id, reason}LINE 身份驗證取消
GET /api/pos-reservation/public/reservations/:no?subdomain=&line_user_id=單筆查詢(line_user_id 優先,phone 向後相容)

未綁定會員(line_user_id 在 members 表找不到)回 data: [] + 提示「尚未綁定會員資料(可先訂位一次即自動建立)」— 顧客第一次訂位後就會自動有會員資料,下次就能用此頁。

多店行為

若 URL 帶 ?store_id=X,只顯示該店訂位;不帶則顯示該會員跨店所有訂位(用 store_name 在卡片內標示)。

跟「訂位查詢頁」(/reserve/[no]) 的差別

場景推薦使用
想看所有訂位、含歷史/reserve/my(LINE 登入)
從 LINE 通知卡的按鈕點進來/reserve/my —— 8 張卡全部都導這裡
手上只有一組訂位編號、想查那一筆(例如電話訂位的客人)/reserve/{訂位編號}(LINE 登入或電話驗證)

兩條路徑都支援 LINE 身份驗證,後端可互相切換。