towerops/priv/repo
Graham McIntie 90af7ac0d1 feat: alert storm correlation & suppression (TOW-13)
- StormDetector GenServer: sliding-window per org, >10 alerts/min triggers
  suppression mode with single summary notification
- Site correlation: >3 devices at same site down within 120s creates
  single 'Site Outage' alert instead of N individual alerts
- Notification rate limiter: max 5 per user per 15min window, excess
  batched into digest via AlertDigestWorker
- PagerDuty client: retry with exponential backoff on 429, respects
  Retry-After header
- Batch maintenance checks: new Maintenance.devices_in_maintenance/1
  takes list of device_ids, returns MapSet (single query vs N queries)
- Migration: alert_storms, site_outages, notification_digests tables
  plus site_outage_id/storm_suppressed on alerts
- DeviceMonitorWorker integrates storm detection and site correlation
  before creating alerts
- Tests for StormDetector, SiteCorrelation, NotificationRateLimiter,
  and batch maintenance checks
2026-03-15 14:29:12 -05:00
..
migrations feat: alert storm correlation & suppression (TOW-13) 2026-03-15 14:29:12 -05:00
seeds.exs init 2025-12-21 11:10:43 -06:00
seeds_e2e.exs feat: create test organization in e2e seed script 2026-03-08 13:14:56 -05:00
structure.sql fix: add --skip-if-loaded to test alias to prevent prompts 2026-03-05 13:49:51 -06:00