variable "name" {
  description = "Название цепочки эскалации"
  type        = string
}

variable "team_id" {
  description = "ID команды в Grafana IRM (опционально)"
  type        = string
  default     = null
}

variable "steps" {
  description = <<-EOT
    Шаги эскалации по порядку. position назначается автоматически (0, 1, 2...).

    Доступные типы (type):
      notify_persons                  — уведомить конкретных пользователей
      notify_person_next_each_time    — round-robin по списку
      notify_on_call_from_schedule    — кто сейчас на дежурстве по расписанию
      notify_user_group               — уведомить группу пользователей
      notify_team_members             — уведомить команду
      wait                            — пауза (duration_seconds секунд)
      trigger_webhook                 — вызвать webhook
      resolve                         — авторезолв инцидента
      repeat_escalation               — повторить цепочку с начала

    Пример:
      steps = [
        { type = "notify_on_call_from_schedule", notify_on_call_from_schedule = "<schedule_id>" },
        { type = "wait", duration_seconds = 300 },
        { type = "notify_persons", persons_to_notify = ["<user_id>"] },
        { type = "repeat_escalation" },
      ]
  EOT
  type = list(object({
    type                             = string
    duration_seconds                 = optional(number, null)
    persons_to_notify                = optional(list(string), null)
    persons_to_notify_next_each_time = optional(list(string), null)
    notify_on_call_from_schedule     = optional(string, null)
    group_to_notify                  = optional(string, null)
    action_to_trigger                = optional(string, null)
    notify_to_team_members           = optional(string, null)
    important                        = optional(bool, false)
  }))

  validation {
    condition = alltrue([
      for s in var.steps : contains([
        "notify_persons",
        "notify_person_next_each_time",
        "notify_on_call_from_schedule",
        "notify_user_group",
        "notify_team_members",
        "wait",
        "trigger_webhook",
        "resolve",
        "repeat_escalation",
        "declare_incident",
        "notify_whole_channel",
        "notify_if_time_from_to",
        "notify_if_num_alerts_in_window",
      ], s.type)
    ])
    error_message = "Недопустимый тип шага эскалации. Проверь список допустимых значений в описании переменной."
  }
}
