Appearance
M2 - 需求收集
流程概述
把搭乘需求收集並結構化。使用者(乘客/家長/管理員)透過不同方式建立搭乘需求。每筆需求代表「某人需要在某時從 A 到 B」。這是銜接「服務設計」與「供需媒合」之間的關鍵流程。
執行者:乘客自助(C2C)/ 家長報名(B2B)/ 管理員代建(批次匯入)
前置條件:M1 服務方案已發布
Happy Path
步驟 1:使用者登入與帳號狀態檢查
使用者透過任一入口(Web / 手機網頁 / PWA / LINE LIFF)進入 Web App,以任一已綁定的登入方式登入:
- 手機 OTP
- Email OTP
- Google 登入
- Apple 登入(Phase 2)
系統檢查帳號狀態:
| 狀態 | 行為 |
|---|---|
| fully_verified | 正常進入步驟 2 |
| basic_verified(手機未驗證) | 攔截,彈出 inline 手機驗證 modal(輸入手機 → OTP → 驗證完成 → 自動繼續),頁面頂部顯示溫和提示但不阻擋瀏覽 |
| pending_verification | 引導至帳號認領流程(S1 路徑 B4.5) |
步驟 2:系統檢查確認流程
依服務方案設定,使用者可能需要完成以下確認(任一項未完成則阻擋進入步驟 3):
| 確認項目 | 觸發條件 | 說明 |
|---|---|---|
| 同意服務條款 | 有新版本條款 | 使用者閱讀並同意最新版本 |
| 設定/確認會面點 | 方案啟用會面點管理 | 確認上車地點、上傳照片(若需要) |
| 簽署陪同聲明 | 方案啟用陪同聲明 且 搭乘者含未成年 | 法定代理人簽署聲明 |
步驟 3:進入需求建立
依服務方案設定的「需求收集方式」,進入對應模式:
模式 A:自助模式(C2C 共乘、旅遊包車)
填寫搭乘資訊
- 起點(地址或地標)
- 終點(地址或地標)
- 搭乘時間
- 搭乘人數
系統搜尋現有行程
- 搜尋是否有時間、路線相近且有空位的行程可加入
搜尋結果處理
有符合的行程 →
- 顯示行程列表(時間、路線、價格、空位數)
- 使用者選擇行程、查看詳情
- 確認加入(價格重新計算、座位確認)
- 需求收集 + 媒合同時完成,直接進入待出發狀態
無符合的行程 →
- 引導使用者建立新需求(開團)
- 需求建立完成後,進入 M3 供需媒合階段等司機接單
模式 B:報名模式(活動接駁、校車、企業接駁)
選擇服務方案(活動)
- 從可報名的方案列表中選擇
選擇搭乘者
- 自己
- 孩子(可選多人)
- 其他被照護者
選擇日期與方向
- 顯示方案涵蓋的日期列表
- 每個日期可獨立選擇「去程」/「回程」/「來回」
系統產生需求
- 每個「日期 + 方向」組合產生一筆獨立需求
- 例:選了 3 天來回 = 產生 6 筆需求
模式 C:批次匯入(管理員操作)
上傳外部資料
- 管理員上傳 Google Sheets 或 CSV
- 包含乘客資訊、日期、方向等
系統驗證
- 格式驗證(欄位是否完整、格式是否正確)
- 內容驗證(乘客是否存在、日期是否在方案範圍內)
顯示預覽
- 新增 N 筆
- 更新 N 筆(重複乘客同日期)
- 錯誤 N 筆(附錯誤原因)
確認後批次產生需求
步驟 4:需求驗證
系統對每筆需求進行以下驗證:
| 驗證項目 | 驗證內容 | 未通過處理 |
|---|---|---|
| 方案規則 | 起訖點是否在服務區域內、時段是否在服務時段內、名額是否足夠 | 拒絕建立,提示原因 |
| 搭乘者資訊 | 姓名、聯絡方式是否完整 | 要求補齊 |
| 重複檢查 | 同一搭乘者、同日期、同方向是否已有需求 | 阻擋,提示已存在 |
步驟 5:價格呈現
| 計價方式 | 顯示內容 |
|---|---|
| 動態計價 | 顯示預估金額(實際金額依最終共乘人數調整) |
| 固定價格 | 顯示方案定價 |
| 優惠券/折扣 | 自動套用符合條件的優惠,或手動輸入兌換碼 |
步驟 6:確認送出
- 使用者確認搭乘資訊、價格無誤
- 送出需求
步驟 7:發送確認通知
透過用戶啟用的通知管道發送需求建立確認:
| 管道 | 發送條件 | 內容 |
|---|---|---|
| LINE | 用戶已綁定 LINE 通知 | Flex Message,含搭乘日期、方向、起訖點、價格、目前狀態 |
| 用戶已綁定 Email 通知 | 格式化郵件,內容同上 | |
| 簡訊 | 僅作為 fallback(LINE 和 Email 都未綁定或發送失敗時) | 精簡文字通知 |
- 若有監護人,同步透過監護人啟用的通知管道通知
各場景對應
| 場景 | 需求建立模式 | 搭乘者 | 確認流程 | 特殊行為 |
|---|---|---|---|---|
| bearbubu 共乘 | 自助模式 | 本人 | 會面點確認 | 搜尋現有行程 → 加入或開團 |
| Dauding 接駁 | 報名模式 | 本人/孩子 | 陪同聲明(若有未成年) | 按日期+方向產生多筆需求 |
| 企業接駁 | 報名模式 | 本人 | 服務條款 | 固定路線選擇 |
| 校車 | 報名模式 | 孩子(家長代操作) | 陪同聲明 + 會面點 | 學期整批報名 |
| 旅遊包車 | 自助模式 | 本人+同行者 | 服務條款 | 客製化行程 |
| 管理員代建 | 批次匯入 | 多人 | 無(管理員已確認) | 大量匯入 |
Worst Case
WC-1:確認流程未完成
- 觸發條件:會面點未設定、陪同聲明未簽署
- 系統行為:阻擋進入需求建立頁面,引導完成確認流程
- 處理方式:使用者完成確認後即可繼續
WC-2:方案已額滿
- 觸發條件:方案設有名額上限且已額滿
- 系統行為:拒絕建立需求,提示「名額已滿」
- 處理方式:使用者可選擇其他方案或等候候補(若有開放)
WC-3:重複需求
- 觸發條件:同一搭乘者、同日期、同方向已有需求
- 系統行為:阻擋建立,顯示已存在的需求資訊
- 處理方式:使用者可前往修改既有需求
WC-4:搜尋無符合行程(自助模式)
- 觸發條件:C2C 加入模式下搜尋不到可加入的行程
- 系統行為:提示「目前沒有符合的行程」
- 處理方式:引導使用者建立新需求(開團),等候司機接單
WC-5:批次匯入格式錯誤
- 觸發條件:上傳檔案格式不符或內容有誤
- 系統行為:顯示錯誤行號與原因,格式正確的筆數正常處理
- 處理方式:管理員修正錯誤資料後重新匯入失敗筆數
WC-6:取消需求
- 觸發條件:使用者或管理員決定取消已建立的需求
- 系統行為:
- 單筆取消或全部取消
- 若已付款,觸發退款規則
- 若已媒合行程,通知司機座位釋出
- 發送取消確認通知
- 處理方式:確認取消後執行
WC-7:部分乘客取消(多人需求)
- 觸發條件:多人需求中有部分乘客取消
- 系統行為:該乘客從需求中移除,需求本身繼續有效,人數與價格重新計算
- 處理方式:通知相關人員人數變更
WC-8:需求資訊需修改
- 觸發條件:使用者需要修改已送出的需求(時間、地點等)
- 系統行為:記錄變更歷史,若已媒合行程則需重新媒合
- 處理方式:使用者修改後系統重新驗證
WC-9:登入方式異常
- 觸發條件:OAuth provider 回調失敗(Google 無回應、網路中斷等)或 OTP 服務異常
- 系統行為:提示錯誤原因,引導用戶選擇其他登入方式(例如 Google 登入失敗 → 改用手機 OTP 或 Email OTP)
- 影響:不影響帳號狀態,用戶可隨時重試或換方式登入
WC-10:OTP 簡訊未收到
- 觸發條件:手機驗證簡訊延遲或未送達
- 系統行為:提供「重新發送」按鈕(有頻率限制,如 60 秒一次)
- 處理方式:使用者等待後重新發送
相關子流程
- 會員管理(S1):多元登入方式註冊、帳號狀態管理(basic_verified → fully_verified)、通知管道綁定、個人資料管理
- 會面點確認:地點設定、照片上傳、管理員審核
- 陪同聲明:聲明內容顯示、簽署記錄、效期管理
- 優惠券:兌換碼驗證、自動套用規則、使用記錄
- 外部同步與匯入:Google Sheets 連結、資料格式規範、匯入記錄、邀請連結發送