veylant/migrations/clickhouse/000001_audit_logs.sql
2026-02-23 13:35:04 +01:00

31 lines
1.1 KiB
SQL

-- Sprint 6: Immutable audit log table in ClickHouse.
-- Applied idempotently at startup via applyClickHouseDDL().
CREATE TABLE IF NOT EXISTS audit_logs (
request_id String,
tenant_id LowCardinality(String),
user_id String,
timestamp DateTime64(3, 'UTC'),
model_requested LowCardinality(String),
model_used LowCardinality(String),
provider LowCardinality(String),
department LowCardinality(String),
user_role LowCardinality(String),
prompt_hash FixedString(64),
response_hash FixedString(64),
prompt_anonymized String,
sensitivity_level LowCardinality(String),
token_input UInt32,
token_output UInt32,
token_total UInt32,
cost_usd Float64,
latency_ms UInt32,
status LowCardinality(String),
error_type LowCardinality(String),
pii_entity_count UInt16,
stream Bool
) ENGINE = MergeTree()
PARTITION BY toYYYYMM(timestamp)
ORDER BY (tenant_id, timestamp)
TTL timestamp + INTERVAL 90 DAY
SETTINGS index_granularity = 8192;