Files
supply-intelligence/migrations/0002_admission.sql

70 lines
2.6 KiB
MySQL
Raw Normal View History

-- Migration 0002: Admission Testing & Model Candidates
-- Adds model_candidates table and supply_packages draft support
CREATE TABLE IF NOT EXISTS supply_intelligence_model_candidates (
candidate_id TEXT PRIMARY KEY,
account_id BIGINT NOT NULL,
platform TEXT NOT NULL,
model TEXT NOT NULL,
status TEXT NOT NULL DEFAULT 'pending_admission',
source TEXT NOT NULL DEFAULT 'official_api',
reason_code TEXT DEFAULT '',
failure_summary TEXT DEFAULT '',
discovered_at TIMESTAMPTZ NOT NULL,
last_test_at TIMESTAMPTZ,
updated_at TIMESTAMPTZ NOT NULL,
version BIGINT NOT NULL DEFAULT 1,
UNIQUE(platform, model)
);
CREATE INDEX idx_candidates_status ON supply_intelligence_model_candidates(status);
CREATE INDEX idx_candidates_platform ON supply_intelligence_model_candidates(platform);
CREATE INDEX idx_candidates_discovered ON supply_intelligence_model_candidates(discovered_at DESC);
2026-05-12 18:49:52 +08:00
CREATE SEQUENCE IF NOT EXISTS admission_test_id_seq;
CREATE TABLE IF NOT EXISTS supply_intelligence_admission_test_logs (
test_id BIGINT PRIMARY KEY DEFAULT nextval('admission_test_id_seq'),
candidate_id TEXT NOT NULL REFERENCES supply_intelligence_model_candidates(candidate_id),
status TEXT NOT NULL,
failure_code TEXT,
failure_summary TEXT,
tested_at TIMESTAMPTZ NOT NULL,
version BIGINT NOT NULL DEFAULT 1
);
2026-05-12 18:49:52 +08:00
CREATE SEQUENCE IF NOT EXISTS supply_package_id_seq;
CREATE TABLE IF NOT EXISTS supply_intelligence_supply_packages (
package_id BIGINT PRIMARY KEY DEFAULT nextval('supply_package_id_seq'),
platform TEXT NOT NULL,
model TEXT NOT NULL,
status TEXT NOT NULL DEFAULT 'draft',
source TEXT NOT NULL DEFAULT 'si_auto',
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT now(),
version BIGINT NOT NULL DEFAULT 1,
UNIQUE(platform, model)
);
-- New fields to extend routing states (via migration, not replacement)
-- routing_states already has account_id as PK; add probe_execution_logs
2026-05-12 18:49:52 +08:00
CREATE SEQUENCE IF NOT EXISTS probe_log_id_seq;
CREATE TABLE IF NOT EXISTS supply_intelligence_probe_execution_logs (
log_id BIGINT PRIMARY KEY DEFAULT nextval('probe_log_id_seq'),
account_id BIGINT NOT NULL,
platform TEXT NOT NULL,
probe_result TEXT NOT NULL,
failure_class TEXT,
http_status INTEGER,
latency_ms INTEGER,
risk_score INTEGER NOT NULL,
evaluated_transition TEXT NOT NULL,
executed_at TIMESTAMPTZ NOT NULL,
request_id TEXT NOT NULL,
version BIGINT NOT NULL DEFAULT 1
);
CREATE INDEX idx_probe_logs_account_time ON supply_intelligence_probe_execution_logs(account_id, executed_at DESC);