TS285 linhas5.811 bytes
apps/web/src/lib/types.ts
SHA-256
e96bdd9561b513e2beecfb1bdb7aae268f066d84e265b258aaf5b6b2879bc9a5
Somente leiturafonte-acf635076da2
export type SenadorStatus =
| 'titular_pleno'
| 'titular_voltou'
| 'suplente_efetivo'
| 'suplente_recente'
| 'recente'
| 'afastado'
export type Confianca = 'alta' | 'media' | 'baixa'
export type FilterPreset =
| 'premio'
| 'geral'
| 'ativos'
| 'titulares'
| 'suplentes'
| 'recentes'
| 'encerrados'
| 'afastados'
export interface IdsScore {
senadorCod: string
nome: string
partido: string
uf: string
bloco: string
fotoUrl?: string
dataInicioExercicio?: string
mesesAtivos?: number
auxilioMoradia?: boolean
imovelFuncional?: boolean
idsTotal: number
dimProdutividade: number
dimEfetividade: number
dimParticipacao: number
dimFiscalizacao: number
dimCeap: number
dimTransparencia: number
autoriasTotal: number
autoriasAprovadas: number
votacaoPresentes: number
votacoesTotal: number
relatoriasTotal: number
discursosTotal: number
apartesTotal: number
votacoesComissaoPresentes?: number
votacoesComissaoTotal?: number
ceapTotalAno: number
ceapDivulgacao?: number
ceapEscritorio?: number
ceapLocomocao?: number
ceapConsultoria?: number
ceapOutros?: number
pctDivulgacao?: number
escritoriosCount?: number
cargosLideranca?: number
cargosTitulos?: string[]
posicao?: number
totalSenadores?: number
status?: SenadorStatus
confianca?: Confianca
idsTotalBruto?: number
// IDS v4: coorte da legislatura + prêmio da Leg 57
emExercicio?: boolean
dataFimExercicio?: string
elegivelPremio?: boolean
}
export interface SenadorAfastado {
codigo: string
nome: string
partido: string
uf: string
fotoUrl?: string
motivo: string
dataInicio: string
dataFim?: string
}
export interface RankingResponse {
total: number
filter?: FilterPreset
ordenar?: string
computedAt?: string | null
empty?: boolean
data: IdsScore[]
}
export interface AfastadosResponse {
total: number
filter: 'afastados'
data: SenadorAfastado[]
}
export interface MetaResponse {
partidos: string[]
ufs: string[]
blocos: string[]
statuses?: string[]
filtros?: FilterPreset[]
ordenacao?: string[]
premio?: {
legislatura: number
mesesMinimos: number
elegiveis: number
total: number
}
}
// ─── Detalhe ──────────────────────────────────────────────────────────────
export interface ListResultBase<T> {
codigo: string
total: number
pagina: number
porPagina: number
data: T[]
fonte: string
atualizadoEm: string
}
export interface AutoriaItem {
idProcesso: number
identificacao: string
ementa: string
dataApresentacao: string
sigla: string
numero: string
ano: string
autoriaTexto?: string
primeiroAutor?: boolean
situacao?: string
ultimoLocal?: string
url?: string
}
export interface RelatoriaItem {
idProcesso: number
codigoMateria?: number
identificacao?: string
ementa: string
comissaoCodigo?: number
comissaoSigla?: string
comissaoNome?: string
papel: string
dataDesignacao: string
dataDestituicao?: string
encerramento?: string
url?: string
}
export interface VotacaoItem {
codigoSessao: number
codigoVotacao: number
dataSessao: string
identificacao: string
ementa: string
descricaoVotacao: string
voto: string
resultado?: string
url?: string
}
export interface ComissaoItem {
codigo: string
sigla: string
nome: string
casa?: string
participacao: string
dataInicio: string
dataFim?: string
ativo: boolean
}
export interface CargoItem {
cargo: string
comissaoCodigo?: string
comissaoSigla?: string
comissaoNome?: string
casa?: string
dataInicio: string
dataFim?: string
ativo: boolean
}
export interface DiscursoItem {
codigoPronunciamento: string
data: string
casa: string
tipoUsoPalavra: string
resumo: string
urlTextoIntegral?: string
urlTextoBinario?: string
}
export interface DespesaItem {
id: number
ano: number
mes: number
data?: string
tipoDocumento: string
tipoDespesa: string
cpfCnpj: string
fornecedor: string
documento?: string
detalhamento?: string
valor: number
}
export interface DespesasResumo {
totalAno: number
totalTransacoes: number
porTipo: Array<{ tipo: string; total: number; transacoes: number }>
porMes: Array<{ mes: number; total: number }>
topFornecedores: Array<{ nome: string; cpfCnpj: string; total: number; transacoes: number }>
}
export interface DespesasResponse extends ListResultBase<DespesaItem> {
resumo: DespesasResumo
}
export interface PerfilSenador {
codigo: string
nome: string
partido?: string
uf?: string
email?: string
telefones?: string[]
fotoUrl?: string
paginaSenado?: string
endereco?: string
mandatos: Array<{
legislatura: string
inicio: string
fim?: string
participacao: string
partido?: string
suplentes?: Array<{ descricao: string; nome: string }>
}>
filiacoes: Array<{ partido: string; dataFiliacao: string; dataDesfiliacao?: string }>
profissoes: string[]
formacao: Array<{ nivel: string; curso: string; instituicao?: string }>
fonte: string
atualizadoEm: string
}
export type AbaSenador =
| 'resumo'
| 'autorias'
| 'relatorias'
| 'votacoes'
| 'comissoes'
| 'cargos'
| 'discursos'
| 'apartes'
| 'despesas'
| 'perfil'
export interface CeapMes {
mes: number
ano: number
valorTotal: number
}
export interface CeapResponse {
codigo: string
ano: number
meses: CeapMes[]
}
export type SortKey = keyof Pick<
IdsScore,
| 'idsTotal'
| 'dimProdutividade'
| 'dimEfetividade'
| 'dimParticipacao'
| 'dimFiscalizacao'
| 'dimCeap'
| 'dimTransparencia'
| 'nome'
| 'partido'
| 'uf'
>
export type SortDir = 'asc' | 'desc'