SQL88 linhas3.002 bytes
apps/worker/src/db/schema.sql
SHA-256
cfe4eae4b074440b11e3006d038723620851b43f594e460bf3775a4138cc6a88
Somente leiturafonte-acf635076da2
-- Senado Ranking D1 Schema (IDS v2)
-- Snapshots do ranking IDS calculado pelo cron
CREATE TABLE IF NOT EXISTS ranking_snapshots (
id INTEGER PRIMARY KEY AUTOINCREMENT,
computed_at TEXT NOT NULL DEFAULT (datetime('now')),
senador_cod TEXT NOT NULL,
nome TEXT NOT NULL,
partido TEXT,
uf TEXT,
bloco TEXT,
foto_url TEXT,
-- Janela temporal (Leg 57)
data_inicio_exercicio TEXT,
meses_ativos INTEGER DEFAULT 0,
-- Acomodação parlamentar
auxilio_moradia INTEGER DEFAULT 0,
imovel_funcional INTEGER DEFAULT 0,
-- Dimensões IDS (0–100)
ids_total REAL NOT NULL,
dim_produtividade REAL NOT NULL,
dim_efetividade REAL NOT NULL,
dim_participacao REAL NOT NULL,
dim_fiscalizacao REAL NOT NULL,
dim_ceap REAL NOT NULL,
dim_transparencia REAL NOT NULL,
-- Dados brutos de suporte
autorias_total INTEGER DEFAULT 0,
autorias_aprovadas INTEGER DEFAULT 0,
votacoes_presentes INTEGER DEFAULT 0,
votacoes_total INTEGER DEFAULT 0,
votacoes_comissao_presentes INTEGER DEFAULT 0,
votacoes_comissao_total INTEGER DEFAULT 0,
relatorias_total INTEGER DEFAULT 0,
discursos_total INTEGER DEFAULT 0,
apartes_total INTEGER DEFAULT 0,
ceap_total_ano REAL DEFAULT 0,
ceap_divulgacao REAL DEFAULT 0,
ceap_escritorio REAL DEFAULT 0,
ceap_locomocao REAL DEFAULT 0,
ceap_consultoria REAL DEFAULT 0,
ceap_outros REAL DEFAULT 0,
pct_divulgacao REAL DEFAULT 0,
escritorios_count INTEGER DEFAULT 0,
-- IDS v2: cargos exercidos (informativo + ajuste fiscalização)
cargos_lideranca REAL DEFAULT 0,
cargos_titulos TEXT DEFAULT '[]',
-- IDS v3: shrinkage por tempo de mandato (aplicado direto em produção,
-- faltava aqui e quebrava instalação nova)
status TEXT,
confianca TEXT,
ids_total_bruto REAL,
-- IDS v4: coorte da legislatura + prêmio da Leg 57
em_exercicio INTEGER DEFAULT 1,
data_fim_exercicio TEXT,
elegivel_premio INTEGER DEFAULT 1
);
CREATE INDEX IF NOT EXISTS idx_ranking_computed_at ON ranking_snapshots(computed_at DESC);
CREATE INDEX IF NOT EXISTS idx_ranking_senador_cod ON ranking_snapshots(senador_cod);
-- Cache dos dados de senadores (lista + detalhes)
CREATE TABLE IF NOT EXISTS senadores_cache (
cod TEXT PRIMARY KEY,
nome TEXT NOT NULL,
partido TEXT,
uf TEXT,
bloco TEXT,
foto_url TEXT,
email TEXT,
raw_json TEXT,
cached_at TEXT NOT NULL DEFAULT (datetime('now'))
);
-- Cache dos dados CEAP
CREATE TABLE IF NOT EXISTS ceap_cache (
id INTEGER PRIMARY KEY AUTOINCREMENT,
senador_cod TEXT NOT NULL,
ano INTEGER NOT NULL,
mes INTEGER NOT NULL,
valor_total REAL NOT NULL DEFAULT 0,
raw_json TEXT,
cached_at TEXT NOT NULL DEFAULT (datetime('now')),
UNIQUE(senador_cod, ano, mes)
);
CREATE INDEX IF NOT EXISTS idx_ceap_senador ON ceap_cache(senador_cod, ano);