Built-in PagerDuty-equivalent system for on-call scheduling and alert escalation. Users can now manage schedules, rotation layers, overrides, and escalation policies directly in the app alongside PagerDuty. - On-call schedules with rotation layers (daily/weekly/custom), member management, and temporary overrides - Escalation policies with ordered rules, timeout-based escalation, and user/schedule targets - Automatic escalation via Oban worker with configurable repeat count - Email notifications via Swoosh for on-call alerts - Resolver computes who's on-call from layer stacking and overrides - AlertNotificationWorker integration: starts escalation alongside PagerDuty, acknowledges/resolves incidents on alert state changes - Device and organization schemas support escalation_policy_id - Escalation policy picker on device form - Schedules nav item with tabbed index (schedules + escalation policies) - Full CRUD UI for schedules, layers, members, overrides, rules, targets - 62 LiveView tests, 56 context/schema/resolver/escalation tests - 26 E2E Playwright tests for smoke and critical path coverage
18 lines
461 B
Elixir
18 lines
461 B
Elixir
defmodule ToweropsWeb.EscalationPolicyLive.Index do
|
|
@moduledoc false
|
|
use ToweropsWeb, :live_view
|
|
|
|
alias Towerops.OnCall
|
|
|
|
@impl true
|
|
def mount(_params, _session, socket) do
|
|
org_id = socket.assigns.current_scope.organization.id
|
|
policies = OnCall.list_escalation_policies(org_id)
|
|
|
|
{:ok,
|
|
socket
|
|
|> assign(:page_title, t("Escalation Policies"))
|
|
|> assign(:active_page, "schedules")
|
|
|> assign(:policies, policies)}
|
|
end
|
|
end
|