31 lines
1.1 KiB
SQL
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;
|