跳至主要内容

SBE Scenario 1: 確認訂單(待確認 → 已確認)

場景描述

店員確認訂單細節後,將訂單狀態從「待確認」變更為「已確認」。


Given(前置條件)

系統狀態

  • 當前日期: 2025-11-01
  • 當前租戶: ABC (ABC 花店)
  • 已登入用戶: 張店員 (ROLE_SALES)

測試資料

現有訂單

{
"orderId": "ABC-20251101-0001",
"orderNumber": "ABC-20251101-0001",
"tenantId": "ABC",
"status": "pending_confirmation",
"customerId": "cust-001",
"customer": {
"name": "李大華",
"phone": "0912-345-678"
},
"items": [
{
"productId": "prod-001",
"productName": "玫瑰花束(12 朵)",
"quantity": 2,
"price": 1200
}
],
"totalAmount": 2520,
"deliveryDate": "2025-11-05",
"createdAt": "2025-11-01T09:30:00Z"
}

When(執行操作)

步驟 1: 進入訂單詳情頁

  • 店員點擊訂單列表中的訂單 ABC-20251101-0001
  • 系統顯示訂單詳情頁
  • 當前狀態顯示為「待確認」

步驟 2: 檢查訂單資訊

  • 店員確認客戶資訊、商品、配送地址無誤

步驟 3: 確認訂單

  • 店員點擊「確認訂單」按鈕
  • 系統顯示確認對話框: 「確定要確認此訂單嗎?」
  • 店員點擊「確定」

Then(預期結果)

API 請求

端點: PUT /api/v1/orders/ABC-20251101-0001/status

Request Body

{
"newStatus": "confirmed"
}

Response Body (200 OK)

{
"orderId": "ABC-20251101-0001",
"oldStatus": "pending_confirmation",
"newStatus": "confirmed",
"updatedAt": "2025-11-01T10:00:00Z",
"updatedBy": {
"userId": "user-001",
"userName": "張店員",
"role": "ROLE_SALES"
},
"message": "訂單狀態已更新為「已確認」"
}

UI 反饋

1. 成功訊息

  • Toast 通知: 「訂單狀態已更新為「已確認」」
  • 訊息類型: 成功(綠色)

2. 狀態顯示更新

  • 狀態進度條更新:
    [✓] 待確認 → [●] 已確認 → [ ] 設計中 → [ ] 待出貨 → [ ] 配送中 → [ ] 已簽收 → [ ] 已完成
  • 操作按鈕變更:
    • 隱藏「確認訂單」按鈕
    • 顯示「分配設計師」按鈕(管理者角色可見)

資料庫變更

1. 更新 orders 表

UPDATE orders
SET status = 'confirmed',
updated_at = '2025-11-01T10:00:00Z'
WHERE order_id = 'ABC-20251101-0001';

2. 新增狀態歷史記錄

{
"id": "history-001",
"orderId": "ABC-20251101-0001",
"tenantId": "ABC",
"oldStatus": "pending_confirmation",
"newStatus": "confirmed",
"timestamp": "2025-11-01T10:00:00Z",
"operatorId": "user-001",
"operatorName": "張店員",
"operatorRole": "ROLE_SALES",
"description": "手動確認訂單"
}

通知觸發

Email 通知(發送給客戶)

{
"to": "dh.lee@example.com",
"subject": "ABC 花店 - 訂單已確認 ABC-20251101-0001",
"body": "親愛的李大華先生/小姐,\n\n您的訂單 ABC-20251101-0001 已確認,預計於 2025-11-05 送達。\n\n感謝您的訂購!\n\nABC 花店"
}

驗證檢查清單

狀態流轉

  • 訂單狀態從「待確認」變更為「已確認」
  • 狀態歷史記錄正確生成
  • 操作者資訊正確記錄

通知系統

  • Email 通知發送給客戶
  • 通知內容包含訂單編號與配送日期

UI 更新

  • 狀態進度條正確更新
  • 操作按鈕動態顯示

最後更新: 2025-11-03