US-106: 作品集管理
User Story
作為 花店管理者 我想要 能夠管理過去完成的作品照片 以便 作為客製化專案的提案素材,並展示店鋪的設計能力
驗收標準 (Acceptance Criteria)
Scenario 1: 從訂單創建作品
- Given 我是已登入的管理者
- And 訂單「ABC-001」狀態為「已簽收」
- And 該訂單已上傳作品完成照片
- When 我點擊「加入作品集」按鈕
- And 我填寫作品標題「夢幻婚禮會場佈置」
- And 我選擇標籤「婚禮」、「會場佈置」
- And 我勾選「公開展示」
- And 我點擊「儲存」按鈕
- Then 系統應創建作品集項目
- And 作品應關聯至原訂單
- And 照片應複製到作品集儲存區
Scenario 2: 手動創建作品(無關聯訂單)
- Given 我是已登入的管理者
- And 我在「作品集管理」頁面
- When 我點擊「新增作品」按鈕
- And 我填寫作品標題「經典玫瑰花束」
- And 我上傳 3 張作品照片
- And 我填寫作品描述「12朵紅玫瑰搭配滿天星」
- And 我選擇標籤「花束」、「經典款」
- And 我點擊「儲存」按鈕
- Then 系統應創建作品集項目
- And 作品應標記為「無關聯訂單」
Scenario 3: 查看作品集列表
- Given 我是已登入的員工
- And 我在「作品集管理」頁面
- When 頁面載入完成
- Then 我應看到作品集列表(網格視圖)
- And 每個作品應顯示:封面照片、標題、標籤、公開狀態
- And 可按標籤過濾作品
Scenario 4: 編輯作品資訊
- Given 我是已登入的管理者
- And 我在作品「夢幻婚禮會場佈置」的詳情頁
- When 我點擊「編輯」按鈕
- And 我修改標題為「浪漫婚禮會場設計」
- And 我添加新標籤「大型專案」
- And 我點擊「儲存」按鈕
- Then 作品資訊應更新
Scenario 5: 管理作品照片
- Given 我是已登入的管理者
- And 作品「浪漫婚禮會場設計」有 5 張照片
- When 我上傳 2 張新照片
- And 我刪除 1 張舊照片
- And 我拖曳調整照片順序
- And 我設定第 2 張照片為封面
- Then 照片變更應儲存成功
- And 封面照片應更新為指定的照片
Scenario 6: 設定作品公開/私密
- Given 我是已登入的管理者
- And 作品「浪漫婚禮會場設計」目前為「私密」
- When 我切換為「公開」
- Then 作品狀態應變為「公開」
- And 公開作品應自動添加水印
Scenario 7: 作品標籤管理
- Given 我是已登入的管理者
- And 我在「作品集設定 > 標籤管理」頁面
- When 我新增標籤「母親節」
- And 我設定標籤顏色為粉紅色
- And 我點擊「儲存」
- Then 新標籤應可在作品中使用
Scenario 8: 依標籤過濾作品
- Given 我是已登入的員工
- And 我在作品集列表頁面
- When 我選擇標籤過濾「婚禮」
- Then 列表應只顯示帶有「婚禮」標籤的作品
Scenario 9: 搜尋作品
- Given 我是已登入的員工
- And 我在作品集列表頁面
- When 我在搜尋框輸入「會場」
- Then 列表應顯示標題或描述包含「會場」的作品
Scenario 10: 刪除作品
- Given 我是已登入的管理者
- And 我在作品「測試作品」的詳情頁
- When 我點擊「刪除」按鈕
- And 系統要求我確認
- And 我點擊「確認刪除」
- Then 作品應被刪除
- And 作品照片也應從儲存空間刪除
- And 若有關聯訂單,訂單不受影響
Scenario 11: 在提案時使用作品集
- Given 我是已登入的員工
- And 我正在為客戶創建客製化專案訂單
- When 我點擊「選擇參考作品」按鈕
- Then 應開啟作品集選擇器
- And 我可以搜尋和過濾作品
- And 選擇的作品應附加到訂單備註中
Scenario 12: 作品照片數量限制(錯誤場景)
- Given 我是已登入的管理者
- And 作品已有 10 張照片(已達上限)
- When 我嘗試上傳新照片
- Then 系統應顯示錯誤訊息「每個作品最多 10 張照片」
業務規則 (Business Rules)
-
作品來源
- 可從已完成訂單創建(關聯訂單)
- 可手動創建(無關聯訂單)
- 關聯訂單的作品可追溯原始訂單
-
照片規範
- 每個作品最多 10 張照片
- 照片格式/大小規範同商品照片(US-103)
- 必須設定一張封面照片
-
公開/私密設定
- 私密: 僅內部員工可見,用於內部提案
- 公開: 可用於官網展示、行銷素材
- 公開照片自動添加店家 Logo 水印
-
水印設定
- 位置: 右下角(可配置)
- 透明度: 30%(可配置)
- 原圖保留,水印版本另存
-
標籤系統
- 支援自訂標籤
- 標籤可設定顏色
- 每個作品可有多個標籤
- 預設標籤: 花束、盆花、婚禮、開幕、喪禮、會場佈置
-
權限規則
ROLE_STAFF: 可查看作品、使用於提案ROLE_MANAGER: 可創建、編輯、刪除作品ROLE_OWNER: 可管理標籤設定
-
多租戶隔離
- 作品集資料與
tenantId綁定 - 不同租戶的作品完全隔離
- 作品集資料與
UI/UX 需求 (UI/UX Requirements)
作品集列表(網格視圖)
作品集管理 [新增作品]
標籤: [全部 ▼] 搜尋: [________________]
┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐
│ [封面] │ │ [封面] │ │ [封面] │ │ [封面] │
│ │ │ │ │ │ │ │
│ 婚禮會場│ │ 玫瑰花束│ │ 開幕花籃│ │ 母親節 │
│ 🏷婚禮 │ │ 🏷花束 │ │ 🏷開幕 │ │ 🏷節日 │
│ 🌐 公開 │ │ 🔒 私密 │ │ 🌐 公開 │ │ 🌐 公開 │
└─────────┘ └─────────┘ └─────────┘ └─────────┘
新增/編輯作品表單
┌─────────────────────────────────────────────────┐
│ 新增作品 [×] │
├─────────────────────────────────────────────────┤
│ │
│ 照片(最多 10 張) │
│ ┌────┐ ┌────┐ ┌────┐ ┌────┐ │
│ │ + │ │ │ │ │ │ │ │
│ │新增│ │ │ │ │ │ │ │
│ └────┘ └────┘ └────┘ └────┘ │
│ │
│ 作品標題 * │
│ ┌─────────────────────────────────────────┐ │
│ │ │ │
│ └─────────────────────────────────────────┘ │
│ │
│ 作品描述 │
│ ┌─────────────────────────────────────────┐ │
│ │ │ │
│ │ │ │
│ └─────────────────────────────────────────┘ │
│ │
│ 標籤 │
│ [婚禮 ×] [會場佈置 ×] [+ 添加標籤] │
│ │
│ 關聯訂單: ABC-001(2025-12-01) │
│ │
│ ☑ 公開展示 │
│ │
│ [取消] [儲存] │
└─────────────────────────────────────────────────┘
作品選擇器(用於提案)
┌─────────────────────────────────────────────────┐
│ 選擇參考作品 [×] │
├─────────────────────────────────────────────────┤
│ 標籤: [婚禮 ▼] 搜尋: [____________] │
│ │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │ ☑ │ │ ☐ │ │ ☐ │ │
│ │ [封面] │ │ [封面] │ │ [封面] │ │
│ │ 婚禮A │ │ 婚禮B │ │ 婚禮C │ │
│ └─────────┘ └─────────┘ └─────────┘ │
│ │
│ 已選擇: 1 個作品 │
│ │
│ [取消] [確認選擇] │
└─────────────────────────────────────────────────┘
技術規格 (Technical Specifications)
API 端點
1. 作品 CRUD
GET /api/v1/portfolios- 列表(支援搜尋、標籤過濾)GET /api/v1/portfolios/{id}- 詳情POST /api/v1/portfolios- 創建PUT /api/v1/portfolios/{id}- 更新DELETE /api/v1/portfolios/{id}- 刪除
2. 從訂單創建作品
POST /api/v1/orders/{orderId}/to-portfolio
3. 標籤管理
GET /api/v1/portfolio-tags- 標籤列表POST /api/v1/portfolio-tags- 創建標籤PUT /api/v1/portfolio-tags/{id}- 更新標籤DELETE /api/v1/portfolio-tags/{id}- 刪除標籤
資料模型
interface Portfolio {
id: string;
tenantId: string;
title: string;
description?: string;
orderId?: string; // 關聯訂單(選填)
coverImageUrl: string; // 封面照片
imageUrls: string[]; // 所有照片
tags: PortfolioTag[]; // 標籤列表
isPublic: boolean; // 是否公開
createdAt: Date;
updatedAt: Date;
createdBy: string;
}
interface PortfolioTag {
id: string;
tenantId: string;
name: string;
color: string; // HEX 顏色碼
sortOrder: number;
}
Story Points
估算: 5 points
理由:
- 需要處理照片上傳與管理
- 標籤系統增加複雜度
- 水印功能需要後端圖片處理
- 與訂單的關聯邏輯
相關文檔
- Epic 1: 產品與作品集管理
- US-103: 商品照片管理
- Epic 5: 數位資產管理 (待創建)
最後更新: 2025-12-03 撰寫者: AI Assistant