# 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 | 初版計畫提案 |

---

**文件結束**

*本計畫需經技術評審與管理層核准後實施。*
