parlametria / leggoR

Acesso, tradução e modelos usando dados do congresso nacional
GNU Affero General Public License v3.0
20 stars 4 forks source link

pipeline status codecov

leggoR

Acesso, tradução e modelos usando dados do congresso nacional.

Objetivo e módulos principais

Este repositório tem por objetivo principal prover o conjunto de funções e serviços que permitem capturar e processar dados de proposições e parlamentares do congresso nacional. Para isto existem dois módulos principais:

Estrutura do repositório

O pacote agoradigital

O pacote agoradigital exporta várias funções que extraem e processam os dados do Congresso Nacional.

Instalação

Antes de instalar nosso pacote, é necessário que você tenha o R instalado.

Aviso: Os comandos desta seção devem ser executados dentro do interpretador de R. Mas você também pode executar qualquer código R direto no terminal usando o comando Rscript -e. Exemplo:

Recomendamos que você instale o pacote devtools que é uma ferramenta que irá te ajudar no processo de instalação e desenvolvimento.

install.packages("devtools")

Após isso, você pode instalar o pacote no seu ambiente R de preferência:

devtools::install_github("parlametria/leggoR")

Para utilizá-lo:

library(agoradigital)

Para verificar se toda a instalação foi feita de maneira correta, use o exemplo:

agoradigital::fetch_proposicao(82051, "senado")

Uso

Exemplos básicos de uso.

Como capturar ids de proposições:

A maioria de nossos métodos necessita do id da proposição que você deseja extrair informações, há várias formas de capturar esse id, serão mostradas as mais básicas:

Para contribuir com o pacote

É necessário garantir que todas as suas funções estejam documentadas e disponíveis. Para isso, você precisa adicionar @export a documentação da função para garantir que essa função será exportada, como em qualquer pacote R. Após isso:

  1. Gere a documentação do package.

    devtools::document()

Para rodar os testes:

  1. Teste o pacote

    devtools::test()

  2. Instale o pacote a partir da branch que deseja:

    devtools::install_github('parlametria/leggoR@nome_da_branch')

Depois faça os testes necessários para garantir que o pacote está funcionando conforme esperado.

Abaixo temos alguns comandos extras que podem ser úteis no desenvolvimento do pacote:

rcmdcheck::rcmdcheck()

Scripts de atualização dos dados do Painel

O módulo scripts é responsável por englobar diversos submódulos responsáveis por executar a atualização dos dados utilizados pelo Painel Parlametria e geralmente chamados pelo orquestrador leggo-geral. Explicamos mais detalhes no README deste diretório.

Docker

Este repositório possui uma configuração do docker para facilitar o desenvolvimento, teste e deploy do leggoR considerando seus módulos principais: pacote agoradigital, módulo de scripts.

Para usar o docker será necessário:

  1. Instale o docker e o docker-compose.

  2. Configure as variáveis de ambiente: crie uma cópia do arquivo .env.sample e o renomeie para .env. Em seguida preencha as variáveis com os valores adequados para execução. Atualmente temos a seguinte variável de ambiente:

APP_SECRET = hash da url do bot Voz Ativa para onde mandamos os resultados das atualizações e mensagens de novas proposições apensadas.

  1. Realize o build da imagem (na primeira vez esse passo pode demorar bastante dependendo da sua conexão com a internet).

    docker-compose build

Agora é possível usar o rmod (nome do serviço levantado pelo docker-compose) para executar o código do leggoR:

Exemplo:

docker-compose run --rm rmod Rscript scripts/fetch_updated_bills_data.R -e <export_path> -f 4

O <export_path> é o caminho onde os csvs do resultado serão salvos.

Sempre que o código do repositório for alterado é necessário realizar um novo build da imagem docker para que as mudanças sejam refletidas quando o container estiver em execução.

É possível com algumas alterações criar um volume entre o código do repositório e o container para facilitar o teste e desenvolvimento do leggoR mas isto ainda não está implementado.

Como contribuir

Se encontrou algum problema ou deseja fazer alguma melhoria. Por favor, abra uma issue e descreva o problema com clareza, se possível com exemplos que possamos reproduzir.

Toda ajuda é bem vinda e de grande importância :) sinta-se à vontade.