# MOMO Pro System V10.0 - 全面優化計畫 > **版本**: V10.0 (計畫版) > **日期**: 2026-02-14 > **作者**: CIO 辦公室 > **狀態**: 提案中 --- ## 一、執行摘要 本計畫旨在將 MOMO Pro System 從當前 V9.4 升級至 V10.0,實現**企業級的穩定性、自動化運維、與商業智慧**能力。 ### 核心目標 | 維度 | V9.4 現況 | V10.0 目標 | |------|----------|-----------| | **可用性** | 99% | 99.9% (每月最多 43 分鐘停機) | | **MTTR** | 手動修復 30+ 分鐘 | 自動修復 < 5 分鐘 | | **部署頻率** | 手動觸發 | 每日自動部署 (GitOps) | | **監控覆蓋率** | 60% | 100% | | **環境一致性** | 手動同步 | 自動同步 + 告警 | --- ## 二、現況分析 ### 2.1 環境架構 ``` ┌─────────────────────────────────────────────────────────────────────────────┐ │ 現行雙環境架構 │ ├─────────────────────────────────────────────────────────────────────────────┤ │ │ │ ┌─────────────────────────────────────────────────────────────────────┐ │ │ │ UAT 主機 (192.168.0.110) │ │ │ │ 集中式監控與 BI 平台 │ │ │ │ │ │ │ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │ │ │ │ K8s momo-app│ │ Superset │ │ Metabase │ │ │ │ │ │ momo-sched │ │ (Docker) │ │ (Docker) │ │ │ │ │ │ momo-postgres│ └─────────────┘ └─────────────┘ │ │ │ │ └─────────────┘ │ │ │ │ │ │ │ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │ │ │ │ Grafana │ │ Prometheus │ │Alertmanager │ │ │ │ │ │ (K8s) │ │ (K8s) │ │ (K8s) │ │ │ │ │ └─────────────┘ └─────────────┘ └─────────────┘ │ │ │ │ │ │ │ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │ │ │ │ GitLab │ │ Registry │ │ n8n │ │ │ │ │ │ (Docker) │ │ (Docker) │ │ (Docker) │ │ │ │ │ └─────────────┘ └─────────────┘ └─────────────┘ │ │ │ └─────────────────────────────────────────────────────────────────────┘ │ │ │ │ │ │ │ │ 同步 / 監控 │ │ ▼ │ │ ┌─────────────────────────────────────────────────────────────────────┐ │ │ │ GCP 正式環境 (35.194.233.141) │ │ │ │ 純應用部署 (無監控堆疊) │ │ │ │ │ │ │ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │ │ │ │ K8s momo-app│ │ momo-sched │ │momo-postgres│ │ │ │ │ └─────────────┘ └─────────────┘ └─────────────┘ │ │ │ │ │ │ │ │ ⚠️ 監控由 UAT 集中管理 │ │ │ │ ⚠️ BI 服務指向 UAT │ │ │ └─────────────────────────────────────────────────────────────────────┘ │ │ │ └─────────────────────────────────────────────────────────────────────────────┘ ``` ### 2.2 現有問題總結 | 類別 | 問題 | 影響程度 | |------|------|---------| | **環境同步** | UAT/GCP 配置偶爾不一致 | 🔴 高 | | **部署流程** | CI/CD 部署 GCP 需手動觸發 | 🟠 中 | | **監控告警** | 部分服務缺乏監控 | 🟠 中 | | **自動修復** | OOM/死鎖等需人工介入 | 🔴 高 | | **BI 報表** | Superset 圖表配置繁瑣 | 🟡 低 | | **文檔管理** | CLAUDE.md 過長,難以維護 | 🟡 低 | | **備份策略** | 缺乏跨區域備份 | 🟠 中 | --- ## 三、V10.0 優化方案 ### 3.1 自動化運維 (AIOps) #### 3.1.1 環境同步機制 ✅ 已實作 ```bash # 每 30 分鐘自動檢查 scripts/auto-repair/env-sync-monitor.sh # 功能: # 1. 比對 ConfigMap # 2. 比對 Pod 版本 # 3. 比對關鍵檔案 checksum # 4. 自動同步不一致項目 # 5. Telegram 告警 ``` #### 3.1.2 智慧自動修復矩陣 | 問題類型 | 偵測方式 | 自動修復動作 | 通知 | |---------|---------|-------------|------| | OOM | `K8s OOMKilled` | 增加 memory +50%, 重啟 | ✅ | | Pod CrashLoop | 重啟 >5 次/小時 | 回滾到上一版本 | ✅ | | 資料庫死鎖 | pg_stat_activity | 終止長時間查詢 | ✅ | | 服務無回應 | 健康檢查 502/504 | 重啟 Pod/Docker | ✅ | | 磁碟空間 | >85% | 自動清理 logs/tmp | ✅ | | SSL 過期 | 30 天前 | 自動續約 (Certbot) | ✅ | | 環境不一致 | ConfigMap diff | 自動同步 | ✅ | | 爬蟲失敗 | 連續 3 次錯誤 | 重啟 scheduler | ✅ | #### 3.1.3 告警分級與升級機制 ``` Level 1 (Info) → Telegram 通知 Level 2 (Warning) → Telegram + 自動修復嘗試 Level 3 (Critical) → Telegram + 自動修復 + Email Level 4 (Emergency)→ Telegram + 自動修復 + Email + LINE (主管) ``` ### 3.2 CI/CD 優化 (GitOps) #### 3.2.1 完整 Pipeline 流程 ```yaml # .gitlab-ci.yml V10.0 stages: - test - security - build - deploy-uat - integration-test - deploy-gcp - verify workflow: rules: - if: $CI_COMMIT_BRANCH == "main" when: always - if: $CI_PIPELINE_SOURCE == "merge_request_event" when: always test: stage: test script: - pytest tests/ -v --cov=app --cov-report=xml coverage: '/TOTAL.+?(\d+%)/' security-scan: stage: security script: - bandit -r . -f json -o bandit-report.json - trivy image $IMAGE_NAME --severity HIGH,CRITICAL artifacts: reports: sast: bandit-report.json build: stage: build script: - docker build -t $IMAGE_NAME:$CI_COMMIT_SHA . - docker push $IMAGE_NAME:$CI_COMMIT_SHA - docker tag $IMAGE_NAME:$CI_COMMIT_SHA $IMAGE_NAME:latest - docker push $IMAGE_NAME:latest deploy-uat: stage: deploy-uat script: - ssh $UAT_HOST "kubectl set image deploy/momo-app momo-app=$IMAGE_NAME:$CI_COMMIT_SHA -n momo" environment: name: UAT url: https://mo.wooo.work integration-test: stage: integration-test script: - sleep 60 - curl -f https://mo.wooo.work/health - python tests/integration/test_api.py needs: [deploy-uat] deploy-gcp: stage: deploy-gcp script: - gcloud compute ssh $GCP_VM --command="sudo kubectl set image deploy/momo-app momo-app=$IMAGE_NAME:$CI_COMMIT_SHA -n momo" environment: name: Production url: https://momo.wooo.work needs: [integration-test] when: manual # 或 automatic verify: stage: verify script: - ./scripts/auto-repair/env-sync-monitor.sh check - curl -f https://momo.wooo.work/health needs: [deploy-gcp] ``` #### 3.2.2 版本管理策略 ``` main (v10.0.0) ├── 直接部署到 UAT (自動) ├── 整合測試通過後部署 GCP (自動/手動) └── 每次部署自動打 Git Tag develop (開發中) ├── 功能分支合併點 └── PR 必須通過 CI 檢查 feature/* (功能分支) ├── 開發新功能 └── PR → develop → main ``` ### 3.3 監控體系升級 #### 3.3.1 監控層級架構 ``` ┌─────────────────────────────────────────────────────────────────────────┐ │ V10.0 監控體系架構 │ ├─────────────────────────────────────────────────────────────────────────┤ │ │ │ Layer 4: 業務監控 (Business Metrics) │ │ ┌─────────────────────────────────────────────────────────────────┐ │ │ │ • 每日業績達成率 • 爬蟲成功率 • 用戶活躍度 │ │ │ │ • 報表產出準時率 • API 回應時間 • 錯誤率 │ │ │ └─────────────────────────────────────────────────────────────────┘ │ │ │ │ │ Layer 3: 應用監控 (APM) │ │ ┌─────────────────────────────────────────────────────────────────┐ │ │ │ • Flask 請求追蹤 • 資料庫查詢分析 • 爬蟲執行監控 │ │ │ │ • 排程任務狀態 • 外部 API 呼叫 • 錯誤追蹤 (Sentry) │ │ │ └─────────────────────────────────────────────────────────────────┘ │ │ │ │ │ Layer 2: 容器/K8s 監控 │ │ ┌─────────────────────────────────────────────────────────────────┐ │ │ │ • Pod 狀態/重啟 • 資源使用率 • 部署狀態 │ │ │ │ • 映像版本追蹤 • ConfigMap 變更 • Secret 存取 │ │ │ └─────────────────────────────────────────────────────────────────┘ │ │ │ │ │ Layer 1: 基礎設施監控 │ │ ┌─────────────────────────────────────────────────────────────────┐ │ │ │ • CPU/記憶體/磁碟 • 網路流量 • 系統負載 │ │ │ │ • SSL 憑證狀態 • DNS 解析 • 外部服務可用性 │ │ │ └─────────────────────────────────────────────────────────────────┘ │ │ │ └─────────────────────────────────────────────────────────────────────────┘ ``` #### 3.3.2 新增監控指標 | 指標類別 | 指標名稱 | 閾值 | 告警等級 | |---------|---------|------|---------| | **業務** | 爬蟲成功率 | < 90% | Critical | | **業務** | 每日業績匯入延遲 | > 30 分鐘 | Warning | | **業務** | API 平均回應時間 | > 2 秒 | Warning | | **應用** | Flask 錯誤率 | > 1% | Warning | | **應用** | 資料庫查詢時間 | > 5 秒 | Warning | | **容器** | Pod 記憶體使用率 | > 85% | Warning | | **容器** | Pod 重啟次數 | > 3/小時 | Critical | | **基礎** | 磁碟使用率 | > 85% | Warning | | **基礎** | SSL 剩餘天數 | < 30 天 | Warning | #### 3.3.3 Grafana 儀表板規劃 | 儀表板名稱 | 內容 | 受眾 | |-----------|------|------| | **Executive Summary** | KPI 總覽、業績達成率、系統健康度 | 主管 | | **Operations Dashboard** | 服務狀態、告警列表、最近部署 | 運維 | | **Application Performance** | API 效能、錯誤追蹤、資料庫效能 | 開發 | | **Infrastructure Health** | CPU/RAM/Disk、網路、K8s 資源 | 運維 | | **Crawler Monitoring** | 爬蟲執行狀態、成功率、資料量 | 業務 | ### 3.4 商業智慧 (BI) 強化 #### 3.4.1 Superset 圖表標準化 | 圖表 ID | 圖表名稱 | 類型 | 資料源 | |---------|---------|------|--------| | 1 | 品牌銷售額排名 | Bar Chart | monthly_summary_analysis | | 2 | 月銷售趨勢 | Line Chart | monthly_summary_analysis | | 3 | 類別銷售佔比 | Pie Chart | monthly_summary_analysis | | 4 | 銷售數量 Top 15 | Bar Chart | monthly_summary_analysis | | 5 | 區域銷售分布 | Bar Chart | monthly_summary_analysis | | 6 | 毛利率趨勢 | Line Chart | monthly_summary_analysis | | 7 | 瀏覽量趨勢 | Area Chart | monthly_summary_analysis | | 8 | 每日業績概覽 | Big Number | daily_sales_snapshot | #### 3.4.2 Metabase 集合整理 ``` 📊 MOMO 業績分析 ├── ⭐ 2026 專業分析儀表板(新版) │ ├── 即時業績概覽 │ ├── 品牌分析 │ ├── 趨勢分析 │ └── 預測模型 │ └── 📦 舊版業績分析(已棄用) └── 歷史資料備份 ``` ### 3.5 資料備份與災難復原 #### 3.5.1 備份策略 (3-2-1 原則) | 備份類型 | 頻率 | 保留期限 | 儲存位置 | |---------|------|---------|---------| | 資料庫全備 | 每日 02:00 | 30 天 | UAT 本地 | | 資料庫增量 | 每小時 | 7 天 | UAT 本地 | | 跨區域備份 | 每日 04:00 | 14 天 | GCS (asia-east1) | | 配置檔備份 | 每次變更 | 永久 | Git + GCS | #### 3.5.2 災難復原流程 ``` RTO (Recovery Time Objective): 30 分鐘 RPO (Recovery Point Objective): 1 小時 復原流程: 1. 確認災難類型 (UAT 故障 / GCP 故障 / 完全災難) 2. 啟動備用環境或復原程序 3. 從最近備份還原資料庫 4. 驗證服務健康 5. 切換 DNS 或流量 6. 通知相關人員 ``` ### 3.6 安全強化 #### 3.6.1 安全檢查清單 | 項目 | 當前狀態 | V10.0 目標 | |------|---------|-----------| | Fail2Ban | ✅ 已啟用 | 維持 | | UFW 防火牆 | ✅ 已啟用 | 維持 | | SSL/TLS | ✅ A+ 評級 | 維持 | | HSTS | ✅ 已啟用 | 維持 | | 端口隱藏 | ✅ 僅 80/443/22 | 維持 | | 程式碼掃描 | ✅ Bandit | 增加 SonarQube | | 映像掃描 | ✅ Trivy | 維持 | | WAF | ❌ | 新增 ModSecurity | | Secret 管理 | K8s Secret | 升級 Vault | #### 3.6.2 合規性目標 - [ ] ISO 27001 資訊安全管理 - [ ] GDPR 個資保護 (如適用) - [ ] 定期滲透測試 (每季) - [ ] 安全意識培訓 ### 3.7 文檔與知識管理 #### 3.7.1 CLAUDE.md 重構 ``` CLAUDE.md (主文件,簡潔版) ├── 專案概覽 ├── 環境架構 ├── 帳號密碼 └── 快速指令 docs/ ├── ARCHITECTURE.md # 詳細架構說明 ├── DEPLOYMENT.md # 部署流程 ├── MONITORING.md # 監控告警 ├── TROUBLESHOOTING.md # 故障排除 ├── API-REFERENCE.md # API 文檔 ├── DATABASE-SCHEMA.md # 資料庫結構 ├── SECURITY.md # 安全規範 └── CHANGELOG.md # 變更記錄 ``` #### 3.7.2 Runbook 建立 | Runbook | 內容 | 適用場景 | |---------|------|---------| | Pod OOM 處理 | 診斷步驟、記憶體調整、回滾 | Pod 記憶體不足 | | 資料庫連線問題 | 連線池檢查、重啟流程 | 連線超時 | | 爬蟲失敗處理 | 日誌檢查、重試、手動觸發 | 爬蟲異常 | | CI/CD 失敗處理 | Pipeline 診斷、手動部署 | 部署失敗 | | SSL 憑證更新 | Certbot 更新、Nginx 重載 | 憑證到期 | --- ## 四、實施計畫 ### 4.1 里程碑規劃 | 階段 | 時程 | 交付物 | |------|------|--------| | **Phase 1: 基礎穩定** | Week 1-2 | 環境同步機制、自動修復完善 | | **Phase 2: CI/CD 強化** | Week 3-4 | GitOps 流程、自動化測試 | | **Phase 3: 監控升級** | Week 5-6 | 新監控指標、Grafana 儀表板 | | **Phase 4: BI 優化** | Week 7-8 | Superset/Metabase 標準化 | | **Phase 5: 安全強化** | Week 9-10 | WAF、Vault、合規文檔 | | **Phase 6: 文檔整理** | Week 11-12 | CLAUDE.md 重構、Runbook | ### 4.2 風險評估 | 風險 | 機率 | 影響 | 緩解措施 | |------|------|------|---------| | 環境同步失敗 | 中 | 高 | 雙重驗證機制 | | 自動修復誤觸發 | 低 | 中 | 保守閾值設定 | | CI/CD Pipeline 中斷 | 中 | 高 | 手動部署備案 | | 新監控影響效能 | 低 | 低 | 資源隔離 | ### 4.3 成功指標 | 指標 | 目標值 | 測量方式 | |------|--------|---------| | 系統可用性 | 99.9% | Uptime 監控 | | 平均修復時間 | < 5 分鐘 | 告警到恢復時間 | | 部署頻率 | 每日 | CI/CD Pipeline | | 環境一致性 | 100% | 同步檢查結果 | | 告警準確率 | > 95% | 誤報率分析 | --- ## 五、資源需求 ### 5.1 硬體資源 | 項目 | UAT 現況 | V10.0 建議 | |------|---------|-----------| | CPU | 4 核心 | 8 核心 | | RAM | 8 GB | 16 GB | | SSD | 100 GB | 200 GB | | 網路 | 1 Gbps | 維持 | ### 5.2 軟體授權 | 軟體 | 類型 | 費用 | |------|------|------| | K3s | 開源 | 免費 | | Prometheus/Grafana | 開源 | 免費 | | Superset/Metabase | 開源 | 免費 | | GitLab CE | 開源 | 免費 | | HashiCorp Vault | 開源 | 免費 | | ModSecurity | 開源 | 免費 | ### 5.3 人力需求 | 角色 | 投入時間 | 任務 | |------|---------|------| | DevOps 工程師 | 50% | 自動化、監控、CI/CD | | 後端開發 | 30% | API 優化、測試 | | 資料分析師 | 20% | BI 報表、資料品質 | --- ## 六、附錄 ### 6.1 相關文檔 - [AGENTS.md](../AGENTS.md) - Codex 專案入口 - [CONSTITUTION.md](../CONSTITUTION.md) - 專案憲法 - [DEPLOYMENT_WORKFLOW.md](DEPLOYMENT_WORKFLOW.md) - 部署流程 ### 6.2 變更記錄 | 日期 | 版本 | 變更內容 | |------|------|---------| | 2026-02-14 | Draft | 初版計畫提案 | --- **文件結束** *本計畫需經技術評審與管理層核准後實施。*