Skip to content

S1 會員管理

S1-member-management 流程圖

概述

管理會員帳戶的完整生命週期,包含多元登入方式的自助註冊、管理員新增、批次匯入、漸進式身份驗證(手機 OTP / Email OTP / Google / Apple)、通知管道綁定(LINE / 簡訊 / Email),以及會員資料維護。系統以獨立 UUID 為帳號主鍵,認證方式(AuthMethod)與通知管道(NotificationChannel)完全分離。會員是所有服務的基礎——沒有完整的會員資料,就無法進行需求收集、預約和行程執行。

執行者:乘客/家長(C2C 場景)/ 管理員(B2B 場景)


觸發條件

  • 新用戶首次使用服務,需要建立帳號
  • 管理員為活動或學期計畫批次建立會員
  • 已有帳號但尚未完成驗證,需補完驗證流程
  • M2 需求收集前,系統檢查會員狀態(fully_verified 方可建立需求)
  • 用戶嘗試建立需求但帳號狀態為 basic_verified,觸發手機補驗流程

Happy Path

路徑 A:自助註冊(C2C 場景)

  1. 用戶透過任一入口(Web / 手機網頁 / PWA / LINE LIFF)開啟 Web App
  2. 選擇登入方式:
    • 手機 OTP:輸入手機號碼 → 接收驗證碼 → 驗證完成
    • Email OTP:輸入 Email → 接收驗證碼 → 驗證完成
    • Google 登入:跳轉 Google OAuth → 授權回調
    • Apple 登入(Phase 2):跳轉 Apple OAuth → 授權回調
  3. 系統查詢 AuthMethod(provider_uid 是否已存在):
    • 已存在 → 直接登入
    • 不存在 → 建立新 User(UUID 主鍵)+ AuthMethod
  4. 填寫基本資料(姓名、暱稱)
  5. 帳號狀態判定:
    • 以手機 OTP 註冊 → 狀態為「fully_verified」(手機已驗證)
    • 以其他方式註冊 → 狀態為「basic_verified」(可瀏覽,建立需求前需補驗手機)

路徑 B:管理員批次匯入與外部同步(B2B 場景)

B1. 準備與上傳

  1. 管理員準備 Google Sheets 資料(必填:姓名、電話;可選:Email、地址等)
  2. 進入中控台「會員管理」→「批次匯入」
  3. 上傳檔案或指定 Google Sheets 連結

B2. 格式驗證

系統自動檢查:

檢查項目說明
必填欄位姓名、電話不得為空
格式檢查電話格式(09 開頭 10 碼)、Email 格式
重複檢查電話號碼比對現有會員是否已存在

B3. 匯入預覽

系統顯示匯入預覽,管理員確認無誤後才執行:

項目說明
總筆數檔案中的資料總數
新增筆數系統中不存在的新會員
更新筆數已存在會員,有欄位需要更新
錯誤筆數格式錯誤或衝突的資料(含錯誤行號和原因)

B4. 差異更新(Hash 比對)

管理員確認後,系統逐筆處理:

  • 新會員 → 建立會員資料
  • 已存在會員 → 以 hash 值比對各欄位,僅更新有差異的欄位(無差異則跳過,避免不必要的寫入)
  • 錯誤筆 → 跳過並記錄錯誤原因

B4.5 發送邀請連結

匯入完成後,系統對新建立的會員發送邀請:

  1. 系統發送邀請簡訊至管理員提供的電話號碼
    • 內容:「您已被 [方案名稱] 加入為會員,點此連結啟用帳號」
    • 連結包含一次性 invite token
  2. 用戶點擊連結 → 進入 Web App → 選擇偏好的登入方式
  3. 系統發 OTP 到邀請連結對應的電話號碼(二次確認身份)
  4. 驗證通過 → 將選擇的登入方式寫入 AuthMethod → 帳號狀態升級為 fully_verified → token 失效

「手機號碼有誤」處理:邀請頁面提供「手機號碼有誤?」選項 → 用戶填入正確號碼 → 系統通知管理員確認 → 核准後更新

B5. 同步紀錄與來源追蹤

匯入完成後,系統建立完整的追蹤記錄:

同步紀錄(每次匯入一筆):

  • 狀態流轉:待處理 → 處理中 → 已完成 / 失敗
  • 記錄:匯入時間、來源類型、成功/失敗筆數

同步日誌(每筆資料一筆):

  • 原始資料、同步結果(新增/更新/跳過/失敗)、錯誤訊息

來源追蹤歸因

  • 每個會員記錄外部來源資訊(如「Google Sheets - 2026春季營隊名單」)
  • 記錄最後同步時間,供後續差異比對使用

B6. 中斷恢復

  • 匯入過程中若中斷(網路異常、系統錯誤),已處理的資料保留不受影響
  • 同步紀錄狀態標記為「失敗」,記錄中斷位置
  • 管理員可重新匯入,系統以 hash 比對自動跳過已成功的資料,僅處理未完成部分

路徑 C:管理員手動新增(B2B 場景)

  1. 管理員進入中控台「會員管理」→「新增會員」
  2. 填寫家長/監護人資料(姓名、電話、Email、地址)
  3. 新增孩童資訊(姓名、年齡、學校、年級、特殊需求)
  4. 儲存會員資料

路徑 D:通知管道綁定(可選)

用戶可綁定一或多個通知管道,以接收行程相關推播通知。此為可選操作,不影響核心功能使用。

  1. 用戶進入「帳號設定」→「通知管道」
  2. 顯示可綁定管道:
    • 簡訊:手機驗證完成後自動啟用,不可關閉(最終 fallback)
    • Email:輸入 Email → OTP 驗證 → 綁定完成
    • LINE:透過 LINE Login OAuth 授權 → 取得推播權限 → 綁定完成
  3. 用戶可隨時開關各管道(簡訊除外)
  4. 綁定完成後,系統依事件類型與用戶啟用的管道交集發送通知

注意:LINE 通知管道綁定(LINE Login OAuth)與從 LINE LIFF 進入 Web App 是完全獨立的兩件事。用戶可從 LINE LIFF 進入但不綁定 LINE 通知,也可從瀏覽器進入但綁定 LINE 通知。

會員資料維護

  • 基本資訊編輯(姓名、電話、Email、地址)
  • 登入方式管理(新增/移除 AuthMethod:手機 OTP、Email OTP、Google、Apple)
  • 通知管道管理(新增/移除/開關 NotificationChannel:LINE、Email;簡訊為保底不可關閉)
  • 孩童資訊管理(一位會員可管理多位孩童)
  • 會面點設定(地址、座標、照片)→ 觸發 S3
  • 通知鏈接設定(新增其他監護人為通知接收者)

Worst Case

WC-1:驗證碼過期或錯誤

  • 觸發條件:用戶輸入的驗證碼已超過有效期(10 分鐘)或碼值不正確
  • 系統行為:提示「驗證碼已過期」或「驗證碼不正確」
  • 處理方式:用戶重新發送驗證碼(Email 冷卻 60 秒、簡訊冷卻 15 秒)

WC-2:簡訊發送達上限

  • 觸發條件:同一帳號簡訊發送已達 3 次
  • 系統行為:阻擋發送,提示聯絡客服
  • 處理方式:客服人工協助驗證

WC-3:帳號合併衝突

  • 觸發條件:用戶補驗手機時,該號碼已關聯另一個帳號(例如 B2B 管理員預建的帳號)
  • 系統行為:提示「此手機號碼已有帳號,是否合併?」
  • 處理方式
    • 用戶確認合併 → 有行程記錄者為主帳號(都沒有則較早建立者為主)→ 所有 AuthMethod 與 NotificationChannel 合併到主帳號
    • 用戶取消 → 保持現狀,不綁定此號碼

WC-4:匯入格式錯誤

  • 觸發條件:批次匯入的檔案格式不符或必填欄位缺漏
  • 系統行為:驗證失敗,顯示錯誤清單(含錯誤行號與原因)
  • 處理方式:管理員修正原始資料後重新上傳

WC-5:匯入部分失敗

  • 觸發條件:批次匯入中部分資料有問題
  • 系統行為:成功筆數正常處理,失敗筆數記錄至同步日誌
  • 處理方式:管理員依據錯誤日誌逐一修正

WC-6:通知管道綁定衝突

  • 觸發條件:一個 LINE 帳號(或同一 Email)嘗試綁定為多個會員的通知管道
  • 系統行為:限制一對一綁定,提示衝突
  • 處理方式:需先在原帳號解除綁定,再於新帳號綁定

WC-7:會員停用與恢復

  • 觸發條件:會員不再使用服務
  • 系統行為:軟刪除機制(標記刪除時間,資料保留),通知鏈接自動停用
  • 處理方式:需恢復時取消軟刪除標記,通知鏈接自動恢復

場景差異表

維度C2C 共乘活動接駁企業接駁校車旅遊包車
建立方式Web App 自助註冊管理員批次匯入 + 邀請認領管理員批次匯入 + 邀請認領管理員批次匯入 + 邀請認領Web App 自助註冊
登入方式手機 OTP / Email OTP / Google邀請連結 → 任選登入方式邀請連結 → 任選登入方式邀請連結 → 任選登入方式手機 OTP / Email OTP / Google
手機驗證建立需求前補驗(漸進式)管理員已提供,認領時 OTP 確認管理員已提供,認領時 OTP 確認管理員已提供,認領時 OTP 確認建立需求前補驗(漸進式)
通知管道用戶自選綁定(LINE / Email)管理員發送綁定引導企業窗口發送綁定引導管理員發送綁定引導用戶自選綁定(LINE / Email)
孩童資訊用戶自行填寫(選填)管理員匯入,含學校/年級不適用管理員匯入,含學校/年級/班級不適用
會面點設定用戶自選上車點管理員預設或家長設定企業指定接駁點學校/家長設定用戶自選
批次匯入不適用常用(含 hash 差異更新)常用(含 hash 差異更新)常用(含 hash 差異更新)不適用
來源追蹤不適用記錄外部來源與同步時間記錄外部來源與同步時間記錄外部來源與同步時間不適用
重複處理AuthMethod 唯一性檢查hash 比對,僅更新差異欄位hash 比對,僅更新差異欄位hash 比對,僅更新差異欄位AuthMethod 唯一性檢查

所屬主流程

主流程關係說明
M1 服務設計前置服務方案定義會員需要完成哪些驗證
M2 需求收集前置收集需求前需確認會員資料完整
S3 會面點管理觸發會員設定會面點後進入審核流程