Files
lijiaoqiao/supply-api/sql/postgresql/audit_alerts_v1.sql
2026-04-14 11:52:45 +08:00

42 lines
1.5 KiB
SQL

-- 审计告警持久化表
-- 用途:为 /api/v1/audit/alerts 提供 PostgreSQL-backed 存储,避免 HTTP 层固定回退到内存实现。
CREATE TABLE IF NOT EXISTS audit_alerts (
alert_id TEXT PRIMARY KEY,
alert_name TEXT NOT NULL DEFAULT '',
alert_type TEXT NOT NULL,
alert_level TEXT NOT NULL,
tenant_id BIGINT NOT NULL,
supplier_id BIGINT,
title TEXT NOT NULL,
message TEXT NOT NULL DEFAULT '',
description TEXT NOT NULL DEFAULT '',
event_id TEXT,
event_ids JSONB NOT NULL DEFAULT '[]'::jsonb,
trigger_condition TEXT NOT NULL DEFAULT '',
threshold DOUBLE PRECISION NOT NULL DEFAULT 0,
current_value DOUBLE PRECISION NOT NULL DEFAULT 0,
status TEXT NOT NULL,
resolved_at TIMESTAMPTZ,
resolved_by TEXT,
resolve_note TEXT,
notify_enabled BOOLEAN NOT NULL DEFAULT TRUE,
notify_channels JSONB NOT NULL DEFAULT '[]'::jsonb,
created_at TIMESTAMPTZ NOT NULL,
updated_at TIMESTAMPTZ NOT NULL,
first_seen_at TIMESTAMPTZ NOT NULL,
last_seen_at TIMESTAMPTZ NOT NULL,
metadata JSONB NOT NULL DEFAULT '{}'::jsonb,
tags JSONB NOT NULL DEFAULT '[]'::jsonb
);
CREATE INDEX IF NOT EXISTS idx_audit_alerts_tenant_status_created_at
ON audit_alerts (tenant_id, status, created_at DESC);
CREATE INDEX IF NOT EXISTS idx_audit_alerts_tenant_type_level
ON audit_alerts (tenant_id, alert_type, alert_level);
CREATE INDEX IF NOT EXISTS idx_audit_alerts_supplier_created_at
ON audit_alerts (supplier_id, created_at DESC)
WHERE supplier_id IS NOT NULL;