import type { SlackMessage } from './weekly-report' export type SlackResult = | { ok: true } | { ok: false, reason: 'not_configured' | 'rejected', detail?: string } export function slackWebhook(): string | undefined { const url = process.env.SLACK_WEBHOOK_URL?.trim() return url === '' ? undefined : url } export async function sendToSlack(message: SlackMessage, webhook = slackWebhook()): Promise { if (!webhook) { return { ok: false, reason: 'not_configured' } } const response = await fetch(webhook, { method: 'POST', headers: { 'content-type': 'application/json' }, body: JSON.stringify(message), }) if (!response.ok) { return { ok: false, reason: 'rejected', detail: `${response.status} ${await response.text()}` } } return { ok: true } }