開發流程指南
本文檔定義從 Prototype 到生產整合的完整開發流程,涵蓋 SCRUM 方法論與各模組的協作方式。
實際案例參考: specs/florist/ 包含花店管理系統的產品規格,展示本流程的具體應用。
流程概述
┌─────────────────────────────────────────────────────────────────────────────┐
│ 開發流程總覽 │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ Step 1: Prototype 開發 │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ app-web-mockup + Mock API (MSW) │ │
│ │ │ │
│ │ Product Roadmap → Epic → User Stories → SBE → Sprint → Tasks │ │
│ │ │ │
│ │ 產出:需求確認的 Prototype、SBE 規格文件 │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ ↓ 同步程式碼 │
│ Step 2: 前端生產環境準備 │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ app-web + Mock API │ │
│ │ │ │
│ │ 確保同步的程式碼可正常運作 │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ ↓ 平行開發 │
│ Step 3: 後端開發 + 漸進式整合 │
│ ┌──────────────────────────┐ ┌──────────────────────────┐ │
│ │ app-web │←──→│ app-server │ │
│ │ 逐步切換真實 API │ │ 實作 RESTful API │ │
│ └──────────────────────────┘ └──────────────────────────┘ │
│ ↓ │
│ Step 4: 完全整合與生產部署 │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ app-web + app-server + app-web-host │ │
│ │ │ │
│ │ 整合測試、WAR 封裝、部署準備 │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
各階段產出物
| 階段 | 主要產出物 | 存放位置 |
|---|---|---|
| Step 1 | Epic、User Stories、SBE 規格、Prototype | {project}/docs/、app-web-mockup/ |
| Step 2 | 生產前端程式碼 | app-web/ |
| Step 3 | RESTful API、整合測試 | app-server/ |
| Step 4 | 可部署的 WAR 檔案 | app-server.war、app-web-host.war |
實際案例: 花店管理系統的規格存放在 specs/florist/
US 開發階段
每個 User Story 在 Sprint 內經歷四個階段閘門(stage gate),從 Prototype 驗證到整合交付。此模型讓 Sprint 看板能精確反映每個 US 的真實進度,而非僅有「In Progress / Done」兩種狀態。
四階段定義
| 階段 | 代碼 | 環境 | 驗證方式 | 通過標準 |
|---|---|---|---|---|
| Prototype E2E | P.E2E | app-web-mockup + MSW | Playwright 自動化測試 | 所有 E2E 測試通過 |
| Prototype 驗收 | P.UAT | app-web-mockup + MSW | /test-plan 手動測試指南 | PO 手動測試簽收 |
| 整合 E2E | I.E2E | app-web + app-server | Playwright 自動化測試 | 所有 E2E 測試通過(真實 API) |
| 整合驗收 | I.UAT | app-web + app-server | 手動測試指南 | 最終手動測試簽收 |
階段流程
🔲 待開發
↓
P.E2E ─── Prototype E2E 測試通過(app-web-mockup + MSW)
↓
P.UAT ─── PO 手動驗收 Prototype
↓
I.E2E ─── 整合 E2E 測試通過(app-web + app-server)
↓
✅ ──── I.UAT 通過,US 完成
與 Step 1–4 的對應關係
四階段閘門對應到專案層級的 Step 1–4 開發流程:
| US 階段 | 對應 Step | 說明 |
|---|---|---|
P.E2E → P.UAT | Step 1: Prototype 開發 | 在 app-web-mockup 中完成 UI 與 Mock API |
I.E2E | Step 2–3: 同步 + 後端整合 | 程式碼同步至 app-web,後端 API 實作完成 |
I.UAT → ✅ | Step 3–4: 整合驗收 | 前後端整合測試通過,PO 最終簽收 |
注意:並非所有 US 都會在同一個 Sprint 內走完四個階段。Prototype 階段(P.E2E / P.UAT)可在一個 Sprint 完成,整合階段(I.E2E / I.UAT)在後續 Sprint 進行。
Sprint Backlog 追蹤方式
Sprint Backlog 表格以「目標」和「階段」兩個欄位追蹤每個 US 的進度:
- 目標 — Sprint Planning 時決定,表示本 Sprint 預期將 US 推進到哪個階段
- 階段 — Sprint 進行中即時更新,表示 US 目前的實際狀態
| # | US | 標題 | SP | 目標 | 階段 |
|---|-----|------|----|------|------|
| 1 | US-301 | 客戶基本資料管理 | 8 | P.UAT | P.E2E |
| 2 | US-302 | 客戶列表與搜尋 | 5 | P.UAT | 🔲 |
| 3 | US-201 | 創建訂單 | 13 | ✅ | I.E2E |
上例中:US-301 和 US-302 本 Sprint 只做到 Prototype 驗收;US-201 是從前一個 Sprint 延續的整合工作,目標是完成。
階段符號說明:
🔲— 待開發P.E2E— Prototype E2E 測試通過P.UAT— Prototype 驗收通過I.E2E— 整合 E2E 測試通過✅— 整合驗收通過(US 完成)
Step 1: Prototype 開發(app-web-mockup)
產品規劃流程
Prototype 開發前需完成產品規劃,產出需求規格文檔:
Product Roadmap → Epic → User Stories → SBE → Sprint Planning → Tasks
各文檔的撰寫規範與範本請參閱 規格撰寫指南,Sprint 規劃使用 /sprint Skill。
實際案例: 花店管理系統規格
SCRUM 迭代
每個 Sprint 週期建議為 1–2 週,迭代流程:
Sprint Planning → Tasks → Daily Scrum → Sprint Review → Sprint Retrospective
Sprint 內每個 US 的進度以 US 開發階段(🔲 → P.E2E → P.UAT → ...)追蹤。
Prototype 開發環境
| 模組 | 用途 |
|---|---|
| app-web-mockup | 前端 Prototype(快速迭代) |
| MSW (Mock Service Worker) | Mock API,不依賴後端 |
開發過程中,前端 UI 與 Mock API 在 app-web-mockup 中同步推進,PO 可隨時驗收 Prototype。
Step 2: 程式碼同步(app-web-mockup → app-web)
同步時機
當 Prototype 達到以下條件時進行同步:
- Sprint 目標完成
- 需求已確認(Product Owner 驗收)
- Mock API 規格已穩定
同步範圍
| 目錄/檔案 | 是否同步 |
|---|---|
applets/、components/、config/ | 同步 |
features/、hooks/、layouts/ | 同步 |
mocks/、nls/、routes/ | 同步 |
services/、store/、types/、utils/ | 同步 |
App.tsx | 同步 |
main.tsx | 謹慎同步 |
tailwind.css | 特殊處理(保留 import) |
playground/、__tests__/ | 不同步 |
同步步驟
# 1. 確認 app-web-mockup 可正常建置
cd app-web-mockup
npm run build
# 2. 執行同步(手動或使用腳本)
# 複製需同步的目錄到 app-web/src/
# 3. 處理 tailwind.css
# 確保包含 @source 指令掃描元件庫原始碼
# 4. 驗證 app-web 可正常建置
cd app-web
npm run build
同步檢查清單
- 新增的目錄已複製
- 修改的檔案已更新
- 刪除的檔案已移除
-
tailwind.css保留了框架 CSS import -
npm run build無錯誤 - Mock API 可正常運作
Step 3: 後端開發 + 漸進式整合
開發流程
┌─────────────────────────────────────────────────────────────────┐
│ 平行開發 │
├─────────────────────────────┬───────────────────────────────────┤
│ app-web │ app-server │
├─────────────────────────────┼───────────────────────────────────┤
│ 1. 使用 Mock API 開發 │ 1. 依 SBE 設計 API │
│ 2. 逐步切換真實 API │ 2. 實作 Controller/Service │
│ 3. 處理整合問題 │ 3. 撰寫單元/整合測試 │
└─────────────────────────────┴───────────────────────────────────┘
3.1 app-server 開發
依據 SBE 規格開發
SBE 中的 API 規格是 app-server 開發的依據:
docs/specs/sbe/epic-2/US-201-create-order/
↓ API 規格(Request/Response 範例)
app-server/src/main/java/.../controller/OrderController.java
app-server/src/main/java/.../service/OrderService.java
app-server/src/main/java/.../repository/OrderRepository.java
API 開發檢查清單
- Endpoint 路徑符合 SBE 定義
- Request/Response 格式符合 SBE 定義
- 錯誤碼符合 SBE 定義
- 單元測試涵蓋 SBE 中的所有 Scenario
- API 文檔已更新(Swagger/OpenAPI)
3.2 漸進式切換策略
app-web 支援逐個 API 切換,確保整合過程可控。
MSW 控制機制
MSW 透過 config.app.msw.enabled 控制,根據 Vite 環境自動判斷:
// src/conf/config.ts
export const config: AppEnvironConfig = {
app: {
msw: {
enabled: import.meta.env.DEV, // 開發環境自動啟用
},
},
}
| 環境 | MSW 狀態 | 說明 |
|---|---|---|
開發環境(npm run dev) | 自動啟用 | 所有 API 由 MSW 處理 |
生產環境(npm run build) | 預設關閉 | 所有 API 連接真實後端 |
逐模組切換
MSW 設定 onUnhandledRequest: 'bypass',未匹配的請求自動轉發到真實後端。
// src/mocks/handlers/index.ts
export const handlers = [
// 移除已完成的 handler,讓請求走真實伺服器
// ...authHandlers, // 認證 API → 真實後端
// ...orderHandlers, // 訂單 API → 真實後端
...customerHandlers, // 客戶 API → 繼續使用 Mock
];
3.3 整合測試
測試策略
| 測試類型 | 工具 | 說明 |
|---|---|---|
| API 單元測試 | JUnit | app-server 內部測試 |
| API 整合測試 | Spring Test | 測試完整 API 流程 |
| E2E 測試 | Playwright | app-web 對接真實 API |
整合測試環境
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ app-web │───→│ app-server │───→│ Database │
│ (dev server) │ │ (test profile) │ │ (H2/Docker) │
└─────────────────┘ └─────────────────┘ └─────────────────┘
Step 4: 完全整合與生產部署
生產環境必要模組
| 模組 | 用途 | 產出物 |
|---|---|---|
| app-web | 前端 SPA | dist/(靜態檔案) |
| app-server | 後端 RESTful API | app-server.war |
| app-web-host | 前端托管層(將 dist/ 封裝成 WAR) | app-web-host.war |
生產環境建置時,MSW 預設關閉(import.meta.env.DEV = false),所有 API 連接真實後端。
部署檢查清單
- 所有 MSW handler 已移除,API 完全切換至真實後端
- E2E 測試通過(整合環境)
- 環境變數已正確配置
- 部署文檔已更新
建置指令、環境配置、部署架構等細節請參閱 部署指南。
相關文檔
| 文檔 | 說明 |
|---|---|
| 規格撰寫指南 | 各類文檔的撰寫規範與範本 |
| Claude Code Skills 總覽 | /sprint、/e2e、/test-plan 等開發相關 Skill |
| 部署指南 | 生產環境部署說明 |