O Tá de Pé? é um sistema desenvolvido através da parceria entre a Transparência Brasil e o Laboratório Analytics, da Universidade Federal de Campina Grande-PB, com finalidade de permitir o acompanhamento de licitações e de contratos públicos.
Este repositório contém a camada de dados do Tá de Pé?. Esta camada, ilustrada na imagem abaixo, fornece meios para extração, processamento, e armazenamento de dados do TCE de dois estados brasileiros, Rio Grande do Sul e Pernambuco, da Receita Federal e das compras realizadas pelo Governo Federal.
A Camada de Dados possui três componentes principais:
- Fetcher: responsável por buscar os dados de suas fontes. Note que temos um fetcher para cada fonte de dados;
- Processor: responsável por processar os dados para o formato usado no Tá de Pé? e encontrar alertas nos dados;
- Feed: responsável por carregar os dados para o banco de dados Tá de Pé?.
DICA: Caso você precise apenas configurar um ambiente de desenvolvimento e começar a contribuir de imediato as etapas de buscar dados de fontes (fetcher) e processar dados (processor) podem ser ignoradas, desde que você tenha acesso aos arquivos CSVs já processados e disponíveis no diretório data/bd
.
Para mais detalhes, veja nossa wiki.
Todos os serviços utilizados pelo Tá de Pé? utilizam docker para configuração do ambiente e execução do script.
Instale o docker e o docker-compose. Tenha certeza que você também tem o Make instalado.
Obs: todos comandos citados nesse README utilizam o make como facilitador para execução. Caso você queira executar os comandos docker diretamente confira o código correspondende a seu comando no arquivo Makefile
na raiz desse repositório.
Mais detalhadamente, cada componente da camada de dados do Tá de Pé? realiza as seguintes tarefas:
- Configuração dos Serviços Tá de pé dados
- Configuração dos Bancos de dados Locais
- Fetcher
- Processor
- Feed
Para realizar estas tarefas, siga o tutorial:
Precisamos levantar os serviços usados no processamento de dados. Para isso, é preciso configurar as variáveis de ambiente necessárias para os serviços executarem:
a) Crie uma cópia do arquivo .env.sample no diretório raiz desse repositório e renomeie para .env
(deve também estar no diretório raiz desse repositório)
b) Preencha as variáveis contidas no .env.sample também para o .env
. Altere os valores conforme sua necessidade. Atente que se você está usando o banco local, o valor da variável POSTGRES_HOST
deve ser postgres, que é o nome do serviço que será levantado pelo docker-compose. Contate a equipe em caso de dúvida.
c) Atualize a dependência do github submodule para o fetcher do Governo Federal:
git submodule update --init --recursive
Acesse o README para mais informações.
d) Do diretório raiz desse repositório execute o comando a seguir que irá levantar os serviços:
Você pode opcionalmente realizar o build das imagens:
docker-compose build
Caso o seguite erro apareça:
error checking context: 'can't stat '<path>/ta-de-pe-dados/data/postgres_data''.
ERROR: Service 'rbase' failed to build : Build failed
execute o seguinte comando para alterar a permissão de acesso ao diretório do postgres_data:
sudo chown -R <seu-user>:<seu-user> data/
docker-compose up -d
d) É possível verificar os serviços em execução:
docker ps
Execute este passo apenas se você quer repetir todo o processo de obtenção/processamento dos dados. Esses processos podem demorar bastante.
Link para as instruções de configuração do banco de dados do Cadastro Nacional da Pessoa Jurídica (CNPJ) oriundos da Receita Federal.
Link para as instruções de configuração do banco de dados do Tribunal de Contas do estado de Pernambuco.
Não esqueça de conectar o container do banco do Tome Conta a rede de containers do projeto tá de pé:
docker network connect ta_na_mesa_network mssql-tce-pe
A primeira etapa consiste em baixar os dados brutos, disponíveis na forma de dados abertos, de suas fontes. Assim, baixamos os dados de licitações, contratos e empenhos disponibilizados pelo TCE-RS e pelo TCE-PE, e os dados referentes à informações dos fornecedores disponíveis no Banco da Receita Federal.
Execute o seguinte comando para baixar os dados do TCE-RS.
make fetch-data-rs ano=<ano_para_baixar>
Substitua <ano_para_baixar> com um ano de sua escolha para download (2018, 2019 e 2020 foram os anos já testados para download).
Execute o seguinte comando para baixar os dados do TCE-PE.
make fetch-data-pe ano_inicial=<ano> ano_final=<ano>
Execute o seguinte comando para baixar os dados do Governo Federal
TODO - ainda não implementado
Esta etapa consiste em processar os dados para o formato que utilizamos e encontrar alertas.
Obs: É preciso ter feito o download dos dados para os anos de interesse, conforme explicado na seção Fetcher.
Atenção! Caso você tenha interesse em processar os dados federais é necessário carregar os dados de empenhos e itens de empenho federais no banco de processamento para que o ta de pe dados possa realizar a limpeza e o filtro nesses dados: para isto execute:
make feed-create-empenho-raw-gov-federal
make feed-import-empenho-raw-gov-federal
Execute o script de processamento dos dados gerais:
make process-data anos=2018,2019,2020,2021 filtro=merenda estados=RS,PE,BR
Obs: o parâmetro anos pode conter um ou mais anos (estes separados por vírgula). O parâmetro filtro pode ser 'merenda' ou 'covid'. O parâmetro estados pode conter um ou mais estados.
Os dados processados estarão disponíveis no diretório data/bd
.
Para processar as informações de fornecedores (como data do primeiro contrato e total de contratos), execute:
make process-data-fornecedores anos=2018,2019,2020,2021
Para processar as informações da Receita Federal para os fornecedores, execute:
make fetch-process-receita
Obs: é necessário que as variáveis de acesso ao BD estejam definidas no .env na raiz do repositório. As variáveis necessárias para conexão são:
RECEITA_HOST
RECEITA_USER
RECEITA_DB
RECEITA_PASSWORD
RECEITA_PORT
Entre em contato com a equipe de desenvolvimento para ter acesso as variáveis do BD disponível para acesso.
Obs: É preciso realizar o passo 4.1 antes deste.
Processe os dados de empenhos:
make process-data-empenhos
Os dados processados de empenhos estarão disponíveis no diretório data/bd
.
Processe os dados de novidades:
make process-data-novidades
Os dados processados de novidades estarão disponíveis no diretório data/bd
.
Processe os dados de alertas referentes a produtos atípicos:
make process-data-itens-similares
Processe os dados de alertas referentes a fornecedores contratados logo após a abertura da empresa:
make process-data-alertas anos=2018,2019,2020,2021 filtro=merenda estados=RS,PE,BR
Os dados processados de alertas estarão disponíveis no diretório data/bd
.
Importe os dados que foram processados (licitações e contratos) e os dados brutos de empenhos no BD fazendo:
a) Crie as tabelas necessárias
make feed-create
b) Importe os dados para as tabelas
make feed-import-data
c) Import os dados de empenhos (vindos diretamento do TCE)
make feed-import-empenho-raw
Obs: Este comando pode demorar bastante devido ao carregamento dos Empenhos.
Importe os dados de empenhos processados para o BD:
make feed-import-empenho
Importe os dados de novidades para o BD:
make feed-import-novidade
Importe para o BD os dados de alertas sobre produtos atípicos:
make feed-import-itens-similares-data
Importe para o BD os dados de alertas sobre fornecedores contratados logo após a abertura da empresa:
make feed-import-alerta
Pronto! Todo o processamento de dados e carregamento para o banco de dados foi realizado.
Uma vez que o serviços de processamento tiverem sido levantados (docker-compose up -d
), o banco de dados também terá sido levantado.
Para acessar o banco, execute:
make feed-shell
Para dropar as tabelas dos dados processados pelo Tá de Pé?, execute:
make feed-clean-data
Para dropar as tabelas dos dados de empenhos brutos importados para o banco de dados, execute:
make feed-clean-empenho
Para executar o script de atualização dos dados (considera que os CSV's na pasta bd
já foram processados), execute:
docker exec -it feed python3.6 /feed/manage.py update-data
Para executar outros scripts criados usando R no Serviço Processor, basta alterar o caminho para o arquivo no comando docker.
Exemplo:
docker exec -it r-container sh -c "cd /app/code/ideb && Rscript export_ideb.R"
Este comando irá executar o script de exportação dos dados do IDEB.
Caso algum pacote novo tenha que ser adicionado ao r-container, basta adicionar o nome do pacote na seção de instalação de dependências do Dockerfile presente no diretório code
. Existe um exemplo para o pacote here neste Dockerfile.
Nesta seção iremos explorar como realizar a atualização dos dados usando o script de update: update-data.sh
Obs: O arquivo update-data.sh faz uso de um arquivo de variáveis de ambiente: .env
. Neste arquivo é possível alterar o local de escrita do arquivo de log de execução do update-data.sh.
Primeiro é preciso dar permissão de execução ao script:
chmod +x update-data.sh
É possível verificar quais os comandos possíveis de serem executados pelo helper:
./update-data.sh -help
./update-data.sh --tipo merenda --contexto development --ano-inicio 2020 --ano-fim 2021 --estados RS,PE,BR
Este processo pode demorar bastante dependendo da sua conexão e da capacidade de processamento da sua máquina. Seu banco de dados local já estará pronto para uso.
Para configurar a atualização periodicamente é possível adicionar no crontab o comando correspondente da atualização.
Abra seu crontab para edição:
crontab -e
Adicione a seguinte linha (modifique o caminho de acordo com sua máquina):
0 7 2 * * cd <caminho_para_repositorio>; /bin/bash <caminho_para_repositorio>/update-data.sh --tipo merenda --contexto development --ano-inicio 2019 --ano-fim 2020
No dia 2 de cada mês o script de atualização irá se iniciar às 7 horas da manhã.
Este repositório tem um módulo dedicado a configurar a conexão e gerenciar a VM no Azure onde o ta-de-pe-dados pode estar executando em produção.
Para mais detalhes acesse aqui.