/powerbi-integration

Integração e criação de base de dados de pedidos para criação de dashboard

Primary LanguageTypeScriptApache License 2.0Apache-2.0

INTEGRAÇÃO VTEX, SQL Server e POWER BI

Descrição

Módulo para obter os dados de pedidos, centralizar em base local e utilizar as informações na criação de Dashboards

Status do Projeto: Em desenvolvimento ⚠️

Objetivo

Criar um módulo capaz de executar a cada determinado período de tempo uma requisição na api de pedidos da vtex - solicitando novas entradas de compras - e faça a atualização de pedidos já existentes na base de dados local para a utilização de todas as informações necessárias na geração de Dashboards e demais planilhas.

Funcionalidades

  • Obtenção da lista de ID's dos pedidos do período especificado
  • Obtenção de informações detalhadas dos pedidos
  • Manipulação das informações (remoção de dados que não serão armazenados e dados duplicados ou que já existem no banco de dados) dos pedidos detalhados
  • Cadastro dos novos pedidos/informações no banco de dados
  • Coleta de novos pedidos a cada 30 minutos
  • Atualização no banco de dados das informações dos pedidos a cada 20 minutos
  • Escrita e leitura de status / logs das requisições em disco local
  • Realização de back-up automático à meia-noite

Inicialização, instalação das dependências e execução de testes.

Pré-requisitos

Antes de começar será necessário ter instalado em sua máquina o Node.js e o SQL Server 2019 Express.

Instalando as dependências

Acesse a pasta raíz do projeto pelo terminal

cd powerbi-integration

Instale as dependências do projeto com:

npm install

Iniciar a aplicação

Crie o arquivo .env na raíz do projeto contendo os tokens de autenticação e configurações do banco de dados. Para a criação dessas variáveis de ambiente, siga o arquivo de exemplo .env.example que se encontra também na raíz. Certifique-se de ter feito a importação no banco de dados da tabela contendo o status da última requisição feita. Obs: Para obter os tokens de acesso, acesse o perfil da sua loja VTEX e procure por: "X-VTEX-API-AppKey" e "X-VTEX-API-AppToken" e "VTEX ACCOUNT NAME".

Banco de Dados

Para importar o banco de dados é necessário apenas abrir o script que está na pasta database como uma nova query no SQL Server Management Studio e executar. Após ter o banco já instanciado, é necessário preencher as informações da tabela requestStatus com o horário que se deseja iniciar a obtenção de pedidos.

Obs.: é recomendado que o horário inserido seja próximo no limite de até 8 horas do horário da build, caso contrário, será necessário atualizar manualmente no código o horário máximo para obtenção dos pedidos por dois fatores:

1 - A VTEX limita em até 30 páginas sua API

2 - Evitar que ocorra estouro de pilha na execução dos métodos de manipulação e remoção de itens duplicados

Para iniciar a geração dos pedidos em modo de desenvolvimento

npm run dev

Execução de testes

Para inicar a execução dos testes:

npm test

Para realização dos testes utilizando o modo watch:

npm run test:watch

Para gerar a cobertura de códigos:

npm run test:cov

Build

Para gerar o build do projeto execute:

npm run build

Logo após será possível iniciar a aplicação em modo produção com:

npm start

Especificações

Limite de pedidos sendo manipulados

Devido aos laços de repetição e recursividade utilizado em alguns módulos para a limpeza de itens que por ventura venham duplicados, o limite máximo de horas - em valor aproximado pois pode variar de acordo com a quantia de pedidos do período - está entre 6 e 9 horas.

Tolerância à erros

Por rodar processos filhos, todo erro que ocorrer em algum dos childs lançados durante obtenção, atualização ou backup não derruba o sistema por completo, apenas o processo que gerou o erro é finalizado ou, se o erro for em pontos não esperados, o processo filho fica parado sem continuidade mas o processo principal consegue reexecutar o procedimento lançando uma nova thread após o período de tempo determinado para cada função.

Tempos de execução

Tempo estimado para a finalização de cada processo:

  • Download de pedidos: 1/2 minutos (Período de 9 horas)
  • Atualização de pedidos (execução de blocos de 500 a cada 20 segundos): 6/9 minutos
  • Backup da base de dados: 1 minuto

🔧 Ferramentas

As seguintes ferramentas foram utilizadas na construção deste projeto:

Licença

Badges

Autores

Alessandro Lima de Miranda

Linkedin Badge Gmail Badge Github Badge

Grupo OficialFarma

Linkedin Badge Github Badge