3.6 KiB
3.6 KiB
Multi-Channel Delivery (Slack, Teams, Email, Webhooks)
Module
Notifier
Status
IMPLEMENTED
Description
Multi-channel notification delivery with Slack, Webhook connectors (and PagerDuty in Notifier), with snapshot testing and error handling.
Implementation Details
- IChannelAdapter interface:
src/Notifier/StellaOps.Notifier/StellaOps.Notifier.Worker/Channels/IChannelAdapter.cs--DispatchAsync(sends notification via channel),CheckHealthAsync(verifies channel connectivity), typed byNotifyChannelType - ChannelAdapterFactory:
src/Notifier/StellaOps.Notifier/StellaOps.Notifier.Worker/Channels/ChannelAdapterFactory.cs-- resolves channel adapters by type,GetAdapter/GetAllAdaptersfor DI-based adapter registry - SlackChannelAdapter:
src/Notifier/StellaOps.Notifier/StellaOps.Notifier.Worker/Channels/SlackChannelAdapter.cs-- Slack delivery adapter - WebhookChannelAdapter:
src/Notifier/StellaOps.Notifier/StellaOps.Notifier.Worker/Channels/WebhookChannelAdapter.cs-- generic webhook delivery adapter - ChatWebhookChannelAdapter:
src/Notifier/StellaOps.Notifier/StellaOps.Notifier.Worker/Channels/ChatWebhookChannelAdapter.cs-- chat-specific webhook adapter (Teams, Discord, etc.) - PagerDutyChannelAdapter:
src/Notifier/StellaOps.Notifier/StellaOps.Notifier.Worker/Channels/PagerDutyChannelAdapter.cs-- PagerDuty incident creation adapter - OpsGenieChannelAdapter:
src/Notifier/StellaOps.Notifier/StellaOps.Notifier.Worker/Channels/OpsGenieChannelAdapter.cs-- OpsGenie alert adapter - EmailChannelAdapter:
src/Notifier/StellaOps.Notifier/StellaOps.Notifier.Worker/Channels/EmailChannelAdapter.cs-- email delivery adapter - InAppChannelAdapter:
src/Notifier/StellaOps.Notifier/StellaOps.Notifier.Worker/Channels/InAppChannelAdapter.cs-- in-app notification adapter - WebhookChannelDispatcher:
src/Notifier/StellaOps.Notifier/StellaOps.Notifier.Worker/Dispatch/WebhookChannelDispatcher.cs-- dispatches to webhook-based channels - IWebhookSecurityService:
src/Notifier/StellaOps.Notifier/StellaOps.Notifier.Worker/Security/IWebhookSecurityService.cs-- webhook signature verification - IFallbackHandler:
src/Notifier/StellaOps.Notifier/StellaOps.Notifier.Worker/Fallback/IFallbackHandler.cs-- fallback when primary channel fails - HttpEgressSloSink:
src/Notifier/StellaOps.Notifier/StellaOps.Notifier.Worker/Processing/HttpEgressSloSink.cs-- SLO tracking for HTTP egress - Templates:
src/Notifier/StellaOps.Notifier/StellaOps.Notifier.WebService/offline/notifier/templates/-- Slack and webhook templates for risk, attestation, deprecation events - Tests:
src/Notifier/StellaOps.Notifier/StellaOps.Notifier.Tests/Channels/WebhookChannelAdapterTests.cs,Dispatch/WebhookChannelDispatcherTests.cs,Dispatch/SimpleTemplateRendererTests.cs,Security/WebhookSecurityServiceTests.cs,Fallback/FallbackHandlerTests.cs,HttpEgressSloSinkTests.cs - Source: Feature matrix scan
E2E Test Plan
- Verify Slack channel adapter delivers notifications with Block Kit formatting
- Test webhook channel adapter posts to configured URLs with HMAC signature
- Verify PagerDuty adapter creates incidents with correct severity mapping
- Test OpsGenie adapter creates alerts with priority
- Verify email adapter sends with subject and rendered body
- Test in-app notification adapter records notifications for UI retrieval
- Verify channel health checks detect unreachable endpoints
- Test fallback handler routes to secondary channel on primary failure
- Verify egress SLO tracking records delivery latency