[ER_034] Migração das Licitações do Liferay
Descrição: Migração dos processos de licitação e de contratação direta publicados na página “Acesso aos Licitantes” do portal antigo (Liferay) para o novo Portal TCE-GO (WordPress). Cada processo vira um registro de Licitação, com seus metadados e com cada arquivo no campo correspondente (documento principal, anexos, documentos de participantes, esclarecimentos e impugnações, sessões e resultado). Esta página descreve o que é migrado e como os dados foram extraídos e cruzados. Os ajustes do formulário que a migração exigiu estão especificados em documento próprio, fora desta página.
Origem: https://portal.tce.go.gov.br/licitacoes/licitacoes (Liferay, site 20181, pasta raiz 47889), lida em 18/09/2026.
Destino: Portal TCE-GO (WordPress) | Licitações e Contratos | /licitacoes.
Demanda: Redmine #44009 — [Migrar] Arquivos de Licitações.
Gestão depois da migração. A manutenção das licitações exibidas no portal passa a ser feita pela própria área responsável no WP-Admin (ambiente administrativo do WordPress): cadastro de novos processos, inclusão de arquivos, atualização de situação e do resultado. O manual de uso do WP-Admin será publicado em documentação própria, ainda a ser elaborada.
1. O que está sendo migrado
| Conjunto | Quantidade |
|---|---|
| Processos identificados | 951 — 647 licitações e 304 contratações diretas |
| Arquivos vinculados a processos | 2.452 de 2.458 arquivos da página; 6 não ficaram em nenhum processo e vão para revisão manual |
| Período | 2004 a 2026 |
| Pastas lidas na origem | 865 |
1.1 Processos por modalidade e época
| Modalidade | 2004–2012 | 2013–2020 | 2021–2023 | 2024–2026 | Total |
|---|---|---|---|---|---|
| Pregão (presencial e eletrônico) | 80 | 254 | 95 | 107 | 536 |
| Dispensa (atos, avisos e dispensas eletrônicas) | — | — | 167 | 45 | 212 |
| Inexigibilidade | — | — | 92 | — | 92 |
| Convite (Carta-Convite) | 52 | 10 | — | — | 62 |
| Tomada de Preços | 17 | 1 | 2 | — | 20 |
| Comparação de Preços | 13 | — | — | — | 13 |
| Concorrência | 5 | 4 | — | 3 | 12 |
| Seleção de Consultores | 3 | — | — | — | 3 |
| Sem modalidade identificada | — | — | — | 1 | 1 |
O único processo sem modalidade é a pasta “Licitantes Sancionados”, que não é licitação e fica fora do escopo (§2).
Comparação de Preços e Seleção de Consultores são métodos de aquisição do BID, usados no PROMOEX, programa já encerrado. Tomada de Preços e Convite foram extintas pela Lei nº 14.133/2021. As quatro entram no portal apenas para consulta de processos históricos.
1.2 Dados de cada processo
| Campo | Origem no Liferay | Cobertura |
|---|---|---|
| Modalidade | Nome da pasta ou do caminho | 950 de 951 |
| Forma (presencial ou eletrônica) | Nome da pasta, texto do edital e regra por período | 525 de 548 pregões e concorrências; 56 dispensas eletrônicas |
| Número e ano | Nome da pasta (“nº 036-2022”, “028-18”, “Convite_005_2007”) | 698; as 253 contratações diretas restantes não têm número no legado |
| Objeto | Texto do documento principal (edital ou ato); na falta, descrição da pasta e, por último, o nome da pasta | 942 de 951 — 828 do texto, 25 da descrição, 89 do nome |
| Nº do processo (SEI) | Título dos arquivos, nome do edital e texto do documento; complementado pelo painel Qlik | 832 — 816 lidos do documento e 16 recuperados do painel |
| Valor estimado | Texto do edital e do ato; valores do PNCP | Parcial |
| Sessão de abertura | Texto do edital (“Abertura das propostas: 23/03/2023”) | 325 |
| Situação | Nome da pasta e de arquivos (“Cancelado”, “Fracassado”, “Revogado”, “Deserto”); para os processos de 2026, o painel Qlik | 920 Concluída (22 delas pelo painel) · 9 Cancelada · 3 Fracassada · 2 Revogada · 17 a confirmar (2026) |
| Empresa vencedora e valor adjudicado | Painel Qlik, contratos do PNCP e texto do ato | 291 de 304 contratações diretas · 216 de 247 licitações de 2019 em diante |
1.3 Para onde vai cada arquivo
| Papel do arquivo | Quantidade | Campo no WordPress |
|---|---|---|
| Edital ou ato (documento principal) | 894 | Documento principal (Edital, Carta-convite, Solicitação de propostas, Ato de dispensa, Instrumento convocatório ou Ato de inexigibilidade) |
| Resultado: ata, julgamento, homologação, adjudicação, aviso de revogação | 308 | Anexos, e a empresa vencedora vai para o campo Resultado |
| Pedidos de esclarecimento, impugnações, respostas e decisões | 445 (em 196 processos) | Esclarecimentos e impugnações, agrupados por solicitante |
| Projetos e plantas | 246 | Anexos |
| Outra versão do edital | 90 | Anexos |
| Recursos (razões, contrarrazões e decisões) | 79 | Anexos |
| Documentos de participantes (propostas, habilitação) | 74 | Documentos de Participantes |
| Retificações e erratas | 64 | Anexos, com a data no campo Retificações |
| Anexos diversos, planilhas, avisos, termos de referência e documentos de contratação direta | 189 | Anexos |
| Atas e gravações de sessão pública | 9 | Sessões (exclusivo de Concorrência) |
| Sem papel definido (logos, recibos, arquivos sem extensão) | 54 | Revisão manual antes do import |
2. O que não é migrado
| Item | Motivo |
|---|---|
| Plano de Contratações Anual (PCA) | É publicação institucional; migrado na frente de publicações (Plano Institucional › PCA) |
| Licitantes Sancionados (4 arquivos) | Não é licitação: é a relação de sanções aplicadas; vai para mídia, ligada à página própria |
| 700 processos que não estão na página | Aparecem no painel Qlik ou no PNCP, mas não têm arquivo publicado no Liferay: 451 dispensas, 229 inexigibilidades, 9 pregões e 11 adesões a atas de outros órgãos. Ficam registrados em anexo (§6), para conhecimento e eventual publicação futura |
3. Como os dados foram extraídos
O levantamento foi feito por scripts, sem digitação manual, para ser repetível e conferível. Cada etapa grava o seu resultado em arquivo, e a etapa seguinte parte dele.
3.1 Leitura da página no Liferay
- Acesso pela API JSON-WS do Liferay (
/api/jsonws), com usuário de leitura, percorrendo a pasta raiz da página “Acesso aos Licitantes”. - De cada pasta e arquivo foram guardados: título, descrição, datas, tamanho, extensão e o UUID — identificador que liga o arquivo antigo ao novo e permite redirecionar as URLs do portal antigo.
- Resultado: 865 pastas e 2.458 arquivos.
3.2 Identificação dos processos
A árvore muda de padrão ao longo dos anos (ano › modalidade › processo › etapas). As regras aplicadas:
- Chave do processo: modalidade + número + ano (mais a forma, quando o ano tem concorrência eletrônica e presencial). Nos atos de contratação direta, que são arquivos soltos, a chave é o número do processo SEI do título.
- Pastas de agrupamento (“2013 - Editais”, “PREGÃO PRESENCIAL”) são distinguidas das pastas de processo: só é processo quando há número de 1 a 3 dígitos ou “nº” no nome, descontados os anos.
- Mesmo processo em duas pastas (ex.: “Pregão nº 012-2023” duplicado; Pregão 029/2024 dentro da pasta de 2023) é unido pela chave.
- Papel de cada arquivo (edital, ata, recurso, impugnação, projeto…) vem do nome do arquivo e da subpasta em que está.
3.3 Leitura do conteúdo dos documentos
- Os 894 documentos principais foram baixados e convertidos em texto (
pdftotext). - Do texto foram extraídos: objeto (“tem por objeto…”, “Constitui objeto…”; nos atos, a frase logo depois do CNPJ do contratado), número do processo SEI, data da sessão, empresa contratada, valor e a forma do pregão (“pregão eletrônico”, “Comprasnet”, “licitações-e” → eletrônico).
- O objeto é cortado nos complementos (“, para atender…”, “, conforme…”, “, por um período…”), para ficar só a descrição da contratação.
- Exemplo: o ato antes chamado “Ato de Inexigibilidade - O Estado de São Paulo” passou a ter o objeto “Contratação de 01 (uma) assinatura digital do Jornal O Estadão”.
4. Como os dados foram cruzados
O Liferay tem os arquivos, mas não tem a empresa vencedora nem o valor adjudicado, e em parte dos processos falta o número do processo SEI. Esses dados vieram de duas fontes oficiais, cruzadas com o acervo.
4.1 Chave de cruzamento: o processo SEI
O número do processo (formato AAAA 00047 NNNNNN) aparece de formas diferentes em cada fonte, inclusive com zeros a mais ou a menos (“2021000470001240”, “20250004700679”). Todos os números são normalizados antes da comparação, nas três fontes.
4.2 PNCP — Portal Nacional de Contratações Públicas
- Consulta à API pública (
https://pncp.gov.br/api/consulta/v1), pelo CNPJ do TCE-GO (02.291.730/0001-14), ano a ano e por modalidade, de 2021 em diante. - Retorno: 576 compras (as publicações do TCE-GO começam em 2023) e 473 contratos. As atas de registro de preços não retornaram registros.
- 290 processos do acervo foram ligados ao PNCP: 261 pelo processo SEI e 29 pelo objeto; 242 deles têm contrato, com razão social, CNPJ e valor.
- A API de itens e resultados (
/api/pncp/v1/…/itens/…/resultados) não respondeu (HTTP 503 em 19/09/2026).
4.3 Painel Qlik de licitações
- Fonte: painel de licitações do TCE-GO, que cobre 2019 em diante.
- A tabela do painel mostra na tela menos linhas do que possui; por isso os dados foram lidos do próprio motor do Qlik, em sessão anônima e somente leitura, página a página, depois de limpar as seleções padrão do painel.
- Retorno: 1.252 linhas, com 1.129 processos SEI distintos, todas com fornecedor e valor adjudicado. O painel mascara o CNPJ (
.674.227/-); o número completo só é gravado quando vem do PNCP ou do ato. - 480 processos do acervo foram ligados ao painel: 464 pelo processo SEI e 16 pelo objeto. Em 53 há mais de um fornecedor (licitação por lotes).
- O painel também deu a situação de 22 processos de 2026 que os arquivos do Liferay não permitiam confirmar: todos constam como concluídos.
- Foi também do painel que vieram os 16 números de processo SEI que faltavam no Liferay.
4.4 Ligação pelo objeto, quando falta o número do processo
Quando o processo do Liferay não traz o SEI, a ligação é tentada pelo objeto: mesma modalidade, ano próximo e texto semelhante (60% ou mais das palavras relevantes em comum), aceitando só quando há um único candidato ou vantagem clara sobre o segundo. Toda ligação feita assim é marcada “a conferir” nas planilhas: 16 no painel Qlik e 29 no PNCP.
4.5 Empresa vencedora
A empresa vencedora é definida na seguinte ordem, registrando sempre a fonte:
- Painel Qlik (2019 em diante) — fornecedor e valor adjudicado, uma linha por lote;
- Contratos do PNCP (2023 em diante) — razão social, CNPJ e valor;
- Texto do ato de dispensa ou inexigibilidade (“DECLARAR inexigível a licitação em favor da empresa …, inscrita no CNPJ sob o nº …, ao custo total de R$ …”).
| Grupo | Com vencedor identificado |
|---|---|
| Contratações diretas | 291 de 304 — 268 pelo painel, 15 pelo PNCP, 8 pelo ato |
| Licitações de 2019 em diante | 216 de 247 — 211 pelo painel, 5 pelo PNCP |
| Licitações até 2018 | Sem fonte automática: o painel começa em 2019 e o PNCP, em 2023. Só pela leitura das atas, com revisão |
O texto do edital não é usado para vencedor: a empresa citada ali é exemplo ou cláusula, não a contratada.
5. Conferências e pontos de atenção
- 70 processos entram como rascunho, para a área responsável conferir e publicar: 17 processos de 2026 cuja situação não se confirma nem pelos arquivos nem pelo painel Qlik, 56 sem documento principal identificado e 5 licitações sem número. A lista completa vai em anexo (§6).
- Situação dos processos de 2026: os arquivos do Liferay não mostram se esses processos terminaram. Dos 39 nessa condição, 22 constam no painel Qlik como concluídos e entram como Concluída; os outros 17 não estão no painel (no PNCP aparecem apenas como “Divulgada no PNCP”) e entram como Em andamento, em rascunho.
- 45 ligações marcadas “a conferir” (16 do painel, 29 do PNCP), feitas pelo objeto.
- Objetos vindos do nome da pasta (89) e em caixa alta (10) devem ser revistos na planilha de objetos.
- Datas do acervo antigo: boa parte dos arquivos anteriores a 2019 tem como data de cadastro 19/11/2018, que é a data da carga no Liferay, não a data do documento.
- Arquivos grandes: 7 acima de 100 MB, entre eles a gravação da 2ª sessão da Concorrência 01/2026, com 3,3 GB.
- URLs antigas: cada arquivo migrado guarda o UUID de origem, o que permite redirecionar os endereços do portal antigo para o novo.
6. Anexos
Espaço reservado para os arquivos desta migração. Anexar nesta página, pelo menu Adicionar imagens e outros arquivos do DokuWiki, e substituir cada marcador abaixo pelo link do arquivo enviado.
| Arquivo | Conteúdo | Anexo |
|---|---|---|
objetos.csv | Um registro por processo (951): modalidade, número, ano, processo SEI, situação, objeto, origem do objeto, trecho do documento, contratada, CNPJ, valor e documento principal. Planilha de revisão dos objetos | objetos.csv |
vencedores.csv | Empresa vencedora por processo, com a fonte (painel Qlik, PNCP ou ato), CNPJ, valor adjudicado, valor estimado e o tipo de ligação com cada fonte | vencedores.csv |
processos-fora-do-liferay.csv | Os 700 processos que aparecem no painel Qlik ou no PNCP e não estão na página do Liferay: modalidade, número, objeto, data, valores, fornecedores, situação e fonte | processos-fora-do-liferay.csv |
revisao-area-responsavel.csv | Os 70 processos que entram como rascunho, com o motivo de cada um, o processo SEI, a situação no PNCP e no painel e o caminho da pasta no Liferay | revisao-area-responsavel.csv |
Capturas brutas das fontes, guardadas no repositório do projeto e disponíveis sob demanda (2 MB a 4 MB cada): arvore.origem.json (leitura do Liferay), processos.analise.json (processos identificados e papel de cada arquivo), pncp.origem.json e qlik.origem.json.
7. Como refazer o levantamento
Os scripts ficam no repositório TCE.PORTAL.PROTO-IA , em scripts/migracao-licitacoes/, e rodam nesta ordem:
| Passo | O que faz |
|---|---|
| 1 · varrer | Lê a página no Liferay e grava a árvore de pastas e arquivos |
| 2 · analisar | Identifica os processos, os campos e o papel de cada arquivo |
| 3 · baixar textos | Baixa os documentos principais e extrai o texto |
| 4 · extrair do texto | Objeto, processo SEI, sessão, empresa, valor e forma |
| 5 · consultar PNCP | Compras e contratos do TCE-GO, ligados aos processos |
| 6 · consultar Qlik | Captura o painel de licitações e liga aos processos |
| 7 · consolidar | Gera as planilhas de vencedores, dos processos fora do Liferay e dos processos em rascunho |
Pré-requisitos: credencial de leitura do Liferay, pdftotext (poppler) e acesso à internet para o PNCP e ao painel. As consultas ao PNCP e ao painel podem ser refeitas sem nova extração, reaproveitando as capturas gravadas.
— Gerado com: análise assistida por IA sobre a API JSON-WS do Liferay, o texto dos documentos principais, a API de consulta do PNCP e o painel Qlik de licitações
— Revisado por: @pramorim - Paulo Ricardo Amorim Silva
— Atualizado em 2026-09-20