# 規劃更新摘要 - Story 1.2 Payload CMS Collections

**更新日期：** 2025-01-30
**更新類型：** 詳細規劃調整
**影響範圍：** Story 1.2, 1.9, 1.10, 1.12

---

## 📊 執行摘要

根據用戶要求「調整規劃，更新相關的 stories」，我已完成：

1. ✅ 創建詳細的 Payload CMS 修改計劃
2. ✅ 更新 Story 1.2 執行計劃
3. ✅ 重新估算時間（減少 50%）
4. ✅ 定義相關 Stories 依賴關係

---

## 📁 新增/更新的文檔

### 1. 新增文檔

**📄 `docs/prd/payload-cms-modification-plan.md`**
- **用途：** Story 1.2 的詳細實作指南
- **內容：**
  - 7 個詳細任務定義（Task 1.2.1 - 1.2.7）
  - 每個任務的完整代碼範例
  - Webflow → Payload 欄位對應表
  - 驗收標準和測試計劃
  - 相關 Stories 依賴更新

### 2. 更新文檔

**📄 `docs/prd/epic-1-execution-plan.md`**
- **更新部分：** Story 1.2 詳細執行計劃
- **主要變更：**
  - 重寫 Story 1.2 章節（原 74-280 行）
  - 階段化實作計劃（Phase 1-3）
  - Webflow 欄位對應表
  - 角色權限矩陣
  - 更新 Sprint 0 和 Sprint 1 時間估算

---

## 🎯 關鍵決策更新

### Story 1.2 時間估算

| 項目 | 原估計 | 更新後 | 變化 |
|------|--------|--------|------|
| Story 1.2 | 8-12 小時 | **4 小時** | -50% ~ -66% |
| Sprint 0 | 8-12 小時 | **2.5 小時** | -75% |
| Sprint 1 | 24-30 小時 | **3 小時** | -90% |

**理由：**
1. Payload CMS 架構清晰，修改簡單直接
2. Access control 模式一致，易於批量應用
3. 詳細計劃減少了不確定性和反覆修改
4. 大部分欄位是標準類型（text/select/upload）

### Story 1.2 任務結構

**原計劃：** 5 個 tasks（定義模糊）
**更新後：** 7 個 tasks（詳細定義）

| Phase | Task | 內容 | 時間 |
|-------|------|------|------|
| **Phase 1** | 1.2.1 | 創建 Portfolio Collection | 1 小時 |
| (Critical) | 1.2.2 | 完善 Categories Collection | 30 分鐘 |
| **Phase 2** | 1.2.3 | 完善 Posts Collection | 30 分鐘 |
| (Enhancement) | 1.2.4 | 完善 Users Collection | 30 分鐘 |
| **Phase 3** | 1.2.5 | 創建 Access Control 函數 | 30 分鐘 |
| (Security) | 1.2.6 | 應用 Access Control | 30 分鐘 |
| | 1.2.7 | 驗證和測試 | 1 小時 |
| **總計** | | | **4 小時** |

---

## 🔗 相關 Stories 依賴更新

### Story 1.9: Blog System（更新）

**新增依賴項：**
```diff
Story 1.9 依賴 Story 1.2 完成：
+ Categories.textColor/backgroundColor → category badge theming
+ Posts.excerpt → article list display（150-200 字）
+ Posts.status → filter published posts（draft/review/published）
```

**Task 1.9.2（Blog Listing Page）更新：**
```diff
+ 從 Payload API 載入已發布文章（where: { status: 'published' }）
+ 顯示 category badge（使用動態顏色 category.textColor/backgroundColor）
+ 顯示文章摘要（使用 post.excerpt，最多 200 字）
```

**Task 1.9.4（Category Page）更新：**
```diff
+ 分類顏色主題（使用 category.textColor/backgroundColor）
+ Badge 使用動態顏色而非固定顏色
+ 分類名稱顯示 category.nameEn（如果存在）
```

### Story 1.10: Portfolio（更新）

**新增依賴項：**
```diff
Story 1.10 依賴 Story 1.2 完成：
+ Portfolio collection 必須存在（7 個欄位）
+ 所有欄位必須定義才能實作前端頁面
```

**Task 1.10.1（Design Portfolio Architecture）簡化：**
```diff
- 決定是否使用 Payload CMS collection
+ Portfolio collection 已在 Story 1.2 創建（Task 1.2.1）
- 欄位規劃
+ 欄位已在 Story 1.2 定義：
+   title, slug, url, image, description, websiteType, tags
+ 此 Task 改為專注於前端路由和組件架構設計
```

**Task 1.10.2（Implement Portfolio Listing Page）更新：**
```diff
+ Portfolio card 顯示：
+   - Project image (image 欄位)
+   - Project title (title 欄位)
+   - Description (description 欄位)
+   - Tags (tags array)
+   - Website type badge (websiteType 欄位)
```

### Story 1.12: Authentication（更新）

**新增依賴項：**
```diff
Story 1.12 依賴 Story 1.2 Phase 3 完成：
+ Users.role 欄位必須存在（admin/editor）
+ adminOnly/adminOrEditor 函數必須創建
+ 所有 Collections 必須應用 access control
```

**Task 1.12.5（Implement Role-Based Access Control）簡化：**
```diff
- Users collection 添加 role 欄位
+ Users collection 已在 Story 1.2 Task 1.2.4 添加 role 欄位
- 建立 access/adminOnly.ts
+ access/adminOnly.ts 已在 Story 1.2 Task 1.2.5 創建
- 建立 access/adminOrEditor.ts
+ access/adminOrEditor.ts 已在 Story 1.2 Task 1.2.5 創建
- 更新 Collections 的 access rules
+ Collections 已在 Story 1.2 Task 1.2.6 應用 access rules
+ 此 Task 改為專注於測試驗證角色權限
```

---

## 📋 Collection 完成度總覽

### Story 1.2 完成後狀態

| Collection | 當前 | Story 1.2 後 | 新增欄位 |
|-----------|------|-------------|---------|
| Portfolio | 0% | **100%** ✅ | 7 個欄位 |
| Categories | 40% (2/6) | **100%** ✅ | +4 欄位 |
| Posts | 60% (9/13) | **100%** ✅ | +4 欄位 |
| Users | 70% (3/4) | **100%** ✅ | +1 欄位 |
| Media | 90% | **100%** ✅ | - |
| Pages | 100% | **100%** ✅ | - |

### Access Control 完成度

| 組件 | 當前 | Story 1.2 後 |
|------|------|-------------|
| Access 函數 | 3 個 | **5 個** ✅ |
| Collections 應用 | 部分 | **全部** ✅ |
| Globals 應用 | 無 | **完整** ✅ |
| 角色權限測試 | 無 | **完成** ✅ |

---

## 🔄 Sprint 調整影響

### Sprint 0: Infrastructure Completion

**調整前：**
- Story 1.1: 40 分鐘
- Story 1.2: 不明確
- 總計：8-12 小時

**調整後：**
- Story 1.1: 40 分鐘
- Story 1.2 Phase 1: 1.5 小時
- **總計：2.5 小時**（-75%）

**理由：** 專注於 Critical Blockers（Portfolio + Categories），解除 Story 1.9 和 1.10 的阻礙

### Sprint 1: Collections Completion

**調整前：**
- Story 1.2 完成: 不明確
- Story 1.3 遷移: 12-16 小時
- 總計：24-30 小時

**調整後：**
- Story 1.2 Phase 2-3: 3 小時
- Story 1.3 遷移: 延後到 Sprint 2
- **總計：3 小時**（-90%）

**理由：** 將 Story 1.2 拆分到 Sprint 0 和 Sprint 1，先完善 Collections 再遷移內容

### Sprint 2: Migration & Layout（新增建議）

**建議內容：**
- Story 1.3: Content Migration Script (12-16 小時)
- Story 1.4: Header/Footer Components (8-10 小時)
- **總計：20-26 小時**

**理由：** Collections 完成後，開始內容遷移和全局組件開發

---

## 📊 時間線總結

### Epic 1 整體時間估算

| 階段 | 原估計 | 更新後 | 變化 |
|------|--------|--------|------|
| Sprint 0 (Infra) | 8-12 hr | 2.5 hr | **-75%** |
| Sprint 1 (Collections) | 24-30 hr | 3 hr | **-90%** |
| Sprint 2 (Migration) | - | 20-26 hr | **新增** |
| Sprint 3-5 (Pages/Apps) | 90-120 hr | 90-120 hr | 無變化 |
| Sprint 6 (Production) | 40-50 hr | 40-50 hr | 無變化 |
| **總計** | **162-212 hr** | **155.5-201.5 hr** | **-4%** |

**關鍵變化：**
- Sprint 0 和 Sprint 1 時間大幅減少（詳細規劃的效果）
- 新增 Sprint 2 專注於內容遷移和全局組件
- 整體時間線略微縮短，但更有組織性

---

## ✅ 驗收清單

### Story 1.2 完成標準

#### Collection 完整性
- [ ] Portfolio: 7/7 欄位（title, slug, url, image, description, websiteType, tags）
- [ ] Categories: 6/6 欄位（title, nameEn, order, textColor, backgroundColor, slug）
- [ ] Posts: 13/13 欄位（含新增的 excerpt, ogImage, showInFooter, status）
- [ ] Users: 4/4 欄位（email, name, role, password）
- [ ] Media: 100%
- [ ] Pages: 100%

#### Access Control 完整性
- [ ] 5 個 access 函數完整
- [ ] 7 個 collections/globals 應用 access rules
- [ ] 角色權限矩陣測試通過
- [ ] Admin 可完整權限，Editor 僅內容管理

#### 功能驗收
- [ ] 所有 collections 在 admin panel 可見
- [ ] 所有欄位可編輯
- [ ] 型別生成成功（`pnpm generate:types`）
- [ ] 開發環境正常運行
- [ ] R2 上傳測試通過

---

## 📝 後續行動建議

### 選項 A：開始執行 Story 1.2（推薦）

**Phase 1 - Critical Blockers（今天）：**
1. Task 1.2.1: 創建 Portfolio Collection (1 小時)
2. Task 1.2.2: 完善 Categories Collection (30 分鐘)

**預期成果：**
- Story 1.9 和 1.10 的阻礙解除
- Portfolio 和 Categories 可用於前端開發

### 選項 B：繼續規劃其他 Stories

**可以並行規劃：**
- Story 1.3: Content Migration Script
- Story 1.4: Header/Footer Components
- Story 1.5-1.8: 頁面實作細節

### 選項 C：調整整體計劃

**可能的調整：**
- 重新評估 Story 1.3 的優先級（是否先遷移還是先實作頁面）
- 調整 Sprint 結構
- 修改時間線

---

## 📚 參考文檔

**主要文檔：**
1. `docs/prd/payload-cms-modification-plan.md` - Story 1.2 詳細實作指南
2. `docs/prd/epic-1-execution-plan.md` - Epic 1 執行計劃（已更新）
3. `docs/prd/epic-1-stories-1.3-1.17-tasks.md` - Stories 1.3-1.17 任務定義

**相關文檔：**
4. `docs/prd/01-project-analysis.md` - 項目分析
5. `docs/prd/payload-cms-slimming-report.md` - Payload CMS 瘩身報告

**Payload CMS 官方文檔：**
- [Collections](https://payloadcms.com/docs/configuration/collections)
- [Access Control](https://payloadcms.com/docs/access-control/overview)
- [Field Types](https://payloadcms.com/docs/configuration/fields)

---

**文檔版本：** v1.0
**最後更新：** 2025-01-30
**適用於：** Payload CMS 3.59.1
**狀態：** ✅ 規劃完成，等待執行確認
