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
⚠️
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.
- 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
Antes de começar será necessário ter instalado em sua máquina o Node.js e o SQL Server 2019 Express.
cd powerbi-integration
npm install
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".
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
npm run dev
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
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
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.
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.
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
As seguintes ferramentas foram utilizadas na construção deste projeto:
Alessandro Lima de Miranda
Grupo OficialFarma