#!/usr/bin/env python3
"""
Runner 监控告警配置 - 全部走环境变量，不硬编码

环境变量:
  GITEA_URL / GITEA_REPO / GITEA_TOKEN / GITEA_USERNAME / GITEA_PASSWORD
    （复用 chatops 的 Gitea 配置）

  FEISHU_WEBHOOK_URL
    飞书 webhook 地址（复用 chatops）

  ALERT_RUNNER_OFFLINE_MINUTES
    Runner 离线超过多少分钟触发告警，默认 5 分钟（P1）

  ALERT_DISK_WARN_PERCENT   磁盘告警阈值 P2，默认 85
  ALERT_DISK_CRIT_PERCENT   磁盘告警阈值 P1，默认 90

  ALERT_MEM_WARN_PERCENT    内存告警阈值 P2，默认 90
  ALERT_MEM_DURATION_MINUTES  内存持续超阈值多久告警，默认 5 分钟

  ALERT_QUEUE_PENDING_COUNT   CI 队列积压数量阈值，默认 10
  ALERT_QUEUE_PENDING_MINUTES CI 队列积压持续时间阈值（分钟），默认 10

  ALERT_CHECK_INTERVAL      检测间隔（秒），默认 60
  ALERT_DEDUPE_WINDOW       同一告警去重窗口（秒），默认 1800（30分钟）

  ALERT_P1_ENABLED          P1 告警开关，默认 true
  ALERT_P2_ENABLED          P2 告警开关，默认 true

  RUNNER_MONITOR_OUTPUT_DIR 状态快照输出目录，默认 scripts/ci/runner_monitor/snapshots
"""

import os

# ── Runner 离线告警 ───────────────────────────────────
RUNNER_OFFLINE_MINUTES = int(os.environ.get("ALERT_RUNNER_OFFLINE_MINUTES", "5"))

# ── 磁盘告警 ──────────────────────────────────────────
DISK_WARN_PERCENT = int(os.environ.get("ALERT_DISK_WARN_PERCENT", "85"))
DISK_CRIT_PERCENT = int(os.environ.get("ALERT_DISK_CRIT_PERCENT", "90"))

# ── 内存告警 ──────────────────────────────────────────
MEM_WARN_PERCENT = int(os.environ.get("ALERT_MEM_WARN_PERCENT", "90"))
MEM_DURATION_MINUTES = int(os.environ.get("ALERT_MEM_DURATION_MINUTES", "5"))

# ── 队列积压告警 ──────────────────────────────────────
QUEUE_PENDING_COUNT = int(os.environ.get("ALERT_QUEUE_PENDING_COUNT", "10"))
QUEUE_PENDING_MINUTES = int(os.environ.get("ALERT_QUEUE_PENDING_MINUTES", "10"))

# ── 检测与去重 ────────────────────────────────────────
CHECK_INTERVAL = int(os.environ.get("ALERT_CHECK_INTERVAL", "60"))
DEDUPE_WINDOW = int(os.environ.get("ALERT_DEDUPE_WINDOW", "1800"))

# ── 告警等级开关 ──────────────────────────────────────
P1_ENABLED = os.environ.get("ALERT_P1_ENABLED", "true").lower() == "true"
P2_ENABLED = os.environ.get("ALERT_P2_ENABLED", "true").lower() == "true"

# ── 输出目录 ──────────────────────────────────────────
OUTPUT_DIR = os.environ.get(
    "RUNNER_MONITOR_OUTPUT_DIR",
    "scripts/ci/runner_monitor/snapshots",
)

# ── SSH 配置（后补） ─────────────────────────────────
# SSH 主机列表，格式: user@host:port,user@host2:port
SSH_HOSTS = [h.strip() for h in os.environ.get("RUNNER_SSH_HOSTS", "").split(",") if h.strip()]
SSH_KEY_PATH = os.environ.get("RUNNER_SSH_KEY_PATH", "")
SSH_USER = os.environ.get("RUNNER_SSH_USER", "root")


# ── 告警等级常量 ──────────────────────────────────────
P1 = "P1"
P2 = "P2"
INFO = "INFO"

# 等级对应飞书卡片颜色
LEVEL_COLOR = {
    P1: "red",
    P2: "orange",
    INFO: "blue",
}

LEVEL_EMOJI = {
    P1: "🔥",
    P2: "⚠️",
    INFO: "ℹ️",
}
