SBE Scenario 2: 設計完成流轉(設計中 → 待出貨)
場景描述
設計師完成商品設計並上傳作品照片後,訂單狀態從「設計中」變更為「待出貨」。
Given(前置條件)
系統狀態
- 當前日期: 2025-11-01
- 當前租戶:
ABC(ABC 花店) - 已登入用戶: 王小花 (ROLE_FLORIST)
測試資料
現有訂單
{
"orderId": "ABC-20251101-0002",
"orderNumber": "ABC-20251101-0002",
"tenantId": "ABC",
"status": "in_production",
"customerId": "cust-002",
"assignedFlorist": {
"id": "user-002",
"name": "王小花",
"role": "ROLE_FLORIST"
},
"deliveryDate": "2025-11-03",
"createdAt": "2025-11-01T09:00:00Z"
}
When(執行操作)
步驟 1: 進入訂單詳情頁
- 設計師「王小花」進入工作列表
- 點擊訂單
ABC-20251101-0002 - 當前狀態顯示為「設計中」
步驟 2: 上傳作品照片
- 設計師點擊「上傳作品照片」按鈕
- 選擇 3 張照片(photo1.jpg, photo2.jpg, photo3.jpg)
- 系統上傳照片至雲端儲存(S3)
- 照片 URL 儲存至訂單
步驟 3: 標記為完成
- 設計師點擊「標記為完成」按鈕
- 系統顯示確認對話框: 「確定已完成設計並準備出貨嗎?」
- 設計師點擊「確定」
Then(預期結果)
API 請求
端點: PUT /api/v1/orders/ABC-20251101-0002/status
Request Body
{
"newStatus": "ready_for_delivery",
"photoUrls": [
"https://s3.example.com/ABC/portfolios/ABC-20251101-0002/photo1.jpg",
"https://s3.example.com/ABC/portfolios/ABC-20251101-0002/photo2.jpg",
"https://s3.example.com/ABC/portfolios/ABC-20251101-0002/photo3.jpg"
]
}
Response Body (200 OK)
{
"orderId": "ABC-20251101-0002",
"oldStatus": "in_production",
"newStatus": "ready_for_delivery",
"updatedAt": "2025-11-01T14:30:00Z",
"updatedBy": {
"userId": "user-002",
"userName": "王小花",
"role": "ROLE_FLORIST"
},
"message": "訂單狀態已更新為「待出貨」"
}
資料庫變更
1. 更新 orders 表
UPDATE orders
SET status = 'ready_for_delivery',
work_photos = '["photo1.jpg", "photo2.jpg", "photo3.jpg"]',
design_completed_at = '2025-11-01T14:30:00Z',
updated_at = '2025-11-01T14:30:00Z'
WHERE order_id = 'ABC-20251101-0002';
2. 新增狀態歷史記錄
{
"id": "history-002",
"orderId": "ABC-20251101-0002",
"tenantId": "ABC",
"oldStatus": "in_production",
"newStatus": "ready_for_delivery",
"timestamp": "2025-11-01T14:30:00Z",
"operatorId": "user-002",
"operatorName": "王小花",
"operatorRole": "ROLE_FLORIST",
"description": "上傳作品照片並標記完成",
"metadata": {
"photoCount": 3
}
}
通知觸發
1. Email 通知(發送給客戶)
{
"to": "customer@example.com",
"subject": "ABC 花店 - 訂單設計完成 ABC-20251101-0002",
"body": "您的訂單已完成設計,即將配送。"
}
2. 內部通知(發送給送貨員)
{
"to": "delivery-team@abc-ROLE_FLORIST.com",
"subject": "新訂單待出貨 ABC-20251101-0002",
"body": "訂單 ABC-20251101-0002 已完成設計,請安排配送。"
}
驗證檢查清單
狀態流轉
- 訂單狀態從「設計中」變更為「待出貨」
- 作品照片 URL 正確儲存
- 設計完成時間正確記錄
照片管理
- 照片上傳至雲端儲存成功
- 照片數量至少 1 張
- 照片 URL 可訪問
通知系統
- 發送通知給客戶
- 發送通知給送貨員
- 通知內容正確
錯誤場景測試
錯誤場景 1: 未上傳照片
- 操作: 點擊「標記為完成」但未上傳照片
- 預期結果:
- 前端驗證失敗
- 錯誤訊息: 「請先上傳至少 1 張作品照片」
最後更新: 2025-11-03