admin
91f609cf92
feat(02-03): create alertService with deduplication and email
- evaluateAndAlert() iterates ProbeResults and skips healthy probes
- Maps 'down' -> 'service_down', 'degraded' -> 'service_degraded'
- Deduplication via AlertEventModel.findRecentByService with configurable cooldown
- Creates alert_events row before sending email (suppression skips both)
- Recipient read from process.env.EMAIL_WEEKLY_RECIPIENT (never hardcoded)
- createTransporter() called inside function scope (Firebase Secret timing fix)
- Email failures caught and logged, never re-thrown
2026-02-24 14:28:20 -05:00
..
2025-11-09 21:07:22 -05:00
2026-02-24 14:28:20 -05:00
2025-11-09 21:07:22 -05:00
2026-02-24 14:28:20 -05:00
2025-11-09 21:07:22 -05:00
2025-11-09 21:07:22 -05:00
2025-11-09 21:07:22 -05:00
2025-11-09 21:07:22 -05:00
2025-11-09 21:07:22 -05:00
2025-11-09 21:07:22 -05:00
2025-11-09 21:07:22 -05:00
2025-11-09 21:07:22 -05:00
2025-11-09 21:07:22 -05:00
2025-11-09 21:07:22 -05:00
2025-11-09 21:07:22 -05:00
2025-11-09 21:07:22 -05:00
2025-11-09 21:07:22 -05:00
2026-02-23 22:28:45 -05:00
2025-11-09 21:07:22 -05:00
2025-11-09 21:07:22 -05:00
2025-11-09 21:07:22 -05:00
2025-11-09 21:07:22 -05:00
2026-02-24 14:28:20 -05:00
2025-11-09 21:07:22 -05:00