GithubHelp home page GithubHelp logo

rictom / rede-cnpj Goto Github PK

View Code? Open in Web Editor NEW
183.0 19.0 75.0 67.27 MB

Visualização gráfica de relacionamentos entre sócios e empresas com dados públicos de CNPJ.

License: MIT License

Python 66.01% HTML 13.20% JavaScript 17.54% CSS 3.26%
python vivagraph cnpj javascript dados-abertos flask receita-federal

rede-cnpj's People

Contributors

fastrick avatar rictom avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

rede-cnpj's Issues

Problemas ao executar a rede-cnpj

Olá, tudo bem? Espero que sim!
Primeiro de tudo gostaria de parabenizá-lo pelo projeto desenvolvido. Ademais, estou tendo problemas ao conectar a rede-cnpj pelo console. Após colocar o prompt do anaconda na pasta de redes e executar o comando ---> python rede.py, obtenho o texto abaixo como output:

(base) C:\Users\andrew.santos_freteb\Documents\rede-cnpj-master\rede>python rede.py
Carregando rede_sqlite_cnpj
Utilizando rede_sqlite_cnpj como rede_relacionamentos.
módulo rede_spacy não foi carregado: No module named 'textract'
Traceback (most recent call last):
File "C:\Users\andrew.santos_freteb\Documents\rede-cnpj-master\rede\rede.py", line 40, in
limiter = flask_limiter.Limiter(app, key_func=get_remote_address) #, default_limits=["200 per day", "50 per hour"])
TypeError: init() got multiple values for argument 'key_func'

Já instalei as supostas bibliotecas que faltam, tais como: textract, folium, aiohttp, entre outras... Já que após instalada, O module named ' ' muda, tornando um ciclo infinito... Se possível, gostaria de uma ajuda para resolver o impasse!
Mt obg!!
Andrew.

Travando na parte final do script de tabelas

Esse é o errro:


Tue Jul 25 17:55:42 2023 -executando parte: 3/4

insert into id_search
--select distinct id_descricao
select id_descricao
from (
select 'PJ_' || te.cnpj ||'-' || t.razao_social as id_descricao
from cnpj.estabelecimento te
left join cnpj.empresas t on t.cnpj_basico=te.cnpj_basico
where te.matriz_filial is '1'
UNION ALL
select 'PJ_' || te.cnpj ||'-' || te.nome_fantasia as id_descricao
from cnpj.estabelecimento te
-- where trim(te.nome_fantasia) <>'' --incluir este where faz que ignore cnpj filial sem nome fantasia, o que faz falta na hora de busca filiais por cnpj básico
UNION ALL
select id1 as id_descricao
from rede.ligacao
where substr(id1,1,3)<>'PJ_'
UNION ALL
select id2 as id_descricao
from rede.ligacao
where substr(id2,1,3)<>'PJ_'
) as tunion
group by id_descricao --talvez group by seja mais rápido que distinct

Traceback (most recent call last):
File "D:\rede-cnpj-master - julho\rede-cnpj-master\rede\bases\rede_cria_tabela_rede.db.py", line 246, in
executaSequencia(camDBrede_search, sqlsequencia=sql_search)
File "D:\rede-cnpj-master - julho\rede-cnpj-master\rede\bases\rede_cria_tabela_rede.db.py", line 163, in executaSequencia
engine.execute(sql)
sqlite3.OperationalError: disk I/O error

Esse erro ocorreu depois de algumas horas travado nessa etapa. Estou rodando novamente para ver se ocorre de novo.

Instalação Transparência - PGFN - CEIS - CNEP - CEAF - LENIÊNCIA - DESPESAS - PEP

Visualização por Localização

Antes de tudo, parabéns pela ferramenta! Genial!

Gostaria de sugerir/provocar que houvesse a possibilidade de visualizar a partir de uma localização; Imagino que inicialmente seria por Cidade/UF; Porém, considerando que cada CNPJ tem um endereço; Gostaria que no futuro, caso possível, poderia delimitar um raio de X km com base em um endereço.

Bom, caso esteja no escopo do projeto prover esse tipo de visualização.

Novas bases de dados

Olá, existe a possibilidade de usar bases de dados próprias e privadas em conjunto com as da Receita Federal?

Instalação em ambiente linux com os arquivos gerados pelo PROGRAMA RedeCNPJ-Baixar-Converter

Com o tutorial foi possível rodar perfeitamente no windows, no entanto, ao levar os arquivos gerados (cnpj.db, rede.db, rede_search.db, cnpj_links_ete.db) pelo projeto PROGRAMA RedeCNPJ-Baixar-Converter para um ambiente linux junto com o clone do repo rictom/rede-cnpj consigo realizar busca por CNPJ, mas ao buscar por sócio ou razão social gera erro de não ser possível encontrar a tabela id_search.

Os arquivos foram salvos na pasta bases na raiz do projeto.

É necessário rodar algum script complementar?

Utilizei os seguintes parâmetros de config (rede.ini):

[BASE]

base_rede é a tabela principal com os vínculos entre empresas e socios. Versão 0.9

base_rede = bases/rede.db
base_rede_search = bases/rede_search.db
#base_receita, sqlite com dados publicos da Receita Federal.
#se o arquivo sqlite estiver na mesma pasta, coloque apenas base_receita=cnpj.db
#se a base_receita não for definido, é preciso ter o arquivo base_cnpj_vazia.db na pasta do projeto para não ocorrer erro
#se a base_receita não for definido, os botões do github e da Receita Federal não vão aparecer na tela.
base_receita = bases/cnpj.db

#caminho da base de endereços normalizada
base_endereco_normalizado = bases/cnpj_links_ete.db

#caminho da base de ligações adicional (TSE e TCE)
base_links = bases/links.db
#base_local é uma base com dados adicional. estrutura do banco_dados_modelo.db. Pode armazenar informações adicionadas manualmente no gráfico, dados dos nós e de ligações
base_local = bases/rede_dados.db

#referencia_bd aparece na linha superior da tela
referencia_bd = TESTE - PARA EXIBIR DADOS REAIS, É NECESSÁRIO COPIAR AS BASES

#referencia_bd = CNPJ (xx/xx/xxx)
#pasta para armazenar arquivos json
pasta_arquivos=arquivos
porta_flask=5000

[INICIO]
#cpfcnpjinicial cnpj para aparecer no início. Pode ser colocados vários cnpjs separados por ponto e vírgula. Deixe vazio se não quiser que apareça cnpj no inicio.
cpfcnpj =
#níveis de ligações para o cpfcnpjinicial
camada = 1
#exibir mensagem de advertencia e informações da data de referencia
exibe_mensagem_advertencia = 1

#mensagem_advertencia= LEIA ANTES DE PROSSEGUIR.\n\nTodos os dados exibidos são públicos, provenientes da página de dados abertos da Secretaria da Receita Federal ou de portais públicos de transparência.\nO autor não se responsibiliza p>

mensagem_advertencia=A base sqlite de TESTE tem os nomes de sócios e de empresas embaralhados.\nPara inserir um novo elemento aleatório pressione OK sem digitar texto.
#abrir menu inserir na abertura da tela
exibe_menu_inserir = 1

[ETC]
#para evitar excesso de ligações, se ligacaoSocioFilial=0 não inclue ligações para filiais de empresas
ligacao_socio_filial = 0
#se logAtivo=1, registra as consultas nas tabelas log_cpnj e log_cpfnome no arquivo sqlite.
logativo = 0
#permite download da pasta arquivos que não sejam json. Por segurança, desativar no servidor.
arquivos_download = 0

parametros para o flask-limiter

limiter_padrao =2/second;20/minute;200/hour;400/day
limiter_dados =10/second;600/minute
limiter_arquivos =2/minute;30/hour;100/day
#permite busca do google
busca_google = 1
#baixa arquivos e consulta palavras chaves
busca_chaves = 0
#quantidade máxima de itens para geocode
geocode_max = 10
#para de acrescentar niveis se ultrapassar o tempo abaixo em segundos
tempo_maximo_consulta=2
#para de acrescentar niveis se ultrapassar a quantidade de itens abaixo
limite_registros_camada=1000

[API]
api_cnpj=1
api_caminhos=1
api_keys=

#.

Log do app:

Carregando rede_sqlite_cnpj
Utilizando rede_sqlite_cnpj como rede_relacionamentos.
/home/deploy/.local/lib/python3.10/site-packages/flask_limiter/extension.py:293: UserWarning: Using the in-memory storage for tracking rate limits as no storage was explicitly specified. This is not recommended for production use. See: http s://flask-limiter.readthedocs.io#configuring-a-storage-backend for documentation about configuring the storage backend.
warnings.warn(

  • Serving Flask app 'rede'
  • Debug mode: on
    WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.
  • Running on all addresses (0.0.0.0)
  • Running on http://127.0.0.1:5000
  • Running on http://192.168.30.19:5000
    Press CTRL+C to quit
    192.168.30.125 - - [30/May/2023 13:10:47] "GET /rede/ HTTP/1.1" 200 -
    192.168.30.125 - - [30/May/2023 13:10:47] "GET /static/alertify/css/alertify.css HTTP/1.1" 200 -
    192.168.30.125 - - [30/May/2023 13:10:47] "GET /static/alertify/css/themes/default.css HTTP/1.1" 200 -
    192.168.30.125 - - [30/May/2023 13:10:47] "GET /static/menu/menu.css HTTP/1.1" 200 -
    192.168.30.125 - - [30/May/2023 13:10:47] "GET /static/alertify/alertify.min.js HTTP/1.1" 200 -
    192.168.30.125 - - [30/May/2023 13:10:47] "GET /static/menu/font-awesome_5.14.0_css_all.min.css HTTP/1.1" 200 -
    192.168.30.125 - - [30/May/2023 13:10:47] "GET /static/vivagraph/vivagraph.js HTTP/1.1" 200 -
    192.168.30.125 - - [30/May/2023 13:10:47] "GET /static/webfonts/fa-solid-900.woff2 HTTP/1.1" 200 -
    192.168.30.125 - - [30/May/2023 13:10:47] "GET /static/webfonts/fa-brands-400.woff2 HTTP/1.1" 200 -
    ERROR : no such table: id_search
    Tue May 30 13:11:13 2023 'camadasRede' 21.38 ms
    192.168.30.125 - - [30/May/2023 13:11:13] "POST /rede/grafojson/cnpj/1/JOAO%20SILVA HTTP/1.1" 200 -

Parabéns pelo projeto.

Exibição do correio eletrônico/telefone/endereço

Curti esta maneira de visualizar os dados da RF, ótimo trabalho!
Gostaria de fazer a visualização offline, mas, após implementar, não consegui replicar a exibição das ligações entre empresas e seus respectivos dados da maneira como está disponibilizado online atualmente. O que está faltando?

Sugestões de export JSON-LD e de simplificação

Parece muito boa a proposta! O filme mostra o potencial, infelizmente não terei tempo de testar... Pelo filme e breve análise ficam as sugestões:

  1. ofertar não apenas a visualização mas também o dado ligado relativo à visualização. Idealmente JSON-LD com Organization e Person. Ambos CNPJ e CPF são vatID, ambos possuem name, etc. assim como especificidades, por exemplo a razão social é legalName.

  2. Ilustrar caso simples, ou seja, "menos poluídos". Pode não ser trivial a estatística de principais diretores e/ou pessoas físicas que aparecem com maior número de vínculos num determinado cluster de pessoas jurídicas.

Erro ao subir o aplicativo pós atualização

Bom dia,

Atualizei os scritps hoje (git pull) e estou tendo erro ao subir a aplicação. Reinstalei os pacotes do requirements e atualizei o pip. Além disso acrescentei no arquivo requirements.txt os pacotes: spacy, textract, langdetect

Segue o erro:

(base) [root@s1410 rede]# python rede.py
Carregando rede_sqlite_cnpj
Utilizando rede_sqlite_cnpj como rede_relacionamentos.
/opt/anaconda3/lib/python3.10/site-packages/flask_limiter/extension.py:293: UserWarning: Using the in-memory storage for tracking rate limits as no storage was explicitly specified. This is not recommended for production use. See: https://flask-limiter.readthedocs.io#configuring-a-storage-backend for documentation about configuring the storage backend.
warnings.warn(
Traceback (most recent call last):
File "/opt/coinf/aplicacoes/rede/rede-cnpj/rede/rede.py", line 64, in
api_key_validas = [k.strip() for k in config.config['API'].get('api_keys', '').split(',')]
File "/opt/anaconda3/lib/python3.10/configparser.py", line 964, in getitem
raise KeyError(key)
KeyError: 'API'
(base) [root@s1410 rede]#

Instalação no Windows

Tive um problema na execução do programa para baixar os dados abertos e converter para uso na redecnpj. Na execução do programa 02-dados_cnpj_para_sqlite.exe, houve o seguinte erro:
executando parte 21/21:

fim parcial... Fri Jun 2 20:24:10 2023
fim sqls... Fri Jun 2 20:24:10 2023
Aplicando VACUUM para diminuir o tamanho da base-------------------------------- Fri Jun 2 20:24:21 2023
Traceback (most recent call last):
File "sqlalchemy\engine\base.py", line 1900, in _execute_context
File "sqlalchemy\engine\default.py", line 736, in do_execute
sqlite3.OperationalError: database or disk is full

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
File "dados_cnpj_para_sqlite.py", line 206, in
File "", line 2, in execute
File "sqlalchemy\util\deprecations.py", line 468, in warned
File "sqlalchemy\engine\base.py", line 3257, in execute
File "sqlalchemy\engine\base.py", line 1365, in execute
File "sqlalchemy\engine\base.py", line 1669, in _exec_driver_sql
File "sqlalchemy\engine\base.py", line 1943, in _execute_context
File "sqlalchemy\engine\base.py", line 2124, in handle_dbapi_exception
File "sqlalchemy\util\compat.py", line 211, in raise

File "sqlalchemy\engine\base.py", line 1900, in _execute_context
File "sqlalchemy\engine\default.py", line 736, in do_execute
sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) database or disk is full
[SQL: VACUUM]
(Background on this error at: https://sqlalche.me/e/14/e3q8)
[26708] Failed to execute script 'dados_cnpj_para_sqlite' due to unhandled exception!

D:\Programas\rede-cnpj-baixar-converter>

Saliento que estou tentando executar o programa a partir do Drive D, pois no drive C não há espaço suficiente para todos os arquivos.

Contato

Fala @rictom, primeiramente parabéns pelo trabalho da Rede de CNPJs.
Me chamo Ian Saud, sou Tech Lead em uma empresa de dados no Rio de Janeiro e trabalho na maioria das vezes com PHP. Estou trabalhando com os dados da RFB há pelo menos 4 anos. Gostaria de saber como consigo entrar em contato com você para uma conversa referente à contribuição em um projeto. Abaixo deixo meu contato caso esteja interessado.

Email: [email protected]
Linkedin: https://www.linkedin.com/in/iansaud/

Problema na execução do script Instalação em ambiente linux

Eu baixei todos os arquivos do site da Receita, salvei na pasta correta do projeto dados-publicos-zip e ao rodar o script dados_cnpj_baixa.py com o python 3.9.2 estou vendo a mensagem de erro abaixo.

image

Alguem pode me ajudar, por favor?

Desde já, muito obrigado.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.