Cruzamento entre contratos (grupo TCE-PE "Licitações, Contratos e Convênios", exibido em /contratos) e remessa_instrumentos_juridicos (grupo "RemessaTCEPE", exibido em /remessa/visualizar). O pareamento usa número + ano do contrato/instrumento — não existe chave estrangeira real entre as duas fontes, veja a seção técnica ao final da página.
Quantidade por Ano
Valor Total por Ano
Cobertura do Cruzamento
Divergência de Valor nos Pares Cruzados
Top Unidades — Contratos (LCC)
Top Unidades — RemessaTCEPE
Pares encontrados nas duas bases (mesmo número/ano) cujo valor difere entre as fontes, ordenados pela maior diferença absoluta.
| Nº/Ano | Contratada | Valor (Contratos) | Valor (Remessa) | Diferença | Situação | Estágio (Contratos) | Estágio (Remessa) | TCE-PE |
|---|
Registros de contratos sem correspondente por número/ano em RemessaTCEPE — maiores valores primeiro.
| Nº/Ano | Contratada | Objeto | Valor | Situação | Unidade Gestora | Vigência | TCE-PE |
|---|
Registros de remessa_instrumentos_juridicos sem correspondente por número/ano em Contratos — maiores valores primeiro.
| Nº/Ano | Tipo | Objeto | Valor Global | Estágio | Unidade Jurisdicionada | Vigência | TCE-PE |
|---|
🌐 Origem dos dados
As duas bases são cópias periódicas (mirror) da API pública TCE-PE Dados Abertos, mas de serviços diferentes do mesmo grupo "Licitações, Contratos e Convênios":
• Contratos — serviço Contratos!json, carregado por load_pg.py / sync_worker.py, com integração adicional ao SESuite.
• RemessaTCEPE — serviço Remessa_InstrumentoJuridico!json, carregado por remessa_load_pg.py / remessa_sync_worker.py, sem integração com SESuite.
Por serem endpoints distintos do TCE-PE, os registros podem divergir em cobertura temporal, granularidade e no exato momento da última sincronização de cada lado.
🔗 Como o cruzamento é feito
Não existe chave estrangeira declarada entre contratos e remessa_instrumentos_juridicos — os dois templates de origem já documentam isso como um vínculo textual, não uma FK garantida pela API.
Esta tela pareia os registros por upper(trim(numerocontrato)) = upper(trim(numero)) e anocontrato = ano. É uma aproximação: números de contrato formatados de forma diferente (zeros à esquerda, barras, espaços) não são casados.
Um vínculo alternativo, mais fraco e nem sempre preenchido, é numeroprocessocontratacao/anoprocessocontratacao (Remessa) com codigopl/tipoprocesso/anoprocesso (Contratos) — não utilizado nesta comparação por ser ainda menos confiável.
🗝️ Mapeamento de Colunas Equivalentes
| Significado | Contratos (LCC) | RemessaTCEPE | Observação |
|---|---|---|---|
| Identificador interno | codigocontrato | instrumentojuridicoid | Chaves primárias de cada fonte, não relacionadas entre si |
| Número + ano do contrato | numerocontrato, anocontrato | numero, ano | Chave usada no cruzamento desta tela |
| Valor | valor | valorglobalatualizado | Mesmo propósito semântico, nomes diferentes |
| Objeto | objeto | objeto | Texto livre, comparável apenas por similaridade |
| Início de vigência | vigencia_inicio | datainiciovigencia | — |
| Fim de vigência | vigencia_fim | datafimvigencia | — |
| Situação / Estágio | situacao, estagio | estagioinstrumentojuridiconome | Vocabulários distintos entre as fontes |
| Contratada | razaosocial, cpf_cnpj | remessa_instrumento_participantes.participantenome/documento | Na Remessa fica em tabela separada de participantes |
| Unidade responsável | unidadegestora | unidadejurisdicionadanome | — |
| Referência ao processo licitatório | codigopl, tipoprocesso, anoprocesso | numeroprocessocontratacao, anoprocessocontratacao | Vínculo textual mais fraco, não usado nesta comparação |