Локальный audit_log (миграции pg/sqlite), GET /v1/audit, запись на CRUD и async push в auth-portal (source_app=bgp). Co-authored-by: Cursor <cursoragent@cursor.com>
28 lines
794 B
SQL
28 lines
794 B
SQL
CREATE TABLE IF NOT EXISTS audit_log (
|
|
id TEXT PRIMARY KEY,
|
|
tenant_id TEXT NOT NULL,
|
|
event_id TEXT NOT NULL,
|
|
source_app TEXT NOT NULL DEFAULT 'bgp',
|
|
action TEXT NOT NULL,
|
|
severity TEXT NOT NULL DEFAULT 'info',
|
|
actor_user_id TEXT,
|
|
actor_email TEXT,
|
|
actor_name TEXT,
|
|
actor_api_key_prefix TEXT,
|
|
target_type TEXT,
|
|
target_id TEXT,
|
|
summary TEXT NOT NULL,
|
|
details_json TEXT,
|
|
ip TEXT,
|
|
created_at TEXT NOT NULL,
|
|
portal_pushed_at TEXT
|
|
);
|
|
|
|
CREATE UNIQUE INDEX IF NOT EXISTS idx_audit_log_event_id ON audit_log (event_id);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_audit_log_tenant_created
|
|
ON audit_log (tenant_id, created_at DESC);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_audit_log_tenant_action
|
|
ON audit_log (tenant_id, action, created_at DESC);
|