Analisando propostas

Script de extração de dados de sites usando a ferramenta Botcity na linguagem phyton

Publicado em 06 de Dezembro de 2022 dias na TI e Programação

Sobre este projeto

Aberto

Preciso extrair dos sites relacionados abaixo os relatórios em csv ou xls usando o agendamento da ferramenta botcity https://documentation.botcity.dev/overview/ e stagiar estas informações em banco de dados interno.  Segue relação de sites e transformações esperadas.

MyHonda(Sales Force):

Transformação para todos os relatórios extraídos desta plataforma
Nos cabeçalhos
Remover pontuação > trocar caracteres Latinos por ASCII > Troca espaços entre nos nomes por “_” > Caixa alta para todos

Acompanhamento SSI - https://myhonda.force.com/leads/s/report/00O61000004UyxKEAS/acompanhamento-ssi-2w
Trocar em todo o data frame caracteres de Latin para ASCII

Insert no banco
nome da tabela : ds00_acompanhamento_ssi
criar a primeira tabela com os campos apresentados no relatório
antes de inserir qualquer dado truncar a tabela
testar se o campo chassi está com valores com 17 dígitos
para as  inserções testar se os nomes dos campos do relatório são iguais os da tabela, se sim realizar insert, se não tratar o erro.

No ambiente Freedom usamos um banco oracle para receber esta dados, em phyton usamos o módulo cx_oracle a função Cursor.executemany(),  se mostrou com uma melhor performance pois este relatório costuma ter mais de 1000 linhas


Resposta Pesquisa - https://myhonda.force.com/leads/s/report/00O4M000004nFVFUA2/ssi-2w-resposta-pesquisa-satisfa%C3%A7%C3%A3o
Transformações específicas:
Trocar em todo o data frame caracteres de Latin para ASCII
Renomear coluna que começava com número: 
coluna correta =  coluna que foi renomeada
TRES_PRINCIPAIS_MOTIVOS_ESCOLHA_HONDA_MOTO = '3_PRINCIPAIS_MOTIVOS_ESCOLHA_HONDA_MOTO'

Insert no banco
nome da tabela : ds00_respostas_ssi
criar a primeira tabela com os campos apresentados no relatório
antes de inserir qualquer dado truncar a tabela
testar se o campo produto__veiculo está com 17 digitos
para as inserções testar se os nomes dos campos do relatório são iguais os da tabela, se sim realizar insert, se não tratar o erro.

Usando a linguagem de programação R tenho um problema intermitente com o campo COMENTARIO_PROCESSO_VENDAS_DEALER_MOTO que recebe os comentários dos clientes, a percepção que tive foi que a quebra de linha realizada pelo cliente no comentário ou a inserção do mesmo símbolo do separador quebrava a ordem dos campos do relatório


Quantidade de OS - https://myhonda.force.com/leads/s/report/00O610000041PUgEAM/dealer-tsi-quantidade-os-fechada-m%C3%AAs
Transformações específicas:
Trocar em todo o data frame caracteres de Latin para ASCII

Insert no banco
nome da tabela : ds00_quantidade_os_fechada
criar a primeira tabela com os campos apresentados no relatório
antes de inserir qualquer dado truncar a tabela
para as inserções testar se os nomes dos campos do relatório são iguais os da tabela, se sim realizar insert, se não tratar o erro.


TSI Base de respostas - https://myhonda.force.com/leads/s/report/00O4M000004u7fhUAA/tsi-base-de-respostas-completo
Transformações específicas:
Trocar em todo o data frame caracteres de Latin para ASCII
CPF_CONSULTOR_TECNICO remover traços e pontos e preencher com 0 a esquerda até completar 11 digitos

Insert no banco
nome da tabela : ds00_respostas_tsi
criar a primeira tabela com os campos apresentados no relatório
antes de inserir qualquer dado truncar a tabela
testar se o campo chassi__serial está com 17 dígitos
para as inserções testar se os nomes dos campos do relatório são iguais os da tabela, se sim realizar insert, se não tratar o erro.

Este relatório tem 4 campos de comentários “COMENTARIO_”  que apresentaram o mesmo problema de quebra de relatório em R



Teleport:
https://www.teleport.com.br/honda
Trocar em todo o data frame caracteres de Latin para ASCII

renomear coluna
coluna correta =  coluna que foi renomeada
DATA_VCTO_1_PARCELA = 'DATA_VCTO_1ª_parcela'

cpfcnpj – remover máscara do cnpj

insert no banco
nome da tabela : ds00_acompanhamento_teleport
criar a primeira tabela com os campos apresentados no relatório
antes de inserir qualquer dado truncar a tabela
testar se o campo chassis está com 17 dígitos
para as inserções testar se os nomes dos campos do relatório são iguais os da tabela, se sim realizar insert, se não tratar o erro.


HSF:
https://www3.honda.com.br/corp/ihs/portal/#/login - site com captcha
Transformações específicas:
Trocar em todo o data frame caracteres de Latin para ASCII
CPF_VENDEDOR – preencher com 0 a esquerda até completar 11 digitos
Renomear colunas que tinham símbolo %
coluna correta =  coluna a ser renomeada
PERC_AMORTIZADO = '_AMORTIZADO',
PERC_MENSAL = '_MENSAL'

Insert no banco
nome da tabela : ds00_acompanhamento_bhb
criar a primeira tabela com os campos apresentados no relatório
antes de inserir qualquer dado truncar a tabela
testar se o campo cpf_vendedor está com 11 dígitos



konviva
https://academiadevendashonda.konviva.com.br/lms/#/home
Trocar em todo o data frame caracteres de Latin para ASCII

Insert no banco
nome da tabela : ds00_acompanhamento_treinamento
criar a primeira tabela com os campos apresentados no relatório e o campo diainserido ‘dd-mm-yyyy h24:mi:ss’
antes de inserir qualquer dado truncar a tabela
testar se o campo login está com 11 dígitos

para as inserções testar se os nomes dos campos do relatório são iguais os da tabela, se sim realizar insert, se não tratar o erro.
Ao realizar a inserção imputar o valor do sysdate com o formato ‘dd-mm-yyyy h24:mi:ss’ – hoje eu insiro somente com ‘dd-mm-yyyy’ porém, caso este relatório seja rodado mais de 1 vez por dia isso seria um problema no pipeline.

Contexto Geral do Projeto

O objetivo do projeto é retirar informações de plataformas externas que não fornecem API para integrações bem como usar ferramenta inclusa no orçamento interno do negócio que permite o uso de phyton para a manipulação destes dados.

Categoria TI e Programação
Subcategoria Programação
Qual é o alcance do projeto? Alteração média
Isso é um projeto ou uma posição de trabalho? Um projeto
Tenho, atualmente Eu tenho especificações
Disponibilidade requerida Conforme necessário
Integrações de API Outros (Outras APIs)
Funções necessárias Desenvolvedor

Prazo de Entrega: Não estabelecido

Habilidades necessárias