# 部署檢查清單 ## 🚀 部署前檢查清單 ### 📋 代碼準備 #### 代碼品質 - [ ] 所有測試通過 (`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 - [ ] 關鍵資源已預載入 ### 📦 依賴管理 ```bash # 更新依賴 npm update npm audit fix # 檢查過時套件 npm outdated # 清理未使用依賴 npm prune ``` - [ ] 所有依賴已更新到穩定版本 - [ ] 無已知安全漏洞 (`npm audit`) - [ ] package-lock.json 已提交 - [ ] 生產依賴正確分類 ### 🗄️ 資料庫準備 #### Supabase 設置 - [ ] 生產資料庫已創建 - [ ] 資料庫 Migration 已執行 - [ ] 資料庫索引已優化 - [ ] Row Level Security (RLS) 已啟用 - [ ] 備份策略已配置 #### 資料遷移 ```sql -- 執行 migration supabase db push -- 驗證 schema supabase db diff -- 設置備份 supabase db backup ``` ### 🌐 Vercel 部署設置 #### 環境變數配置 ```bash # 在 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 已配置 - [ ] 性能預算警報已設置 #### 日誌記錄 ```typescript // 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. 準備階段 ```bash # 切換到 main 分支 git checkout main git pull origin main # 執行測試 npm run test npm run lint npm run type-check # 構建測試 npm run build ``` ### 2. 部署到 Staging ```bash # 部署到 staging 分支 git checkout staging git merge main git push origin staging # Vercel 會自動部署 staging 分支 # 測試 staging URL: https://dramaling-staging.vercel.app ``` ### 3. 生產部署 ```bash # 創建版本標籤 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. 部署後驗證 ```bash # 檢查部署狀態 vercel list # 查看部署日誌 vercel logs # 監控錯誤 vercel logs --error ``` ## 🔄 回滾計劃 ### 快速回滾步驟 ```bash # 方法 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 ``` ### 資料庫回滾 ```sql -- 備份當前資料 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% ### 警報設置 ```javascript // 設置警報閾值 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