-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #28 from analytics-ufcg/dev
Dev
- Loading branch information
Showing
80 changed files
with
8,598 additions
and
89 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,19 +1,61 @@ | ||
.DEFAULT_GOAL : help | ||
help: | ||
@echo "\nMonitor Cidadão - Serviço de dados" | ||
@echo "Este arquivo ajuda na obtenção e processamento dos dados usados no Monitor Cidadão\n" | ||
@echo "COMO USAR:\n\t'make <comando>'\n" | ||
@echo "COMANDOS:" | ||
@echo "\thelp \t\t\t\tMostra esta mensagem de ajuda" | ||
@echo "\tbuild \t\t\t\tRealiza o build das imagens com as \n\t\t\t\t\tdependências necessária para a obtenção e \n\t\t\t\t\tprocessamento dos dados." | ||
@echo "\tup \t\t\t\tCria e inicia os containers." | ||
@echo "\tstop \t\t\t\tPara todos os serviços." | ||
@echo "\tclean-volumes \t\t\tPara e remove todos os volumes." | ||
@echo "\tenter-fetcher-container \ttAbre cli do container fetcher" | ||
@echo "\tfetch-data \t\t\tObtem dados" | ||
@echo "\tenter-transformer-container \tAbre cli do container transformador" | ||
@echo "\ttransform-data\t\t\tTraduz e transforma os dados colhidos" | ||
@echo "\tenter-feed-al-container\t\tAbre cli do container feed-al" | ||
@echo "\tfeed-al-create\t\t\tCria as tabelas do Banco de Dados Analytics" | ||
@echo "\tfeed-al-import\t\t\tImporta dados para as tabelas do \n\t\t\t\t\tBanco de Dados Analytics" | ||
@echo "\tfeed-al-clean\t\t\tDropa as tabelas do Banco de Dados \n\t\t\t\t\tAnalytics" | ||
@echo "\tfeed-al-shell\t\t\tAcessa terminal do Banco de Dados Analytics" | ||
|
||
.PHONY: help | ||
build: | ||
docker-compose build | ||
.PHONY: build | ||
run: | ||
up: | ||
docker-compose up -d | ||
.PHONY: run | ||
.PHONY: up | ||
stop: | ||
docker-compose stop | ||
.PHONY: stop | ||
clean-volumes: | ||
docker-compose down --volumes | ||
.PHONY: clean-volumes | ||
enter-container: | ||
docker exec -it r-container-fetcher /bin/bash | ||
.PHONY: enter-container | ||
enter-fetcher-container: | ||
docker exec -it fetcher /bin/bash | ||
.PHONY: enter-fetcher-container | ||
fetch-data: | ||
docker exec -it fetcher sh -c "Rscript scripts/fetch_sagres_data.R" | ||
.PHONY: fetch-data | ||
enter-transformer-container: | ||
docker exec -it transformador /bin/bash | ||
.PHONY: enter-transformer-container | ||
transform-data: | ||
docker exec -it transformador sh -c "Rscript scripts/transform_mc_data.R" | ||
.PHONY: transform-data | ||
enter-feed-al-container: | ||
sudo docker exec -it feed-al sh | ||
.PHONY: enter-feed-al-container | ||
feed-al-create: | ||
docker exec -it feed-al sh -c "Rscript feed-al/DAO.R -f create" | ||
.PHONY: feed-al-create | ||
feed-al-import: | ||
docker exec -it feed-al sh -c "Rscript feed-al/DAO.R -f import" | ||
.PHONY: feed-al-import | ||
feed-al-clean: | ||
docker exec -it feed-al sh -c "Rscript feed-al/DAO.R -f clean" | ||
.PHONY: feed-al-clean | ||
feed-al-shell: | ||
docker exec -it feed-al sh -c "Rscript feed-al/DAO.R -f shell" | ||
.PHONY: feed-al-shell |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,51 +1,65 @@ | ||
# Monitor Cidadão | ||
Repositório do projeto Monitor Cidadão. Ufcg + Laboratório Analytics + CampinaTec. | ||
|
||
## Antes de tudo | ||
## Monitor Cidadão - Camada de Dados | ||
O Monitor Cidadão é um sistema desenvolvido através da parceria entre a CampinaTec e o laboratório Analytics, da Universidade Federal de Campina Grande-PB, com finalidade de possibilitar aos cidadãos o acompanhamento dos contratos realizados pelos municípios do estado da Paraíba. | ||
|
||
Todos os serviços utilizados pelo Monitor Cidadão utilizam docker para configuração do ambiente e execução do script. | ||
## Camada de Dados | ||
|
||
Instale o [docker](https://docs.docker.com/install/) e o [docker-compose](https://docs.docker.com/compose/install/). Tenha certeza que você também tem o [Make](https://www.gnu.org/software/make/) instalado. | ||
A Camada de dados consiste em uma arquitetura que fornece meios para a extração e tratamento de dados provindos de diversas fontes. Essa estrutura é formada por quatro subcategorias distintas com suas próprias responsabilidades: | ||
|
||
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 correspondente a seu comando no arquivo `Makefile` na raiz desse repositório. | ||
* **Fetch** : responsável por buscar os dados em suas fontes; | ||
* **Tradutor**: responsável por traduzir os dados para um formato tabular - especialmente útil para dados que são disponibilizados em formato *.csv*; | ||
* **Transformador**: realiza manipulações nos dados como, por exemplo, joins; | ||
* **Preditor**: encapsula diversas funções para a realização das predições em torno dos contratos públicos. | ||
|
||
Abaixo é apresentado o fluxo de dados geral das camadas citadas acima. | ||
|
||
### Setup | ||
![Fluxo de dados](https://github.com/analytics-ufcg/monitor-cidadao/blob/dev/img/data-pipeline.png?raw=true) | ||
|
||
#### Acesso à VM | ||
|
||
Para que nossos serviços tenham o devido acesso aos dados (hospedados em uma Máquina Virtual remota e privada), preencha os arquivos em `fetcher/credenciais` com as credenciais e chaves necessárias. | ||
## Tecnologias/framework usadas | ||
|
||
#### Acesso aos Bancos | ||
<b>Desenvolvido em: </b> | ||
- [R](https://www.r-project.org/) | ||
|
||
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) | ||
## Setup | ||
Os serviços deste módulo utilizam docker para configuração do ambiente e execução do script. Instale o [docker](https://docs.docker.com/install/), [docker-compose](https://docs.docker.com/compose/install/) e tenha certeza que você também tem o [Make](https://www.gnu.org/software/make/) instalado. | ||
|
||
Preencha as variáveis contidas no .env. Altere os valores conforme sua necessidade. | ||
Adicione os seguintes arquivos com variáveis de ambiente e credenciais: | ||
|
||
#### Serviços | ||
- Adicione o arquivo [*.env*](https://doc-08-6s-docs.googleusercontent.com/docs/securesc/qph2akfo04c7b0qviq0omfmbqectvj9r/90pf21leaqv39j5e5hjskd5tf70b2ekb/1593364725000/02066499184667500127/02066499184667500127/1cnKe1G0nO0SukbyHM06iVZ0t1CcPv0H1?e=download&authuser=0&nonce=v1c2japd9r2tu&user=02066499184667500127&hash=kddfpumuv1enicl51mbg80p5a7f5fdj0) na pasta raiz do projeto; | ||
- Adicione os arquivos [*config*, *id_rsa*, *id_rsa.pub* e *known_hosts*](https://drive.google.com/drive/u/0/folders/1QgxQlKgNCvGtUrFAXSl-mm0S3z2GZ2XV) na pasta fetcher/credenciais. | ||
|
||
Faça o build das imagens docker com as dependências: | ||
|
||
```shell | ||
sudo make build | ||
``` | ||
## Como usar? | ||
Nesta camada o make é utilizado como facilitador para execução. Abaixo estão descritos os passos necessários para importar os dados para o banco de dados Analytics (também chamado de AL_DB): | ||
|
||
Execute os serviços: | ||
|
||
```shell | ||
sudo make run | ||
``` | ||
|
||
## Busca e Processamento | ||
|
||
O processamento de dados do Monitor Cidadão tem, atualmente, os seguintes passos: | ||
|
||
1. Fetch dos dados do SAGRES do TCE-PB | ||
|
||
Para realizar estes passos siga o tutorial: | ||
|
||
### 1. Fetcher | ||
1. Faça o build das imagens necessárias com `sudo make build`; | ||
2. Crie e inicie os containers do docker com `sudo make up`; | ||
3. Obtenha os dados através do `sudo make fetch-data`. Nesta etapa você também pode testar a integridade dos dados obtidos utilizando os testes unitários de cada tabela com `sudo docker exec -it fetcher sh -c "Rscript tests/<nome-da-tabela>.R"`; | ||
4. Traduza e transforme os dados colhidos `sudo make transform-data`; | ||
5. Crie as tabelas no banco AL_DB com `sudo make feed-al-create`; | ||
6. Agora importe os dados para as tabelas do banco com `sudo make feed-al-import`; | ||
7. Você pode verificar se a(s) tabela(s) estão no banco com `sudo make feed-al-shell` e `\dt`. | ||
|
||
Caso você queira executar os comandos docker diretamente, confira o código correspondente a seu comando no arquivo `Makefile`. Abaixo estão todos os comandos disponíveis para serem executados com `sudo make <Comando>`: | ||
Comando | Descrição | ||
------------ | ------------- | ||
help |Mostra esta mensagem de ajuda | ||
build | Realiza o build das imagens com as dependências necessárias para a obtenção dos dados. | ||
up | Cria e inicia os containers. | ||
stop | Para todos os serviços. | ||
clean-volumes | Para e remove todos os volumes. | ||
enter-fetcher-container | Abre cli do container fetcher | ||
fetch-data | Obtem dados | ||
enter-transformer-container | Abre cli do container transformador | ||
transform-data | Traduz e transforma os dados colhidos | ||
enter-feed-al-container | Abre cli do container feed-al | ||
feed-al-create | Cria as tabelas do Banco de Dados Analytics | ||
feed-al-import | Importa dados para as tabelas do Banco de Dados Analytics | ||
feed-al-clean | Dropa as tabelas do Banco de Dados Analytics | ||
feed-al-shell | Acessa terminal do Banco de Dados Analytics | ||
|
||
|
||
## License | ||
|
||
GNU Affero General Public License v3.0 © [Monitor Cidadão]() |
Binary file not shown.
Oops, something went wrong.