-- Zentrales Audit-Log-Modell (AUD-01, siehe core-kanban/tickets/AUD-01.md). -- Getrennt vom allgemeinen Anwendungs-Log (Akzeptanzkriterium 2): eigene -- Tabelle, eigenes Paket (internal/audit), kein Log-Framework. -- tenant_slug ist NOT NULL + darf nicht leer sein (Akzeptanzkriterium 2 / -- Pruefung 2) — mandantenuebergreifende Ereignisse nutzen den reservierten -- Wert 'system', niemals NULL oder leeren String. CREATE TABLE audit_events ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), occurred_at TIMESTAMPTZ NOT NULL DEFAULT now(), tenant_slug TEXT NOT NULL CHECK (tenant_slug <> ''), actor TEXT NOT NULL CHECK (actor <> ''), action TEXT NOT NULL CHECK (action <> ''), target TEXT NOT NULL, metadata JSONB NOT NULL DEFAULT '{}'::jsonb ); CREATE INDEX audit_events_tenant_slug_idx ON audit_events (tenant_slug, occurred_at);