wulf-pulse/migrations/048_create_morning_summary_tables.sql
lorentz c518eefdb2 feat: Morning NOC Summary adaptive card for Teams
- Add MorningSummaryService with Zabbix aggregation and adaptive card builder
- Add webhook delivery system with Teams incoming webhooks
- Add admin UI at /admin/morning-summary for webhook/config management
- Add API routes: /send, /test, /webhooks, /webhooks/[id], /config, /history
- Register morning-summary cron job in SyncScheduler (Mon-Fri 6:30 AM)
- Add outages_only filter (Unavailable triggers only)
- Fix host resolution: use getTriggerEnabledHosts to exclude disabled hosts
- Fix resolved events: event.get value:1 scoped to window with r_eventid filter
- Remove emojis from fact rows and section headers in card
- Remove Open Zabbix button (duplicate of View Problems)
- Add migrations: morning_summary_config + morning_summaries tables
- Add outages_only column to morning_summary_config
2026-03-11 09:34:51 -04:00

45 lines
2.3 KiB
SQL

-- Morning Summary: webhooks, config, and run history
CREATE TABLE IF NOT EXISTS morning_summary_webhooks (
id SERIAL PRIMARY KEY,
label TEXT NOT NULL,
webhook_url TEXT NOT NULL,
enabled BOOLEAN NOT NULL DEFAULT true,
last_delivered_at TIMESTAMPTZ,
last_status TEXT,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);
CREATE TABLE IF NOT EXISTS morning_summary_config (
id INTEGER PRIMARY KEY DEFAULT 1 CHECK (id = 1),
weekend_suppression BOOLEAN NOT NULL DEFAULT true,
monday_extended_window BOOLEAN NOT NULL DEFAULT true,
severity_filter INTEGER NOT NULL DEFAULT 2,
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);
INSERT INTO morning_summary_config (id, weekend_suppression, monday_extended_window, severity_filter)
VALUES (1, true, true, 2)
ON CONFLICT (id) DO NOTHING;
CREATE TABLE IF NOT EXISTS morning_summaries (
id SERIAL PRIMARY KEY,
generated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
window_from TIMESTAMPTZ NOT NULL,
window_to TIMESTAMPTZ NOT NULL,
open_count INTEGER NOT NULL DEFAULT 0,
resolved_count INTEGER NOT NULL DEFAULT 0,
mttr_minutes INTEGER,
clients_affected TEXT[] NOT NULL DEFAULT '{}',
is_weekend_window BOOLEAN NOT NULL DEFAULT false,
card_payload JSONB,
delivery_status JSONB NOT NULL DEFAULT '{}'
);
CREATE INDEX IF NOT EXISTS idx_morning_summaries_generated_at ON morning_summaries(generated_at DESC);
INSERT INTO morning_summary_webhooks (label, webhook_url, enabled) VALUES
('Technical / On-Call', 'https://appriver3651004158.webhook.office.com/webhookb2/43394fff-d546-440f-ae34-eed04c5bcd5d@1c260a52-b84d-4b7a-a179-44971dbc3949/IncomingWebhook/fe9e1350791f4923bdbd56c076eae6ed/ee54b2ef-4f27-4188-b865-47fda0eae4d1/V2y29hRVISyBYOdDq6dPs-ekvlhqCF6XGE3yUUFxt1dKQ1', true),
('Technical / Outages-Issues','https://appriver3651004158.webhook.office.com/webhookb2/43394fff-d546-440f-ae34-eed04c5bcd5d@1c260a52-b84d-4b7a-a179-44971dbc3949/IncomingWebhook/b7cf42691520467986db5a993dcd07b6/ee54b2ef-4f27-4188-b865-47fda0eae4d1/V2kdADKBhv3h3CfOfeIbe3O6HI5hIh4BRVX5UMqIxhLE81', false),
('Finance (Testing)', 'https://appriver3651004158.webhook.office.com/webhookb2/033405b3-b02e-4ce5-a200-4a3b9f387c92@1c260a52-b84d-4b7a-a179-44971dbc3949/IncomingWebhook/5fe8882c1c0342a7bbe91d763abbca57/ee54b2ef-4f27-4188-b865-47fda0eae4d1/V2rSVLy80XTdPJlBJVzUBYrMyrTi_Tmts46dA8BZjlPaw1', false)
ON CONFLICT DO NOTHING;