US-104: 商品分類管理
User Story
作為 花店管理者 我想要 能夠自訂商品分類(類型) 以便 根據店鋪實際經營品項組織商品目錄
驗收標準 (Acceptance Criteria)
Scenario 1: 查看預設商品分類
- Given 我是已登入的管理者
- And 我在「系統設定 > 商品分類」頁面
- When 頁面載入完成
- Then 我應看到系統預設的商品分類列表:
- 花束 (bouquet)
- 盆花 (pot)
- 高架花籃 (stand)
- 花籃 (basket)
- 盒花 (box)
- 禮品 (gift)
- 客製化專案 (custom)
- And 每個分類應顯示:名稱、代碼、商品數量、狀態
Scenario 2: 新增自訂商品分類
- Given 我是已登入的管理者
- And 我在「商品分類」頁面
- When 我點擊「新增分類」按鈕
- And 我填寫分類名稱「婚禮專區」
- And 我填寫分類代碼「WED」
- And 我填寫分類描述「婚禮相關花卉商品」
- And 我點擊「儲存」按鈕
- Then 系統應創建新的商品分類
- And 新分類應出現在分類列表中
- And 新分類可在創建商品時選擇
Scenario 3: 編輯商品分類名稱
- Given 我是已登入的管理者
- And 系統中有分類「婚禮專區」
- When 我點擊該分類的「編輯」按鈕
- And 我修改分類名稱為「婚禮花藝」
- And 我點擊「儲存」按鈕
- Then 分類名稱應更新為「婚禮花藝」
- And 已使用此分類的商品不受影響
Scenario 4: 停用商品分類
- Given 我是已登入的管理者
- And 分類「婚禮花藝」下有 5 個商品
- When 我點擊該分類的「停用」按鈕
- And 系統顯示警告「此分類下有 5 個商品,停用後這些商品將無法在訂單中選擇」
- And 我確認停用
- Then 分類狀態應變為「已停用」
- And 此分類不應出現在創建商品時的選項中
- And 此分類下的商品狀態應自動變為「已下架」
Scenario 5: 重新啟用商品分類
- Given 我是已登入的管理者
- And 分類「婚禮花藝」目前狀態為「已停用」
- When 我點擊該分類的「啟用」按鈕
- Then 分類狀態應變為「已啟用」
- And 此分類應重新出現在創建商品時的選項中
- And 該分類下的商品需手動重新上架
Scenario 6: 調整分類排序
- Given 我是已登入的管理者
- And 系統中有 8 個商品分類
- When 我拖曳「婚禮花藝」分類到列表第 2 位
- Then 分類順序應更新
- And 新順序應反映在創建商品時的下拉選單中
Scenario 7: 刪除未使用的商品分類
- Given 我是已登入的店主
- And 分類「測試分類」下沒有任何商品
- When 我點擊該分類的「刪除」按鈕
- And 系統要求我確認
- And 我點擊「確認刪除」
- Then 該分類應被永久刪除
Scenario 8: 無法刪除有商品的分類
- Given 我是已登入的店主
- And 分類「花束」下有 20 個商品
- When 我嘗試刪除該分類
- Then 系統應顯示錯誤訊息「此分類下有 20 個商品,無法刪除。請先移除或移動這些商品。」
- And 分類不應被刪除
Scenario 9: 無法刪除系統預設分類
- Given 我是已登入的店主
- And 分類「花束」是系統預設分類
- When 我嘗試刪除該分類
- Then 系統應顯示錯誤訊息「系統預設分類無法刪除」
- And 分類不應被刪除
Scenario 10: 分類代碼重複驗證
- Given 我是已登入的管理者
- And 系統中已有代碼為「BQT」的分類
- When 我嘗試新增分類,代碼填寫「BQT」
- Then 系統應顯示錯誤訊息「分類代碼已存在」
- And 分類不應被創建
業務規則 (Business Rules)
-
系統預設分類
- 系統提供 7 個預設分類(花束、盆花、高架、花籃、盒花、禮品、客製化)
- 預設分類無法刪除,但可以停用或修改名稱
- 預設分類代碼無法修改
-
分類代碼規則
- 格式: 2-5 個大寫英文字母
- 必須唯一(租戶層級)
- 創建後不可修改
- 用於 SKU 編號生成
-
分類名稱規則
- 長度: 1-20 個字元
- 必須唯一(租戶層級)
- 可隨時修改
-
停用/啟用規則
- 停用分類後,該分類下的所有商品自動下架
- 啟用分類後,商品需手動重新上架
- 停用/啟用操作需記錄審計日誌
-
刪除規則
- 僅
ROLE_OWNER可刪除分類 - 有商品的分類無法刪除
- 系統預設分類無法刪除
- 刪除操作不可復原
- 僅
-
排序規則
- 分類可自訂排序
- 排序影響商品表單中的下拉選單順序
- 預設分類排在自訂分類之前
-
多租戶隔離
- 每個租戶有獨立的分類配置
- 自訂分類僅對當前租戶可見
- 預設分類所有租戶共享定義,但可各自停用
UI/UX 需求 (UI/UX Requirements)
頁面佈局
商品分類管理
[新增分類]
┌─────────────────────────────────────────────────────────┐
│ ≡ 花束 (BQT) 商品: 25 ✅ 已啟用 [編輯] │
├─────────────────────────────────────────────────────────┤
│ ≡ 盆花 (POT) 商品: 18 ✅ 已啟用 [編輯] │
├─────────────────────────────────────────────────────────┤
│ ≡ 高架花籃 (STD) 商品: 8 ✅ 已啟用 [編輯] │
├─────────────────────────────────────────────────────────┤
│ ≡ 婚禮花藝 (WED) 商品: 5 ⚫ 已停用 [編輯] │
└─────────────────────────────────────────────────────────┘
新增/編輯分類 Modal
┌─────────────────────────────────────┐
│ 新增商品分類 [×] │
├─────────────────────────────────────┤
│ 分類名稱 * │
│ ┌─────────────────────────────┐ │
│ │ 婚禮花藝 │ │
│ └─────────────────────────────┘ │
│ │
│ 分類代碼 * (2-5 個大寫字母) │
│ ┌─────────────────────────────┐ │
│ │ WED │ │
│ └─────────────────────────────┘ │
│ │
│ 分類描述 │
│ ┌─────────────────────────────┐ │
│ │ 婚禮相關花卉商品 │ │
│ └─────────────────────────────┘ │
│ │
│ [取消] [儲存] │
└─────────────────────────────────────┘
互動行為
- 拖曳排序: 左側拖曳手把 (≡) 可拖曳調整順序
- 停用/啟用: 點擊狀態標籤切換
- 刪除: 編輯 Modal 中的「刪除分類」連結(僅無商品時可用)
技術規格 (Technical Specifications)
API 端點
1. 獲取分類列表
- 端點:
GET /api/v1/product-categories - 權限:
ROLE_STAFF或更高
2. 創建分類
- 端點:
POST /api/v1/product-categories - 權限:
ROLE_MANAGER或更高
3. 更新分類
- 端點:
PUT /api/v1/product-categories/{id} - 權限:
ROLE_MANAGER或更高
4. 更新分類排序
- 端點:
PUT /api/v1/product-categories/order - 權限:
ROLE_MANAGER或更高
5. 刪除分類
- 端點:
DELETE /api/v1/product-categories/{id} - 權限:
ROLE_OWNER
資料模型
interface ProductCategory {
id: string;
tenantId: string;
code: string; // 分類代碼 (BQT, POT, WED...)
name: string; // 分類名稱
description?: string; // 分類描述
isSystem: boolean; // 是否為系統預設
status: 'active' | 'inactive';
sortOrder: number; // 排序順序
productCount: number; // 該分類下的商品數量
createdAt: Date;
updatedAt: Date;
}
Story Points
估算: 3 points
理由:
- 簡單的 CRUD 操作
- 拖曳排序增加少許複雜度
- 需要處理與商品的關聯邏輯
相關文檔
最後更新: 2025-12-03 撰寫者: AI Assistant