US-205: 設計師工作台 - 手動測試指南
測試日期: ____________ 測試人員: ____________ 測試環境:
npm run dev(localhost:3000)
測試前準備
1. 啟動開發伺服器
npm run dev
2. 登入測試帳號
測試帳號:
| 角色 | 用戶名 | 密碼 |
|---|---|---|
| 設計師 | designer@florist.com | Password123! |
| 店員 | staff@florist.com | Password123! |
3. 準備測試資料
需要以下狀態的訂單:
confirmed(已確認) - 等待開始設計in_production(設計中) - 等待完成設計
可先使用店員帳號確認一些訂單。
工作台功能流程
┌─ 設計師工作台 (/design) ────────────────────────────┐
│ │
│ ┌─ 等待開始設計 (Confirmed) ────────────────────┐ │
│ │ 訂單卡片 │ │
│ │ [查看詳情] [開始設計] │ │
│ └────────────────────────────────────────────────┘ │
│ │
│ ┌─ 設計中 (In Production) ──────────────────────┐ │
│ │ 訂單卡片 │ │
│ │ [查看詳情] [完成設計*] │ │
│ │ * 需上傳照片 │ │
│ └────────────────────────────────────────────────┘ │
│ │
└──────────────────────────────────────────────────────┘
測試場景
Scenario 1: 進入設計師工作台
目標: 驗證設計師可以存取工作台並查看待處理訂單
操作步驟
-
使用設計師帳號登入
- 使用
designer@florist.com登入 - 驗證: 登入成功
- 使用
-
開啟 Application Launcher
- 點擊 Header 右側的 Launcher 按鈕
- 驗證: Application Launcher 全螢幕顯示
- 驗證: 看到「Design Workbench」卡片
-
進入設計師工作台
- 點擊「Design Workbench」卡片
- 驗證: 導航至
/design - 驗證: 看到 AppletShell 佈局
-
檢查訂單分組
- 驗證: 看到「等待開始設計」(Confirmed) 分組
- 驗證: 看到「設計中」(In Production) 分組
- 驗證: 各分組顯示對應狀態的訂單
-
檢查訂單卡片
- 驗證: 顯示訂單編號、客戶名稱
- 驗證: 顯示配送日期、配送時段
- 驗證: 顯示訂單備註/特殊需求(如有)
預期結果
- 設計師可存取工作台
- 兩個狀態分組正確顯示
- 卡片資訊完整
Scenario 2: 開始設計
目標: 驗證設計師可以開始設計訂單,狀態變更為「設計中」
操作步驟
-
在「等待開始設計」分組中
- 選擇一張訂單卡片
- 記住訂單編號
-
點擊「開始設計」按鈕
- 驗證: 顯示確認對話框
- 驗證: 對話框訊息:「確定要開始設計嗎?」
-
確認操作
- 點擊「是」按鈕
- 驗證: 顯示載入狀態
-
驗證 API 請求(開發者工具 Network)
- 驗證: 發送
PATCH /api/v1/orders/{orderId}/status - 驗證: Request Body:
{"newStatus": "in_production"} - 驗證: Response 200 OK
- 驗證: 發送
-
驗證 UI 更新
- 驗證: Toast 通知「狀態更新成功」
- 驗證: 訂單從「等待開始設計」移至「設計中」分組
- 驗證: 按鈕從「開始設計」變為「完成設計」
預期結果
- 狀態更新成功
- 訂單正確移動分組
- 按鈕動態變更
Scenario 3: 完成設計(含照片上傳)
目標: 驗證設計師完成設計時必須上傳作品照片
操作步驟
-
在「設計中」分組中
- 選擇一張訂單卡片
- 記住訂單編號
-
點擊「完成設計」按鈕
- 驗證: 開啟 PhotoUploadDialog(不是確認對話框)
- 驗證: 對話框標題:「上傳作品照片」
- 驗證: 說明文字:「請上傳至少一張作品照片後標記為完成」
-
檢查按鈕狀態
- 驗證: 「完成設計」按鈕為 禁用狀態(未上傳照片)
- 驗證: 按鈕提示需要上傳照片
-
上傳作品照片
- 點擊上傳區域或拖曳照片
- 選擇 1-3 張測試圖片
- 驗證: 照片預覽正確顯示
- 驗證: 可刪除已選照片
- 驗證: 「完成設計」按鈕變為 啟用狀態
-
確認完成
- 點擊「完成設計」按鈕
- 驗證: 顯示載入狀態
-
驗證 API 請求
- 驗證: 發送
PATCH /api/v1/orders/{orderId}/status - 驗證: Request Body 包含:
{
"newStatus": "ready_for_delivery",
"photoUrls": ["https://..."]
} - 驗證: Response 200 OK,包含
photoCount
- 驗證: 發送
-
驗證 UI 更新
- 驗證: Toast 通知「狀態更新成功」
- 驗證: PhotoUploadDialog 自動關閉
- 驗證: 訂單從「設計中」分組消失(進入配送流程)
預期結果
- 照片上傳流程正確
- 無照片時無法完成
- 狀態更新成功
Scenario 4: 照片上傳驗證
目標: 驗證照片上傳的各種限制
操作步驟
-
開啟 PhotoUploadDialog
- 點擊「設計中」訂單的「完成設計」按鈕
-
測試檔案類型限制
- 嘗試上傳非圖片檔案(如 .pdf, .txt)
- 驗證: 顯示錯誤訊息「僅支援圖片格式」
- 驗證: 檔案不被接受
-
測試檔案大小限制(如有)
- 嘗試上傳超大圖片(如 > 10MB)
- 驗證: 顯示錯誤訊息(如有大小限制)
-
測試照片數量
- 上傳 1 張照片
- 驗證: 按鈕啟用
- 上傳多張照片
- 驗證: 所有照片都顯示預覽
-
測試刪除照片
- 點擊照片預覽上的刪除按鈕
- 驗證: 照片被移除
- 刪除所有照片
- 驗證: 按鈕變回禁用狀態
-
取消操作
- 上傳一些照片
- 點擊「取消」或關閉對話框
- 驗證: 對話框關閉
- 驗證: 訂單狀態未改變
預期結果
- 檔案類型限制正確
- 至少一張照片驗證正確
- 取消操作不影響訂單
Scenario 5: 查看訂單詳情與備註
目標: 驗證設計師可查看訂單特殊需求
操作步驟
-
選擇有特殊需求的訂單
- 如:「請多加一些滿天星」
-
查看卡片資訊
- 驗證: 卡片上顯示特殊需求摘要
-
點擊「查看詳情」
- 驗證: OrderDetailDrawer 開啟
- 驗證: 完整顯示特殊需求/備註
- 驗證: 顯示訂單項目(產品、數量)
-
檢查訂單項目
- 驗證: 顯示各產品名稱
- 驗證: 顯示數量
- 驗證: 顯示單價與小計
預期結果
- 特殊需求清晰可見
- 訂單項目完整顯示
Scenario 6: 空狀態顯示
目標: 驗證沒有待處理訂單時的顯示
操作步驟
-
確認或完成所有訂單
- 處理完所有「等待開始設計」和「設計中」訂單
-
檢查工作台顯示
- 驗證: 各分組顯示空狀態
- 驗證: 空狀態提示友善
- 可能顯示:「目前沒有等待設計的訂單」
預期結果
- 空狀態顯示正確
- 使用者知道目前沒有工作
Scenario 7: 權限控制
目標: 驗證非設計師角色無法存取工作台
操作步驟
-
使用店員帳號登入
- 登出設計師帳號
- 使用
staff@florist.com登入
-
嘗試存取設計師工作台
- 直接訪問
http://localhost:3000/design - 驗證: 導向至首頁或顯示權限不足
- 直接訪問
-
檢查 Application Launcher
- 驗證: 不顯示「Design Workbench」卡片
-
使用配送員帳號測試
- 使用
delivery@florist.com登入 - 重複上述驗證
- 使用
預期結果
- 非 ROLE_FLORIST 角色無法存取
- Application Launcher 正確過濾
Scenario 8: 響應式設計
目標: 驗證手機版工作台功能
操作步驟
-
切換至手機視圖
- 開發者工具 → 裝置模擬
-
驗證佈局
- 驗證: 工具列適應手機版
- 驗證: 分組和卡片正確顯示
-
測試照片上傳
- 點擊「完成設計」
- 驗證: PhotoUploadDialog 在手機版正常顯示
- 驗證: 可選擇照片(支援相機拍攝)
- 驗證: 照片預覽正常
預期結果
- 手機版佈局正確
- 照片上傳功能正常
測試檢查清單
完成所有測試場景後,請勾選以下項目:
基本功能
- Scenario 1: 進入設計師工作台
- Scenario 2: 開始設計
- Scenario 3: 完成設計(含照片上傳)
- Scenario 4: 照片上傳驗證
- Scenario 5: 查看訂單詳情與備註
- Scenario 6: 空狀態顯示
- Scenario 7: 權限控制
- Scenario 8: 響應式設計
照片上傳
- PhotoUploadDialog 正確開啟
- 對話框標題為「上傳作品照片」
- 照片預覽功能正常
- 至少一張照片驗證正確
- 無照片時按鈕禁用
- 可刪除已選照片
- 取消操作不影響訂單
UI/UX
- AppletShell 佈局正確
- 兩個狀態分組清晰區分
- TaskCard 顯示特殊需求
- OrderDetailDrawer 資訊完整
- Toast 通知顯示正確
- 載入狀態顯示正確
權限與安全
- 只有 ROLE_FLORIST 可存取
- 完成設計需上傳照片
API
-
PATCH /api/v1/orders/:id/status正常運作 -
photoUrls正確傳遞 - Response 包含
photoCount
已知問題
記錄測試過程中發現的問題:
測試結論
- 測試通過: [ ] 是 / [ ] 否
- 備註: ___________________________________________________________
- 測試人員簽名: ________________ 日期: ________________
最後更新: 2025-12-19