gilsondev / checkstatus-govbr

Projeto criado para acompanhar situação dos domínios .govbr registrados pela área pública
https://checkstatusgovbr.org
GNU General Public License v3.0
2 stars 1 forks source link

feat: Pipeline de dados para normalização e ingestão dos dados dos domínios #2

Closed gilsondev closed 1 year ago

gilsondev commented 1 year ago

Essa demanda tem o objetivo de desenvolver uma pipeline de dados em que irá executar os seguintes passos:

flowchart LR
    STP1(Coleta CSV) --> STP2(Coleta RDAP) --> STP3(Normalização) --> STP4(Ingestão DB)
  1. Coleta dos dados abertos: efetuar a busca do arquivo CSV a partir da plataforma de dados abertos e efetuar o download
  2. Coleta de dados RDAP: fazer uma busca no Registro.br a partir de cada domínio e buscar mais detalhes do seu registro via RDAP por meio do https://rdap.registro.br/domain/<dominio>. Os dados a serem coletados são:
    1. Nameservers (ldhName)
    2. Departamento (vcard fn)
    3. Email do Departamento (vcard email)
    4. Status do registro (ativo, inativo)
  3. Normalização dos dados: fazer o processamento dos dados baixados e corrigir os dados de algumas colunas como
    1. Corrigir o encoding dos nomes de ISO-8859-1 para UTF-8
    2. Formalizar o formato de data/hora para o ISO-8601
    3. Criar um campo document_normalized com somente os dígitos do CNPJ/CPF que vem da coluna documento
    4. Criar um campo slug com a normalização do domínio de stf.gov.br para stf
    5. Criar o campo organization_normalized com o nome da instituição em minúscula, sem caracteres e acentos a partir do valor da coluna nome
    6. Criar o campo agent_normalized com o nome do representante em minúscula, sem caracteres e acentos a partir do valor da coluna nome_contato
    7. Criar os campos deparment_normalized com o nome do departamento que fez o registro do domínio, sem caracteres e acentos a partir do valor coletado via RDAP
    8. Ingestão dos dado: Com todo o dataset processo nas etapas anteriores, podemos inserir na nossa base por meio de upsert

Schema e amostra dos dados

A tabela abaixo traz o schema da tabela de domínios:

Coluna Tipo Descrição
id INTEGER Identificador do dominio
domain STRING FQDN do dominio (ex.: stf.gov.br)
slug STRING Slug do dominio (ex.: stf)
document STRING Documento da organizacao
document_normalized STRING Documento normalizado da organizacao
organization STRING Nome da organizacao
organization_normalized STRING Nome normalizado da organizacao
agent STRING Nome do representante
agent_normalized STRING Nome normalizado do representante
nameservers ARRAY[STRING] DNS Nameservers associados ao dominio
department STRING Departamento responsavel pelo registro do dominio
department_normalized STRING Nome normalizado do Departamento
department_mail STRING E-mail do Departamento
status ARRAY[STRING] Status do dominio no momento
registered_at DATETIME Data/hora do registro do dominio
refreshed_at DATETIME Data/hora do registro de sua renovacao
created_at DATETIME Data/hora da criacao do registro na base
updated_at DATETIME Data/hora da atualizacao do registro na base

Abaixo temos um exemplo de como os dados serão inseridos na base:

id domain slug document document_normalized organization organization_normalized agent agent_normalized nameservers department department_normalized department_mail status registered_at refreshed_at created_at updated_at
1 stf.gov.br stf 000.531.640/0001-28 000531640000128 SUPREMO TRIBUNAL FEDERAL supremo tribunal federal Edmundo Veras dos Santos Filho edmundo veras dos santos filho {dns1.stf.gov.br, dns2.stf.gov.br} Secretaria de Tecnologia da Informação secretaria de tecnologia da informacao sti@stf.jus.br {active} 2014-09-25T21:00:19Z 2022-07-12T18:11:04Z 2014-09-26T03:00:00Z 2022-07-13T03:00:00Z
2 anvisa.gov.br anvisa 003.112.386/0001-11 003112386000111 Agencia Nacional de Vigilancia Sanitaria agencia nacional de vigilancia sanitaria William Dib william dib {ns1.anvisa.gov.br,ns2.anvisa.gov.br} Gabriela Ribeiro Botelho Marques gabriela ribeiro botelho marques seguranca.info@anvisa.gov.br {active} 2000-05-19T13:53:15Z 2020-03-09T17:34:43Z 2002-05-01T14:00:00Z 2020-03-10T03:00:00Z
gilsondev commented 1 year ago

Possibilidade de rodar a pipeline no Github actions, e uma das etapas serem feitas via Selenium (download do CSV):

https://github.com/MarketingPipeline/Python-Selenium-Action

gilsondev commented 1 year ago

Uma forma de executar a pipeline via Actions de forma periódica: https://futurestud.io/tutorials/github-actions-trigger-builds-on-schedule-cron