Closed cuducos closed 2 years ago
Se não se importar, posso tentar fechar essa issue.
Coisa linda, @andidevel! Como posso ajudar?
Vou tentar ajudar com palpites:
download
e criação do last_update.txt
; depois outro com a parte de banco de dados; e, por fim, endpoint na API e documentação)batch
(candidata a ser mergeada na dev
logo mais)batch
docs/instalacao.md
e docs/servidor.md
, bem como o CONTRIBUTING.md
main
)dev
, nos próximos dias, deve ser atualizada com a branch batch
via #92 e #95Ótimo!!! Vai ser um aprendizado. Vou atualizar o meu fork do projeto e seguir as suas dicas.
Valeu!
Desculpe, mas estou tendo uma dificuldade para montar o ambiente de desenvolvimento, ao usar o docker-compose build
, obtenho o seguinte erro:
--- FAIL: TestPostgresDB (0.00s)
postgres_test.go:15: expected a posgres uri at TEST_POSTGRES_URI, found nothing
Inclusive já tentei configurar essa variável de ambiente diretamente no docker-compose.yml
:
minha-receita:
environment:
- TEST_POSTGRES_URI="postgres://minhareceita:minhareceita@localhost:5555/minhareceita?sslmode=disable"
build: .
ports:
- 8000:8000
volumes:
- ./data:/mnt/data
Sem sucesso.
Está faltando fazer alguma outra coisa aqui no meu ambiente, ou será que tem a ver com a minha versão do docker/docker-compose?
Docker version 20.10.7
docker-compose version 1.25.0
Por hora estou utilizando somente os bancos de dados via docker e antes de rodar os testes fiz:
export TEST_POSTGRES_URI="postgres://minhareceita:minhareceita@localhost:5555/minhareceita?sslmode=disable"
Que funcionou como o esperado.
Se alguém tem alguma dica de como fazer funcionar diretamente com docker-compose build
, ficaria agradecido.
Pegou uma bela barbeiragem minha. Pode tirar a parte de go test
do Dockerfile
– inclusive abri a #96 para isso ; )
Por hora estou utilizando somente os bancos de dados via docker
Ou… não precisa de docker build
se vais usar o banco de dados via Docker. Como tem no CONTRIBUTING.md
só docker-compose up -d postgres_test
já resolve.
Algumas considerações:
Acessando a página oficial da Receita (acessado no dia 15/01/2022), é possível notar "umas inconsistências":
O HTML atual está "um pouco" diferente do HTML utilizado para os testes:
testdata
) não tem duas datas de atualização, só uma. O que também póde indicar ser um typo na página mais recente, já que tem diversos erros de digitação nesta página, que estão sendo tratados no código;div
com id #parent-fieldname-text e parar na primeira ocorrência "Data da última extração:"
. Não sei se atualizar o HTML de testes com a versão mais atual da página seria uma boa, já que, ao que tudo indica, o conteúdo dessa página não é lá muito confiável.Sugestões?
Cara, muita tosquice, mas enfim… não é a primeira. Temos que fazer find & replace no código pq tem erros como http//
(sem o :
) no código.
Sugestões?
testdata
(talvez tenha que incluir manualmene algum typo como http//
para manter esses casos testados hehehe)Por sinal, protocolei um pedido de esclarecimento sobre isso no Fala.BR, protocolo 03005.021971/2022-55.
Resposta do Ministério da Economia:
Senhor(a),
O Serviço de Informações ao Cidadão do Ministério da Economia agradece o seu contato.
Em atenção à sua solicitação, informamos que:
1 - A data de extração 14/01/22 se refere ao primeiro bloco de dados: Dados Abertos CNPJ EMPRESA 01 até Dados Abertos CNPJ SÓCIO 10.
2 - As datas são distintas devido ao volume de informações extraídas. Se optou por dividir os dados em blocos, além de facilitar o download para o usuário.
3 - A data de extração 08/01/22 se refere ao bloco de Informações sobre o Simples Nacional/MEI até Tabela de atributo qualificação dos sócios.
4 - A data de extração 20/10/21 se refere bloco de dados do regime tributário das Pessoas Jurídicas.
Atenciosamente, Serviço de Informações ao Cidadão (SIC) Ministério da Economia
Resumindo, esse parágrafo cortado entre as setinhas vermelha e azul é a chave: a data depois dele é das informações que ele descreve, ou seja. informações sobre o regime tributário das pessoas jurídicas ; )
Podemos adaptar a resposta para algo como:
{
"companies": "2021-12-12",
"taxes": "2021-10-20"
}
Final de semana voltei a mexer nessa issue:
2. Atualizar o HTML do `testdata` (talvez tenha que incluir manualmene algum _typo_ como `http//` para manter esses casos testados hehehe)
Fiz isso, mas somente acrescentei o HTML diferente, ou seja, somente a parte da seta azul para baixo, e ao rodar os testes, percebi que essa página HTML é toda zoada. No fonte tem isso aqui:
<!-- algum HTML antes -->
<p>Data da última extração: 20/10/2021</p>
<div><a class="external-link" href="http://200.152.38.155/CNPJ/anual/Dados%20Abertos%20S%c3%adtio%20RFB%20Extracao%2020.10.2021.zip" target="_self" title="" data-tippreview-enabled="false" data-tippreview-image="" data-tippreview-title=""> </a></div>
<div><a class="external-link" href="http://200.152.38.155/CNPJ/anual/Dados%20Abertos%20S%c3%adtio%20RFB%20Extracao%2020.10.2021.zip" target="_self" title="" data-tippreview-enabled="false" data-tippreview-image="" data-tippreview-title="">Regime tributário</a></div>
<!-- algum HTML depois -->
Tem duas tags anchor com exatamente o mesmo link, só que uma não tem texto nenhum. Como as duas tags estão com a classe CSS "external-link", o link é capturado pela função getFiles()
. Para passar no teste, seria somente acrescentar esse arquivo (duas vezes) lá na lista do "resultado esperado" e aumentar o número de arquivos esperados de 37 para 39, mas na prática esse arquivo vai ser baixado duas vezes. Acredito que isso seja um problema, não é não?
Pronto, o d2ba549 (que já está na branch main
) deve resolver isso ; )
Olá @cuducos.
* (...) em PRs menores (talvez um apenas implementando a parte do comando `download` e criação do `last_update.txt`; (...)
Já tenho algum código para mostrar (com testes). Mas a branch dev
não existe mais, faço a PR contra a main
mesmo?
Estou fazendo o desenvolvimento aqui nesta branch.
Mas a branch
dev
não existe mais
Já foi mergeada na main
— pode abrir para a main
; )
Opa! Desculpem o sumiço... "meio" ocupado por aqui... Mas espero poder voltar a colaborar logo, logo (acho que o pior já passou, hehehe).
Claro, se ainda for necessário/possível.
Vou tentar seguir mais a risca as "guide lines" do projeto nas próximas contribuições. Já aprendi bastante com o pouco que contribui para o projeto no passado.
Valeu!
No site oficial da Receita Federal existe a informação sobre quando os dados foram atualizados:
Seria interessante essa informação fazer parte do ETL e da API.
Uma sugestão de implementação (depende de #95):
No comando
download
já lemos essa página para extrair as URLs dos arquivos CSV, então poderíamos identificar essa data e salvá-la junto com os dados. No PostgreSQL esse comando pode ser uma query única quecria uma tabela (caso ela não exista, apenas) efaz upsert no único registro dessa tabela com o conteúdo desse arquivo.last_update.txt
já no formatoYYYY-MM-DD
no comandodownload
413fbf2SaveLastUpdate() error
na interfacetransform.database
create.sql
,drop.sql
e o novo método, algo comoSaveLastUpdate(date string)
transform
/last_updated
na APIdocs/cliente.md
Exemplos de SQL:
Exemplo de resposta para
GET /last_updated