Files
website-enchun-mgr/docs/prd/epic-1-execution-plan.md
pkupuk f6b806617e docs: add research assets, screenshots and guides
Include supplementary documentation, research notes on Lexical/UX, and setup guides.
2026-02-11 11:51:35 +08:00

861 lines
25 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Epic 1: 執行狀態與調整計劃
**更新日期:** 2025-01-30
**基於:** 4 個專業代理的深度分析報告
---
## 📊 當前執行狀態總覽
### 整體進度
| Story | 完成度 | 狀態 | 阻礙項目 | 優先級 |
|-------|--------|------|----------|--------|
| 1.1 基礎設施設置 | 85% | ⚠️ 接近完成 | Shared package 配置不完整 | P0 |
| 1.2 Collections 定義 | 43% | ❌ 需要大量工作 | Portfolio Collection 缺失 | P0 |
| 1.3 內容遷移腳本 | 0% | ⏸️ 未開始 | 依賴 Story 1.2 | P1 |
| 1.4-1.11 頁面實作 | 0% | ⏸️ 未開始 | 依賴前置 Stories | P1 |
| 1.12-1.13 認證與後台 | 0% | ⏸️ 未開始 | 可並行 | P2 |
---
## 🔍 Story 1.1 詳細分析
### ✅ 已完成的驗收標準
1. **AC1: pnpm workspace configured** - ✅ 100%
- 正確配置所有 packages
- workspace 依賴解析正常
2. **AC2: Payload CMS 3.x initialized** - ✅ 100%
- 版本3.59.1
- MongoDB adapter 配置完整
- R2 storage adapter 配置完整
3. **AC3: Astro 6.0.x SSR project** - ✅ 100%
- 使用 Astro 6.0.0-beta.1(超過原本 4.x 要求)
- Cloudflare native runtime 配置
- SSR 模式正確啟用
4. **AC7: Local dev runs** - ✅ 100%
- `pnpm dev` 正常運行
- 前後端同時啟動
### ⚠️ 部分完成的驗收標準
5. **AC4: TypeScript strict mode** - ⚠️ 66%
- Backend: ✅ strict mode 已啟用
- Frontend: ✅ strict mode 已啟用
- **Shared: ❌ strict mode 未啟用**
6. **AC5: Turborepo configured** - ⚠️ 60%
- 基礎任務配置存在
- **缺少:** typecheck 任務
- **缺少:** inputs/outputs 完整配置
7. **AC6: Shared utilities linked** - ⚠️ 30%
- Tailwind 配置可導出
- **源碼未導出:** `src/index.ts` 不在 exports 中
- **缺少:** build 和 typecheck scripts
### 📋 Story 1.1 剩餘任務清單
**高優先級(必須完成):**
1. 修復 `packages/shared/tsconfig.json` - 添加 `"strict": true`
2. 修復 `packages/shared/package.json` - 添加源碼 exports
3. 添加 `packages/shared/package.json` scripts
4. 添加根目錄 `typecheck` script
5. 創建根目錄 `.env.example`
**預估完成時間:** 40 分鐘
---
## ❌ Story 1.2 詳細執行計劃
### 當前狀態43% 完成 → 目標100%
**重要更新:** 已創建詳細修改計劃文檔
📄 `docs/prd/payload-cms-modification-plan.md`
---
### 📊 Collection 完成度總覽
| Collection | 當前 | 目標 | 缺失 | 優先級 |
|-----------|------|------|------|--------|
| Portfolio | 0% | 100% | 整個 collection | 🔴 P0 |
| Categories | 40% | 100% | 4 欄位 | 🔴 P0 |
| Posts | 60% | 100% | 4 欄位 | 🟡 P1 |
| Users | 70% | 100% | 1 欄位 | 🟡 P1 |
| Access Control | 50% | 100% | 2 函數 | 🟡 P1 |
**總預估時間:** 4 小時(比原計劃減少 50%
---
### 🎯 階段化實作計劃
#### Phase 1: Critical Blockers1.5 小時)
**目標:** 解除 Story 1.9 (Blog) 和 1.10 (Portfolio) 的阻礙
**Task 1.2.1: 創建 Portfolio Collection** (1 小時)
- ✅ 完整欄位定義文檔已規劃
- ✅ Access control 策略已定義
- ✅ Auto-slug hook 已規劃
- 📁 檔案:`collections/Portfolio/index.ts`
- 📋 詳細內容:參考 `payload-cms-modification-plan.md` Task 1.2.1
**Task 1.2.2: 完善 Categories Collection** (30 分鐘)
- ✅ 4 個新欄位已定義nameEn, order, textColor, backgroundColor
- ✅ 顏色欄位格式已確定hex code
- ✅ Admin UI 配置已規劃
- 📁 檔案:`collections/Categories.ts`
- 📋 詳細內容:參考 `payload-cms-modification-plan.md` Task 1.2.2
#### Phase 2: Content Enhancement1 小時)
**目標:** 完善內容管理功能
**Task 1.2.3: 完善 Posts Collection** (30 分鐘)
- ✅ 4 個新欄位已定義excerpt, ogImage, showInFooter, status
- ✅ excerpt 長度限制200 字
- ✅ status 選項draft, review, published
- 📁 檔案:`collections/Posts/index.ts`
- 📋 詳細內容:參考 `payload-cms-modification-plan.md` Task 1.2.3
**Task 1.2.4: 完善 Users Collection** (30 分鐘)
- ✅ role 欄位已定義admin/editor
- ✅ 預設值editor
- ✅ Admin UI 配置已規劃
- 📁 檔案:`collections/Users/index.ts`
- 📋 詳細內容:參考 `payload-cms-modification-plan.md` Task 1.2.4
#### Phase 3: Security & Access1.5 小時)
**目標:** 實現角色權限系統
**Task 1.2.5: 創建 Access Control 函數** (30 分鐘)
- ✅ adminOnly() 函數已定義
- ✅ adminOrEditor() 函數已定義
- ✅ 使用場景已文檔化
- 📁 檔案:`access/adminOnly.ts`, `access/adminOrEditor.ts`
- 📋 詳細內容:參考 `payload-cms-modification-plan.md` Task 1.2.5
**Task 1.2.6: 應用 Access Control** (30 分鐘)
- ✅ 所有 collections 的 access rules 已規劃
- ✅ Globals 的 access control 已規劃
- ✅ 角色權限矩陣已定義
- 📁 檔案7 個 collection/global 檔案
- 📋 詳細內容:參考 `payload-cms-modification-plan.md` Task 1.2.6
**Task 1.2.7: 驗證和測試** (1 小時)
- ✅ 測試腳本已規劃
- ✅ 驗收清單已定義
- ✅ 角色權限測試案例已準備
- 📋 詳細內容:參考 `payload-cms-modification-plan.md` Task 1.2.7
---
### 🔄 Webflow 欄位對應表
#### Portfolio Collection
| Webflow 欄位 | Payload 欄位 | 轉換規則 |
|-------------|-------------|---------|
| Name | title | 直接對應 |
| Slug | slug | 保留原始值 |
| Website Link | url | 直接對應 |
| Preview Image | image | 上傳到 R2 |
| Description | description | 直接對應 |
| Website Type | websiteType | Select: landing-page/booking/corporate/ecommerce/other |
| Tags | tags | String array |
#### Categories Collection
| Webflow 欄位 | Payload 欄位 | 轉換規則 |
|-------------|-------------|---------|
| Name | title | 直接對應 |
| Slug | slug | 保留原始值 |
| - | nameEn | ❌ 需手動新增 |
| - | order | ❌ 預設 0手動調整 |
| Color | textColor/backgroundColor | 拆分為兩個欄位hex code |
#### Posts Collection
| Webflow 欄位 | Payload 欄位 | 轉換規則 |
|-------------|-------------|---------|
| Title | title | 直接對應 |
| Slug | slug | 保留原始值 |
| Body | content | Richtext → Lexical JSON |
| Published Date | publishedAt | ISO 8601 format |
| Post Category | categories | 關聯 Categories collection |
| Featured Image | heroImage | 上傳到 R2 |
| SEO Title | meta.title | SEO plugin |
| SEO Description | meta.description | SEO plugin |
| - | excerpt | ❌ 需手動新增200 字限制) |
| - | ogImage | ❌ 需手動上傳(建議 1200x630px |
| - | showInFooter | ❌ 預設 false |
| - | status | ❌ 根據 published 判斷draft/review/published |
---
### 📋 最終驗收標準
#### Collection 完整性
- [x] Portfolio: 7/7 欄位title, slug, url, image, description, websiteType, tags
- [x] Categories: 6/6 欄位title, nameEn, order, textColor, backgroundColor, slug
- [x] Posts: 13/13 欄位(含新增的 excerpt, ogImage, showInFooter, status
- [x] Users: 4/4 欄位email, name, role, password
- [x] Media: 100% ✅(已完整)
- [x] Pages: 100% ✅(已完整)
#### Access Control 完整性
- [x] 5 個 access 函數:
- anyone ✅(已有)
- authenticated ✅(已有)
- authenticatedOrPublished ✅(已有)
- adminOnly ✅(新增)
- adminOrEditor ✅(新增)
#### 角色權限矩陣
| 操作 | Admin | Editor | 說明 |
|------|-------|--------|------|
| **Users** | | | |
| 刪除用戶 | ✅ | ❌ | adminOnly |
| 創建用戶 | ✅ | ❌ | adminOnly |
| **Posts/Pages** | | | |
| 創建內容 | ✅ | ✅ | adminOrEditor |
| 刪除內容 | ✅ | ✅ | adminOrEditor |
| 發布內容 | ✅ | ✅ | adminOrEditor |
| **Settings** | | | |
| 修改 Header/Footer | ✅ | ❌ | adminOnly |
#### 功能驗收
- [x] 所有 collections 在 admin panel 可見
- [x] 所有欄位可編輯
- [x] 角色權限正確執行
- [x] Media 上傳到 R2
- [x] Rich text editor 正常
- [x] 型別生成成功(`pnpm generate:types`
---
### 📊 更新後的時間影響
**原估計Story 1.2** 不明確,預估 8-12 小時
**更新後Story 1.2** **4 小時**(明確的 7 個 tasks
**Sprint 0 總時間:**
- Story 1.1: 40 分鐘
- Story 1.2: 4 小時
- **總計4.5 小時**(比原計劃 8-12 小時減少 **50-60%**
**理由:**
1. Payload CMS 架構清晰,修改簡單
2. Access control 模式一致,易於應用
3. 詳細計劃減少了不確定性
4. 大部分欄位是簡單的 text/select/upload 類型
---
### 🔗 相關 Stories 依賴更新
#### Story 1.9: Blog System依賴 Story 1.2
**新增依賴:**
- ✅ Categories.textColor/backgroundColor → category theming
- ✅ Posts.excerpt → article list display
- ✅ Posts.status → filter published posts
#### Story 1.10: Portfolio依賴 Story 1.2
**新增依賴:**
- ✅ Portfolio collection 必須存在
- ✅ 所有 7 個欄位必須定義
#### Story 1.12: Authentication依賴 Story 1.2
**新增依賴:**
- ✅ Users.role 欄位必須存在
- ✅ adminOnly/adminOrEditor 函數必須創建
- ✅ 所有 collections 必須應用 access control
**詳細的依賴更新請參考:**
`docs/prd/payload-cms-modification-plan.md` → "相關 Stories 更新" 章节
- ✅ authors (relationship to users)
- ✅ meta (SEO fields via plugin)
**缺失欄位:**
- ❌ excerpt (text) - 文章摘要
- ❌ ogImage (media) - Open Graph 圖片(獨立於 heroImage
- ❌ showInFooter (boolean) - 是否在頁腳顯示
- ❌ status - 自定義狀態(當前只有 _status: draft/published
**影響:**
- Story 1.9 (Blog System) 的摘要在列表頁無法顯示
- SEO 影響:社交分享預覽不完整
- 頁腳動態文章列表無法實作
**實作優先級:** 🟡 **High**
#### ⚠️ Access Control 缺失
**當前狀態:**
-`authenticated()` - 檢查是否登入
-`anyone()` - 允許所有人
-`authenticatedOrPublished()` - 認證用戶看全部,未認證看已發布
**缺失:**
-**角色系統未實現**
- Users collection 沒有 `role` 欄位
- 沒有 `adminOnly()` access function
- 沒有 `adminOrEditor()` access function
**Story 1.12 要求:**
- Admin role: 完整權限
- Editor role: 僅內容管理
**實作優先級:** 🟡 **High** (Story 1.12 前置需求)
---
## 📊 Story 1.2 完整任務清單
### Phase 1: 創建 Portfolio Collection (Critical)
**檔案:** `apps/backend/src/collections/Portfolio/index.ts`
**任務:**
1. 創建 Portfolio collection config
2. 定義所有必需欄位
3. 配置 access control
4. 添加 hooks (如果需要)
5. 註冊到 `payload.config.ts`
**預估時間:** 1 小時
### Phase 2: 完善 Categories Collection (Critical)
**檔案:** `apps/backend/src/collections/Categories.ts`
**任務:**
1. 添加 `nameEn` 欄位 (text)
2. 添加 `order` 欄位 (number, defaultValue: 0)
3. 添加 `textColor` 欄位 (text, 顏色選擇器)
4. 添加 `backgroundColor` 欄位 (text, 顏色選擇器)
5. 更新 admin UI 配置
**預估時間:** 30 分鐘
### Phase 3: 完善 Posts Collection (High)
**檔案:** `apps/backend/src/collections/Posts/index.ts`
**任務:**
1. 添加 `excerpt` 欄位 (text, textarea)
2. 添加 `ogImage` 欄位 (upload to media)
3. 添加 `showInFooter` 欄位 (checkbox, default: false)
4. 添加 `status` 欄位 (select: draft, review, published)
5. 更新 admin UI 配置
**預估時間:** 30 分鐘
### Phase 4: 實現角色系統 (High)
**檔案:** `apps/backend/src/collections/Users/index.ts`
**檔案:** `apps/backend/src/access/adminOnly.ts` (新建)
**檔案:** `apps/backend/src/access/adminOrEditor.ts` (新建)
**任務:**
1. 在 Users collection 添加 `role` 欄位 (select: admin, editor)
2. 創建 `adminOnly()` access function
3. 創建 `adminOrEditor()` access function
4. 更新 Collections 的 access control
- Users delete: adminOnly
- Posts/Pages create/update/delete: adminOrEditor
5. 重新生成型別
**預估時間:** 1 小時
### Phase 5: 驗證和測試
**任務:**
1. 重新生成 Payload 型別
2. 啟動開發環境
3. 驗證所有 collections 出現在 admin sidebar
4. 測試新增欄位功能
5. 測試角色系統(創建 admin/editor 用戶)
6. 測試 R2 上傳(如果尚未測試)
**預估時間:** 1 小時
**總預估時間:** 4 小時
---
## 🔄 更新的依賴關係圖
### Critical Path關鍵路徑
```
Story 1.1 (85%) ← 剩 40 分鐘
Story 1.2 (43%) ← 剩 4 小時
├─ Phase 1: Portfolio Collection (1 hr) ← BLOCKER
├─ Phase 2: Categories (30 min) ← BLOCKER
├─ Phase 3: Posts (30 min)
├─ Phase 4: Role System (1 hr)
└─ Phase 5: Verification (1 hr)
Story 1.3 (0%) ← 依賴 1.2 完成
Story 1.4-1.11 (0%) ← 可並行
├─ Story 1.4: Header/Footer
├─ Story 1.5: Homepage ← 依賴 1.4
├─ Story 1.6: About Page
├─ Story 1.7: Solutions Page
├─ Story 1.8: Contact Page
├─ Story 1.9: Blog ← 依賴 1.2 完成
├─ Story 1.10: Portfolio ← 依賴 1.2 完成 (BLOCKER)
└─ Story 1.11: Teams Page
Story 1.12-1.13 (0%) ← 可與頁面並行
├─ Story 1.12: Authentication ← 依賴 1.2 Role System
└─ Story 1.13: Dashboard
Story 1.14-1.17 (0%) ← 最後階段
├─ Story 1.14: SEO
├─ Story 1.15: Performance
├─ Story 1.16: Deployment
└─ Story 1.17: Testing
```
### Parallel Opportunities並行開發機會
**Wave 1: Infrastructure & Collections (必須先完成)**
- Story 1.1: 剩餘 40 分鐘
- Story 1.2: 4 小時
**Wave 2: Migration & Layout (可並行)**
- Story 1.3: 內容遷移腳本 (12-16 hr)
- Story 1.4: Header/Footer 組件 (8-10 hr)
**Wave 3: Core Pages (可並行)**
- Story 1.5: Homepage (6-8 hr) ← 依賴 1.4
- Story 1.6: About Page (6-8 hr)
- Story 1.7: Solutions Page (4-6 hr)
- Story 1.8: Contact Page (6-8 hr)
**Wave 4: Content Systems (可並行)**
- Story 1.9: Blog System (12-16 hr) ← 依賴 1.2
- Story 1.10: Portfolio (6-8 hr) ← 依賴 1.2
- Story 1.11: Teams Page (4-6 hr)
- Story 1.12: Authentication (8-10 hr) ← 依賴 1.2
- Story 1.13: Dashboard (4-6 hr)
**Wave 5: Production Readiness**
- Story 1.14: SEO (8-10 hr)
- Story 1.15: Performance (8-12 hr)
- Story 1.16: Deployment (6-8 hr)
- Story 1.17: Testing (12-16 hr)
---
## 🎯 優先級調整建議
基於分析報告,建議調整 Story 優先級:
### P0 (Critical - 本週必須完成)
1. **完成 Story 1.1** (40 分鐘)
- 移除阻礙 Story 1.2 的配置問題
2. **完成 Story 1.2 Phase 1-2** (1.5 小時)
- 創建 Portfolio Collection ← **Critical Blocker**
- 完善 Categories Collection ← **Critical Blocker**
**理由:** 這些是 Story 1.9 和 1.10 的直接阻礙
### P1 (High - 下週完成)
3. **完成 Story 1.2 Phase 3-5** (2.5 小時)
- 完善 Posts Collection
- 實現角色系統
- 驗證和測試
4. **開始 Story 1.4** (Header/Footer)
- 為所有頁面提供 Layout 基礎
### P2 (Medium - 視情況而定)
5. **Story 1.5-1.8** (核心頁面)
- 按順序實作:首頁 → 關於 → 方案 → 聯絡
6. **Story 1.9-1.10** (內容系統)
- Blog 和 Portfolio (依賴 1.2 完成)
---
## 📝 Story 1.2 詳細任務定義
### Task 1.2.1: Create Portfolio Collection
**User Story:**
```gherkin
As a Developer,
I want to create a Portfolio collection in Payload CMS,
So that website projects can be stored and managed.
Acceptance Criteria:
- Portfolio collection exists with slug 'portfolio'
- Has 7 required fields: title, slug, url, image, description, websiteType, tags
- Image field uploads to R2 storage
- Access control: authenticated users can read, admins can edit
- Collection appears in admin sidebar
```
**Definition of Done:**
- [ ] Collection config file created
- [ ] All 7 fields defined with correct types
- [ ] Admin UI labels configured (Chinese)
- [ ] Access control functions applied
- [ ] Registered in payload.config.ts
- [ ] Types regenerated successfully
- [ ] Verified in admin panel
**預估時間:** 1 小時
---
### Task 1.2.2: Complete Categories Collection
**User Story:**
```gherkin
As a Developer,
I want to add missing fields to Categories collection,
So that blog categories have complete metadata.
Acceptance Criteria:
- nameEn field added (English name)
- order field added (sorting, default: 0)
- textColor field added (with color picker)
- backgroundColor field added (with color picker)
- All fields appear in admin UI
- Fields are editable and save correctly
```
**Definition of Done:**
- [ ] 4 new fields added to Categories collection
- [ ] Admin UI configured with proper labels
- [ ] Color picker enabled for color fields
- [ ] Types regenerated
- [ ] Tested in admin panel
**預估時間:** 30 分鐘
---
### Task 1.2.3: Complete Posts Collection
**User Story:**
```gherkin
As a Developer,
I want to add missing fields to Posts collection,
So that blog posts have complete metadata for display and SEO.
Acceptance Criteria:
- excerpt field added (textarea, 200 char limit)
- ogImage field added (upload to media, separate from heroImage)
- showInFooter field added (checkbox, default: false)
- status field added (select: draft, review, published)
- All fields appear in post editor
- Fields save and load correctly
```
**Definition of Done:**
- [ ] 4 new fields added to Posts collection
- [ ] Admin UI configured
- [ ] excerpt field has character limit
- [ ] ogImage has image preview
- [ ] Types regenerated
- [ ] Tested creating/editing a post
**預估時間:** 30 分鐘
---
### Task 1.2.4: Implement Role-Based Access Control
**User Story:**
```gherkin
As an Admin,
I want to have different access levels for admins and editors,
So that editors can only manage content, not system settings.
Acceptance Criteria:
- role field added to Users collection (admin, editor)
- adminOnly() access function created
- adminOrEditor() access function created
- Users collection: delete restricted to admins
- Posts/Pages: create/update/delete restricted to adminOrEditor
- Settings access restricted to admins
```
**Definition of Done:**
- [ ] role field added to Users collection
- [ ] Default value: 'editor'
- [ ] adminOnly.ts file created
- [ ] adminOrEditor.ts file created
- [ ] All collections updated with new access rules
- [ ] Tested with both admin and editor users
- [ ] Types regenerated
**預估時間:** 1 小時
---
### Task 1.2.5: Verify and Test Collections
**User Story:**
```gherkin
As a QA Engineer,
I want to verify all collections work correctly,
So that content management is functional.
Acceptance Criteria:
- All collections appear in admin sidebar
- All fields are editable in admin UI
- Role-based access control works correctly
- Media uploads to R2 successfully
- Rich text editor works in Posts
- Can create users with different roles
```
**Definition of Done:**
- [ ] All 6 collections visible in sidebar
- [ ] Created test portfolio item
- [ ] Created test category with all fields
- [ ] Created test post with all fields
- [ ] Created admin and editor users
- [ ] Verified access restrictions
- [ ] Documented any issues
**預估時間:** 1 小時
---
## 📋 Sprint 建議
### Sprint 0: Infrastructure Completion1 天)
**目標:** 完成 Story 1.1 和 Story 1.2 關鍵部分
**Backlog:**
1. ✅ Story 1.1 - Complete Shared package config (40 min)
2. ✅ Story 1.2 - Task 1.2.1: Portfolio Collection (1 hr)
3. ✅ Story 1.2 - Task 1.2.2: Categories Completion (30 min)
**更新說明:** Story 1.2 已擴展為 7 個詳細任務(共 4 小時),但 Sprint 0 專注於 Phase 1Critical Blockers
**Sprint Goal:**
解除 Story 1.9 和 1.10 的阻礙Portfolio 和 Categories
**Definition of Done:**
- [ ] Story 1.1 達到 100%
- [ ] Portfolio Collection 創建完成7/7 欄位)
- [ ] Categories Collection 完整6/6 欄位)
- [ ] 所有型別生成成功
- [ ] 開發環境正常運行
**預估時間:** 2.5 小時(比原計劃減少)
---
### Sprint 1: Collections Completion & Content Enhancement (1-2 天)
**目標:** 完成 Story 1.2 剩餘任務,完善 Posts/Users/Access Control
**Backlog:**
1. ✅ Story 1.2 - Task 1.2.3: Posts Completion (30 min)
2. ✅ Story 1.2 - Task 1.2.4: Users Completion (30 min)
3. ✅ Story 1.2 - Task 1.2.5: Create Access Control Functions (30 min)
4. ✅ Story 1.2 - Task 1.2.6: Apply Access Control (30 min)
5. ✅ Story 1.2 - Task 1.2.7: Verification and Testing (1 hr)
6. ⏸️ Story 1.4 - Header/Footer Components可選如時間允許
**Sprint Goal:**
完成所有 Collections 定義和 Access ControlPayload CMS 完整可用
**Definition of Done:**
- [ ] Story 1.2 達到 100%(所有 7 個 tasks 完成)
- [ ] Portfolio Collection: 7/7 欄位 ✅
- [ ] Categories Collection: 6/6 欄位 ✅
- [ ] Posts Collection: 13/13 欄位 ✅
- [ ] Users Collection: 4/4 欄位(含 role
- [ ] Access Control: 5 個函數完整 ✅
- [ ] 角色權限測試通過
- [ ] 所有型別生成成功
**預估時間:** 3 小時Story 1.2 Phase 2-3+ 可選 Story 1.4
---
### Sprint 2: Layout & Core Pages (3-4 天)
**目標:** Header/Footer + 核心頁面實作
**Backlog:**
1. Story 1.4 - Header/Footer Components (8-10 hr)
2. Story 1.5 - Homepage (6-8 hr)
3. Story 1.6 - About Page (6-8 hr)
4. Story 1.7 - Solutions Page (4-6 hr)
**Sprint Goal:**
主要頁面上線,導航和佈局完成
**Definition of Done:**
- [ ] Header/Footer 在所有頁面顯示
- [ ] 首頁、關於、方案頁面完成
- [ ] 視覺保真度 95%+
- [ ] Lighthouse Performance 90+
---
### Sprint 3: Content Systems (3-4 天)
**目標:** Blog, Portfolio, Contact 頁面
**Backlog:**
1. Story 1.8 - Contact Page (6-8 hr)
2. Story 1.9 - Blog System (12-16 hr)
3. Story 1.10 - Portfolio (6-8 hr)
4. Story 1.11 - Teams Page (4-6 hr)
**Sprint Goal:**
所有頁面內容系統完成
**Definition of Done:**
- [ ] Blog 文章列表和詳情頁完成
- [ ] Portfolio 列表和詳情頁完成
- [ ] Teams 頁面完成
- [ ] Contact 表單功能正常
---
### Sprint 4: Auth & Admin (2-3 天)
**目標:** 認證系統和管理後台
**Backlog:**
1. Story 1.12 - Authentication System (8-10 hr)
2. Story 1.13 - Admin Dashboard (4-6 hr)
**Sprint Goal:**
編輯者可以登入並管理內容
**Definition of Done:**
- [ ] 登入/登出功能正常
- [ ] 角色權限正確執行
- [ ] Dashboard 顯示統計資訊
- [ ] 可以創建/編輯內容
---
### Sprint 5: Production Readiness (3-4 天)
**目標:** SEO、性能、部署、測試
**Backlog:**
1. Story 1.14 - SEO Implementation (8-10 hr)
2. Story 1.15 - Performance Optimization (8-12 hr)
3. Story 1.16 - Deployment (6-8 hr)
4. Story 1.17 - Testing (12-16 hr)
**Sprint Goal:**
網站正式上線
**Definition of Done:**
- [ ] SEO 設定完整
- [ ] Lighthouse 95+
- [ ] 部署到 Cloudflare
- [ ] 所有測試通過
- [ ] 生產環境驗證
---
## 📊 調整後的時間線
**原估計:** 120-160 小時 (7 週)
**調整後考慮:**
- Payload CMS 瘦身已完成(減少維護成本)
- Story 1.2 實際複雜度比預期高
- Story 1.1 已接近完成
**更新後時間線:**
| 週次 | Sprint | 主要交付物 | 預估工時 |
|------|--------|----------|----------|
| Week 1 | Sprint 0 | Story 1.1 完成 + Story 1.2 關鍵部分 | 8-12 hr |
| Week 2-3 | Sprint 1 | Story 1.2 完成 + Story 1.3 遷移 | 24-30 hr |
| Week 4-5 | Sprint 2 | Story 1.4-1.7 核心頁面 | 30-40 hr |
| Week 6-7 | Sprint 3 | Story 1.8-1.11 內容系統 | 30-40 hr |
| Week 8 | Sprint 4 | Story 1.12-1.13 認證後台 | 16-20 hr |
| Week 9-10 | Sprint 5 | Story 1.14-1.17 上線準備 | 40-50 hr |
**總預估:** 148-192 小時 (約 10 週)
---
## 🎯 下一步行動建議
### 立即執行(今天)
1. **完成 Story 1.1** (40 分鐘)
- 快速修復 Shared package 配置
- 為 Story 1.2 清除障礙
2. **創建 Portfolio Collection** (1 小時)
- 最高優先級
- 解除 Story 1.10 BLOCKER
### 本週執行
3. **完善 Categories Collection** (30 分鐘)
4. **完善 Posts Collection** (30 分鐘)
5. **實現角色系統** (1 小時)
6. **驗證測試** (1 小時)
**目標:** Story 1.1 和 1.2 達到 100%
### 下週執行
7. **開始 Story 1.3** (內容遷移腳本)
8. **或開始 Story 1.4** (Header/Footer)
---
## 📌 關鍵決策點
### 決策 1: Story 1.3 是否需要立即執行?
**選項 A** 是 - 先遷移內容,再實作頁面
- 優點:確保內容結構正確
- 缺點:看不到實際頁面效果
**選項 B** 否 - 先實作頁面,用測試數據
- 優點:快速看到視覺成果
- 缺點:後續需要更新所有內容
**建議:** 選項 B - 先實作 Story 1.5 (首頁),建立基礎模板
### 決策 2: Story 1.12 (認證) 優先級?
**選項 A** 高優先級 - 現在就實作
- 優點:內容編輯者可以提前開始工作
- 缺點:增加當前工作量
**選項 B** 中優先級 - 在頁面完成後實作
- 優點:集中精力完成用戶可見功能
- 缺點:內容管理延後
**建議:** 選項 B - 在 Sprint 4 執行(頁面完成後)
---
**文檔生成時間:** 2025-01-30
**基於:** 4 個專業代理分析報告 + Payload CMS 瘩身分析