bmc_hub/migrations/1027_ai_model_benchmarks.sql

42 lines
1.5 KiB
MySQL
Raw Normal View History

CREATE TABLE IF NOT EXISTS ai_benchmark_runs (
id BIGSERIAL PRIMARY KEY,
status VARCHAR(24) NOT NULL DEFAULT 'queued',
models JSONB NOT NULL DEFAULT '[]'::jsonb,
test_keys JSONB NOT NULL DEFAULT '[]'::jsonb,
total_cases INTEGER NOT NULL DEFAULT 0,
completed_cases INTEGER NOT NULL DEFAULT 0,
created_by INTEGER REFERENCES users(user_id) ON DELETE SET NULL,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
started_at TIMESTAMPTZ,
completed_at TIMESTAMPTZ,
error_text TEXT
);
CREATE TABLE IF NOT EXISTS ai_benchmark_results (
id BIGSERIAL PRIMARY KEY,
run_id BIGINT NOT NULL REFERENCES ai_benchmark_runs(id) ON DELETE CASCADE,
model VARCHAR(160) NOT NULL,
test_key VARCHAR(100) NOT NULL,
test_name VARCHAR(200) NOT NULL,
category VARCHAR(80) NOT NULL,
score INTEGER NOT NULL DEFAULT 0,
max_score INTEGER NOT NULL DEFAULT 0,
duration_ms INTEGER NOT NULL DEFAULT 0,
prompt_tokens INTEGER,
response_tokens INTEGER,
tokens_per_second NUMERIC(10, 2),
passed_checks JSONB NOT NULL DEFAULT '[]'::jsonb,
failed_checks JSONB NOT NULL DEFAULT '[]'::jsonb,
response_json JSONB,
response_text TEXT,
error_text TEXT,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
UNIQUE(run_id, model, test_key)
);
CREATE INDEX IF NOT EXISTS idx_ai_benchmark_runs_created
ON ai_benchmark_runs(created_at DESC);
CREATE INDEX IF NOT EXISTS idx_ai_benchmark_results_run
ON ai_benchmark_results(run_id, model);