系統部署與回滾 SOP
狀態:有效 | 最後更新:2026-04-11 執行時機:任何系統有功能更新、修復或緊急回滾時 負責部門:開發部(DEV)
各系統部署方式
| 系統 | 部署平台 | 觸發方式 | 部署時間 |
|---|---|---|---|
| 官網 | Vercel | git push to main | ~1 分鐘 |
| 診斷 | Vercel | git push to main | ~2 分鐘 |
| 儀表板 | Vercel | git push to main | ~2 分鐘 |
| 預約 | Render | git push to main | ~3-5 分鐘(含冷啟動) |
| 看板 | 本機 Node.js | 手動重啟 | 即時 |
標準部署流程(功能更新)
第一步:上線前確認(三層清單)
執行 /上線確認 [系統名稱] 或手動核對:
第一層:功能確認
- 功能在本機正常運作?
- 邊界情況(空值、長文字、特殊字元)測試過?
- 桌機瀏覽器測試通過?
- 手機瀏覽器測試通過?
第二層:跨系統影響
- 不影響其他系統的 API 介面?
- 不影響共用環境變數?
- 不影響用戶現有操作流程?
第三層:風險確認
- 知道如何回滾(見下方回滾流程)?
- 部署期間有無影響服務可用性?
三層全部通過 → 執行部署。任一層有疑慮 → 先解決。
第二步:執行部署
Vercel 系統(官網 / 診斷 / 儀表板):
git add -A
git commit -m "說明這次改了什麼"
git push origin main
→ Vercel 自動偵測 push,開始部署 → 約 1-2 分鐘後上線
Render 系統(預約):
git add -A
git commit -m "說明這次改了什麼"
git push origin main
→ Render 自動偵測 push,開始部署 → 約 3-5 分鐘後上線(有冷啟動延遲)
看板(本機):
- 停止現有 Node.js 進程(Ctrl+C)
- 執行更新的程式碼
node server.js重新啟動
第三步:部署後驗證
- 開啟實際網址確認頁面正常載入
- 測試剛才修改的功能
- 快速掃描其他主要功能沒有受影響
- 手機版也確認一次
第四步:更新記錄
dev/tasks.md → 將對應任務移至「已完成」
hr/inventory.json → 更新 last_updated、health_score(如有變化)
projects/SYS-XX.md → 新增變更記錄一行
緊急回滾流程
Vercel 系統回滾(官網 / 診斷 / 儀表板)
方法 A:透過 Vercel 控制台(最快)
- 開啟 vercel.com → 進入對應專案
- 點選「Deployments」→ 找到上一個正常的部署(Promote to Production)
- 點「...」→「Promote to Production」
- 約 30 秒生效
方法 B:透過 Git 回滾
git revert HEAD # 建立新 commit 反轉上一次更改
git push origin main # 推送,觸發重新部署
Render 系統回滾(預約)
方法:透過 Render 控制台
- 開啟 render.com → 進入預約系統服務
- 點選「Deploys」→ 找到上一個正常的部署
- 點「Rollback to this deploy」
- 約 3-5 分鐘生效
注意:預約系統回滾不影響 MongoDB 資料(資料庫獨立於程式碼)
看板回滾(本機)
git log --oneline # 找到上一個正常版本的 commit hash
git checkout [hash] # 切換到該版本
node server.js # 重新啟動
環境變數管理
各系統的環境變數記錄在:
tzlth-hq/security/security-log.md
加入或修改環境變數的流程:
Vercel(官網/診斷/儀表板):
- vercel.com → 專案 → Settings → Environment Variables
- 新增/修改後,需重新部署才生效(觸發一次 git push 或在 Vercel 手動 Redeploy)
Render(預約):
- render.com → 服務 → Environment
- 修改後 Render 自動重新部署
修改後記得更新 security-log.md(只記錄變數名稱和用途,不記錄實際值)
各系統緊急聯絡資訊
| 系統 | 部署控制台 | 監控方式 |
|---|---|---|
| 官網 / 診斷 / 儀表板 | vercel.com | Vercel 自動告警 |
| 預約 | render.com | UptimeRobot(已設定) |
| 看板 | 本機 | 手動確認 localhost:3939 |
常見問題
Q:Vercel 部署卡住或失敗怎麼辦? → vercel.com → Deployments → 查看 Build Logs 找錯誤訊息 → 告訴 Claude 錯誤內容
Q:Render 每次都要等很久才能訪問? → Render 免費方案有「冷啟動」機制(閒置 15 分鐘後休眠),第一次請求需要 20-30 秒等待。UptimeRobot 每 14 分鐘 ping 一次防止休眠,已設定中。
Q:部署後發現功能壞了,要趕快回滾嗎? → 評估影響範圍:
- 影響用戶(診斷/預約/官網)→ 立即回滾
- 只影響自用工具(看板/儀表板)→ 可以先修復再重新部署