{
  "name": "GCP PROD 健康監控",
  "nodes": [
    {
      "parameters": {
        "rule": { "interval": [{ "field": "minutes", "minutesInterval": 5 }] }
      },
      "id": "schedule-trigger",
      "name": "每 5 分鐘檢查",
      "type": "n8n-nodes-base.scheduleTrigger",
      "typeVersion": 1.2,
      "position": [250, 300]
    },
    {
      "parameters": {
        "jsCode": "// GCP PROD 環境關鍵頁面\nconst pages = [\n  { name: '首頁', url: 'https://momo.wooo.work/' },\n  { name: '每日銷售', url: 'https://momo.wooo.work/daily_sales' },\n  { name: '健康檢查', url: 'https://momo.wooo.work/health' }\n];\n\nreturn pages.map(p => ({ json: p }));"
      },
      "id": "define-pages",
      "name": "定義檢查頁面",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [470, 300]
    },
    {
      "parameters": {
        "url": "={{ $json.url }}",
        "options": {
          "timeout": 15000,
          "redirect": { "redirect": { "followRedirects": true } }
        }
      },
      "id": "http-check",
      "name": "HTTP 檢查",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.1,
      "position": [690, 300],
      "continueOnFail": true
    },
    {
      "parameters": {
        "jsCode": "const items = $input.all();\nconst errors = [];\n\nfor (const item of items) {\n  const data = item.json;\n  const statusCode = data.statusCode || data.status || 0;\n  const hasError = data.error || statusCode >= 400 || statusCode === 0;\n  \n  if (hasError) {\n    errors.push({\n      name: data.name || '未知頁面',\n      url: data.url || '未知',\n      status: statusCode,\n      error: data.error?.message || data.message || '連線失敗'\n    });\n  }\n}\n\nif (errors.length === 0) {\n  return [{ json: { hasErrors: false, message: '所有頁面正常' } }];\n}\n\nconst errorText = errors.map(e => `❌ ${e.name}: ${e.status} - ${e.error}`).join('\\n');\nconst alertText = `🔴 *【PROD】MOMO Pro 頁面異常*\\n\\n🏢 環境: 🟥 *正式環境* (momo.wooo.work)\\n\\n${errorText}\\n\\n⚠️ 請立即檢查 GCP 服務狀態！`;\n\nreturn [{ json: { \n  hasErrors: true, \n  errors: errors,\n  telegramBody: {\n    chat_id: '5619078117',\n    text: alertText,\n    parse_mode: 'Markdown'\n  }\n} }];"
      },
      "id": "analyze-results",
      "name": "分析結果",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [910, 300]
    },
    {
      "parameters": {
        "conditions": {
          "options": { "caseSensitive": true },
          "conditions": [{
            "id": "has-errors",
            "leftValue": "={{ $json.hasErrors }}",
            "rightValue": true,
            "operator": { "type": "boolean", "operation": "equals" }
          }],
          "combinator": "and"
        }
      },
      "id": "if-errors",
      "name": "有錯誤?",
      "type": "n8n-nodes-base.if",
      "typeVersion": 2,
      "position": [1130, 300]
    },
    {
      "parameters": {
        "method": "POST",
        "url": "https://api.telegram.org/bot8075645931:AAH-EGKMo8ZC4QJs-Nc1_0s92xHrGdQvdpg/sendMessage",
        "sendBody": true,
        "specifyBody": "json",
        "jsonBody": "={{ JSON.stringify($json.telegramBody) }}"
      },
      "id": "telegram-alert",
      "name": "發送告警",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.1,
      "position": [1350, 200]
    },
    {
      "parameters": {},
      "id": "healthy-noop",
      "name": "正常 (不處理)",
      "type": "n8n-nodes-base.noOp",
      "typeVersion": 1,
      "position": [1350, 400]
    }
  ],
  "connections": {
    "每 5 分鐘檢查": { "main": [[{ "node": "定義檢查頁面", "type": "main", "index": 0 }]] },
    "定義檢查頁面": { "main": [[{ "node": "HTTP 檢查", "type": "main", "index": 0 }]] },
    "HTTP 檢查": { "main": [[{ "node": "分析結果", "type": "main", "index": 0 }]] },
    "分析結果": { "main": [[{ "node": "有錯誤?", "type": "main", "index": 0 }]] },
    "有錯誤?": {
      "main": [
        [{ "node": "發送告警", "type": "main", "index": 0 }],
        [{ "node": "正常 (不處理)", "type": "main", "index": 0 }]
      ]
    }
  },
  "settings": { "executionOrder": "v1" },
  "staticData": null,
  "tags": [
    { "name": "監控", "id": "monitoring" },
    { "name": "PROD", "id": "prod" },
    { "name": "GCP", "id": "gcp" }
  ],
  "triggerCount": 1,
  "meta": { "instanceId": "momo-n8n" }
}
