- 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
45 lines
2.3 KiB
SQL
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;
|