dramaling-vocab-learning/docs/05_deployment/deployment-checklist.md

6.5 KiB

部署檢查清單

🚀 部署前檢查清單

📋 代碼準備

代碼品質

  • 所有測試通過 (npm test)
  • 無 TypeScript 錯誤 (npm run type-check)
  • 無 ESLint 警告 (npm run lint)
  • 代碼覆蓋率達標 (>80%)
  • 已移除所有 console.log 和調試代碼

功能完整性

  • 所有核心功能正常運作
  • 響應式設計在所有裝置正常顯示
  • 跨瀏覽器相容性測試完成
  • 404 和錯誤頁面正常顯示
  • Loading 和 Skeleton 狀態正確實現

🔐 安全檢查

環境變數

  • 生產環境變數已設置
  • 移除所有測試/開發用 API keys
  • NEXTAUTH_SECRET 已更新為強密碼
  • 資料庫連線使用生產憑證
  • 所有敏感資料已加密

安全配置

  • HTTPS 已啟用
  • CSP (Content Security Policy) 已配置
  • CORS 設置正確
  • Rate limiting 已實施
  • SQL injection 防護已啟用

性能優化

構建優化

  • 生產構建成功 (npm run build)
  • Bundle size 在預算內 (<200KB gzipped)
  • 圖片已優化和壓縮
  • 字體已優化載入
  • 未使用的 CSS/JS 已移除

載入性能

  • Lighthouse 分數 > 90
  • First Contentful Paint < 1.8s
  • Largest Contentful Paint < 2.5s
  • 累積版面配置位移 < 0.1
  • 關鍵資源已預載入

📦 依賴管理

# 更新依賴
npm update
npm audit fix

# 檢查過時套件
npm outdated

# 清理未使用依賴
npm prune
  • 所有依賴已更新到穩定版本
  • 無已知安全漏洞 (npm audit)
  • package-lock.json 已提交
  • 生產依賴正確分類

🗄️ 資料庫準備

Supabase 設置

  • 生產資料庫已創建
  • 資料庫 Migration 已執行
  • 資料庫索引已優化
  • Row Level Security (RLS) 已啟用
  • 備份策略已配置

資料遷移

-- 執行 migration
supabase db push

-- 驗證 schema
supabase db diff

-- 設置備份
supabase db backup

🌐 Vercel 部署設置

環境變數配置

# 在 Vercel Dashboard 設置
NEXT_PUBLIC_SUPABASE_URL=https://xxx.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=xxx
SUPABASE_SERVICE_ROLE_KEY=xxx
GOOGLE_GEMINI_API_KEY=xxx
NEXTAUTH_URL=https://dramaling.vercel.app
NEXTAUTH_SECRET=xxx

構建設置

  • Build Command: npm run build
  • Output Directory: .next
  • Install Command: npm ci
  • Node.js Version: 18.x

域名配置

  • 自定義域名已設置
  • SSL 證書已配置
  • DNS 記錄已更新
  • www 重定向已設置

📊 監控設置

錯誤追蹤

  • Sentry 已配置
  • 錯誤報告已啟用
  • Source maps 已上傳
  • 警報規則已設置

性能監控

  • Google Analytics 已設置
  • Web Vitals 追蹤已啟用
  • Custom metrics 已配置
  • 性能預算警報已設置

日誌記錄

// utils/logger.ts
const logger = {
  info: (message: string, data?: any) => {
    if (process.env.NODE_ENV === 'production') {
      // 發送到日誌服務
      sendToLogService({ level: 'info', message, data })
    }
  },
  error: (message: string, error?: any) => {
    if (process.env.NODE_ENV === 'production') {
      // 發送到錯誤追蹤服務
      sendToErrorTracking({ message, error })
    }
  }
}

📝 文檔更新

  • README.md 已更新
  • API 文檔已完成
  • 部署流程已記錄
  • 環境變數說明已更新
  • CHANGELOG.md 已更新

🧪 最終測試

Staging 環境測試

  • 在 staging 環境完整測試
  • 用戶註冊/登入流程正常
  • 詞卡生成功能正常
  • 學習功能正常
  • 付費功能正常(如適用)

生產環境驗證

  • 首頁載入正常
  • 所有連結正常運作
  • 表單提交正常
  • API 端點響應正常
  • 第三方整合正常

📋 部署步驟

1. 準備階段

# 切換到 main 分支
git checkout main
git pull origin main

# 執行測試
npm run test
npm run lint
npm run type-check

# 構建測試
npm run build

2. 部署到 Staging

# 部署到 staging 分支
git checkout staging
git merge main
git push origin staging

# Vercel 會自動部署 staging 分支
# 測試 staging URL: https://dramaling-staging.vercel.app

3. 生產部署

# 創建版本標籤
git tag -a v1.0.0 -m "Release version 1.0.0"
git push origin v1.0.0

# 部署到生產
git checkout main
git push origin main

# Vercel 自動部署到生產環境

4. 部署後驗證

# 檢查部署狀態
vercel list

# 查看部署日誌
vercel logs

# 監控錯誤
vercel logs --error

🔄 回滾計劃

快速回滾步驟

# 方法 1: Vercel Dashboard
# 1. 進入 Vercel Dashboard
# 2. 選擇 Deployments
# 3. 找到上一個穩定版本
# 4. 點擊 "Promote to Production"

# 方法 2: Git 回滾
git revert HEAD
git push origin main

# 方法 3: 緊急回滾
vercel rollback

資料庫回滾

-- 備份當前資料
pg_dump -h db.xxx.supabase.co -U postgres -d postgres > backup.sql

-- 恢復到之前版本
psql -h db.xxx.supabase.co -U postgres -d postgres < previous_backup.sql

📱 生產環境監控

即時監控指標

  • CPU 使用率 < 80%
  • 記憶體使用率 < 85%
  • 錯誤率 < 1%
  • 平均響應時間 < 200ms
  • 可用性 > 99.9%

警報設置

// 設置警報閾值
const alerts = {
  errorRate: 0.01, // 1%
  responseTime: 500, // ms
  availability: 0.999, // 99.9%
  diskUsage: 0.9, // 90%
}

部署完成確認

功能驗證

  • 用戶可以正常註冊/登入
  • 詞卡生成功能正常
  • 學習功能正常運作
  • 數據正確保存
  • Email 通知正常發送

性能驗證

  • 頁面載入時間符合預期
  • API 響應時間正常
  • 無記憶體洩漏
  • 無異常錯誤

安全驗證

  • HTTPS 正常運作
  • 認證機制正常
  • 敏感資料已加密
  • 無安全警告

📞 緊急聯絡

角色 聯絡方式
開發負責人 dev-lead@dramaling.com
運維團隊 ops@dramaling.com
安全團隊 security@dramaling.com
客服團隊 support@dramaling.com

🎉 部署成功後

  1. 通知相關人員

    • 發送部署完成郵件
    • 更新團隊 Slack/Discord
    • 更新專案看板
  2. 監控初期表現

    • 觀察錯誤率 (前 24 小時)
    • 檢查用戶反饋
    • 監控性能指標
  3. 文檔更新

    • 更新版本號
    • 記錄部署日誌
    • 更新 Release Notes