Skip to content

Commit

Permalink
Merge pull request #28 from analytics-ufcg/dev
Browse files Browse the repository at this point in the history
Dev
  • Loading branch information
JoaquimCMH authored Jun 29, 2020
2 parents b866d17 + 9141a6c commit 4f36c59
Show file tree
Hide file tree
Showing 80 changed files with 8,598 additions and 89 deletions.
Binary file modified .DS_Store
Binary file not shown.
6 changes: 6 additions & 0 deletions .env.sample
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,9 @@ MYSQL_DB=db
MYSQL_USER=user
MYSQL_PASSWORD=secret
MYSQL_PORT=3306

SQLSERVER_SAGRES19_HOST=host
SQLSERVER_SAGRES19_Database=db
SQLSERVER_SAGRES19_USER=user
SQLSERVER_SAGRES19_PASS=secret
SQLSERVER_SAGRES19_PORT=0000
8 changes: 7 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,10 @@
.RData
.Ruserdata
.env
./fetcher/credenciais/*
server/node_modules/


fetcher/credenciais/config
fetcher/credenciais/id_rsa
fetcher/credenciais/id_rsa.pub
fetcher/credenciais/known_hosts
661 changes: 661 additions & 0 deletions LICENSE

Large diffs are not rendered by default.

52 changes: 47 additions & 5 deletions Makefile
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
78 changes: 46 additions & 32 deletions README.md
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 modified dados/.DS_Store
Binary file not shown.
Loading

0 comments on commit 4f36c59

Please sign in to comment.