-- OPS-05: Schwellwert-Regeln fuer Alerting auf den aus OPS-03 aggregierten
-- Metriken. Lebt wie config_values/notification_jobs (CFG-01/02) in der
-- zentralen Registry-DB — modulübergreifende Betriebskonfiguration, keine
-- Mandanten-Geschaeftsdaten.
CREATE TABLE alert_rules (
    id            UUID PRIMARY KEY DEFAULT gen_random_uuid(),
    metric_name   TEXT NOT NULL,
    comparison    TEXT NOT NULL CHECK (comparison IN ('gt', 'lt')),
    threshold     DOUBLE PRECISION NOT NULL,
    label_filters JSONB NOT NULL DEFAULT '{}'::jsonb,
    recipient     TEXT NOT NULL,
    description   TEXT NOT NULL DEFAULT '',
    created_at    TIMESTAMPTZ NOT NULL DEFAULT now()
);

-- Haelt fest, wann eine Regel zuletzt tatsaechlich einen Alarm ausgeloest
-- hat (Akzeptanzkriterium 3: Drosselung wiederholter Alarmierung fuer
-- denselben anhaltenden Zustand). rule_key kombiniert Regel-ID mit den
-- tatsaechlichen Label-Werten der ausloesenden Zeitreihe, damit dieselbe
-- Regel fuer unterschiedliche Tenants/Module unabhaengig gedrosselt wird.
CREATE TABLE alert_debounce_state (
    rule_key      TEXT PRIMARY KEY,
    last_fired_at TIMESTAMPTZ NOT NULL
);
