/lemon-elegibilidade

API desenvolvida para consulta da elegibilidade de possíveis clientes da Lemon Energia.

Primary LanguageJavaScript

API Lemon Energia 🍋

SobreInstalaçãoUtilizaçãoTestesTecnologias

Link da API

Sobre

API desenvolvida para consulta da elegibilidade de possíveis clientes da Lemon Energia. Recebe dados referentes ao consumo energético e responde com um relatório indicando se o requisitante é elegível ou não. Quando elegível, o relatório também retorna a projeção da economia de CO2 em kg/ano. Quando não elegível, retorna os motivos da inelegibilidade.

Instalação

Primeiramente, faça o clone do repositório.

git clone git@github.com:vdionysio/lemon-elegibilidade.git

Entre na pasta clonada.

cd lemon-elegibilidade

Escolha uma das opções a seguir para continuar a instalação:

1. Utilizando docker

Basta rodar o comando abaixo que o orquestrador ficará responsável pela instalação.

docker-compose up

1. Utilizando npm

Rode o comando abaixo para instalar todas as dependências.

npm install

Rode o comando abaixo para iniciar a aplicação.

npm start

2. Acesso

Para ambos os casos, quando a API estiver pronta, a mensagem "Escutando na porta 5000" aparecerá no terminal.

Acesse a API a partir da url http://localhost:5000/

Utilização

Atualmente, a API possui apenas uma rota POST /elegibilidade para checagem da elegibilidade do cliente.

POST /elegibilidade

A rota em questão é responsável por gerar um relatório sobre a elegibilidade do cliente, com base num JSON enviado como body da requisição.

A requisição aceita apenas as propriedades necessárias com as seguintes chaves:

chave tipo valores possíveis
numeroDoDocumento string CPF ou CNPJ sem pontuação
tipoDeConexao string 'monofasico', 'bifasico' ou 'trifasico'.
classeDeConsumo string 'residencial', 'industrial', 'comercial', 'rural' ou 'poderPublico'.
modalidadeTarifaria string 'azul', 'branca', 'verde' ou 'convencional'.
historicoDeConsumo array de inteiros lista de consumos mensais em em kWh. Mínimo 3 meses e máximo 12 meses.

Para ser elegível os seguintes critérios precisam ser satisfeitos:

Propriedade Valores Elegíveis
Classe de consumo Comercial, Residencial e Industrial.
Modalidade tarifária Convencional e Branca.
Consumo mínimo do cliente

Clientes com tipo de conexão Monofásica só são elegíveis caso tenham consumo médio acima de 400 kWh.

Clientes com tipo de conexão Bifásica só são elegíveis caso tenham consumo médio acima de 500 kWh.

Clientes com tipo de conexão Trifásica só são elegíveis caso tenham consumo médio acima de 750 kWh.

Para calcular a projeção da economia anual de CO2 foi utilizada a taxa de 84kg de CO2 para gerar 1000 kWh.

Exemplos de requisição para a rota POST /elegibilidade

Exemplo 1 - Elegível

Entrada

{
  "numeroDoDocumento": "14041737706",
  "tipoDeConexao": "bifasico",
  "classeDeConsumo": "comercial",
  "modalidadeTarifaria": "convencional",
  "historicoDeConsumo": [
    3878, // mes atual
    9760, // mes anterior
    5976, // 2 meses atras
    2797, // 3 meses atras
    2481, // 4 meses atras
    5731, // 5 meses atras
    7538, // 6 meses atras
    4392, // 7 meses atras
    7859, // 8 meses atras
    4160, // 9 meses atras
    6941, // 10 meses atras
    4597  // 11 meses atras
  ]
}

Saída

{
   "elegivel": true,
   "economiaAnualDeCO2": 5553.24,
}

Exemplo 2 - Não elegível

Entrada

{
  "numeroDoDocumento": "14041737706",
  "tipoDeConexao": "bifasico",
  "classeDeConsumo": "rural",
  "modalidadeTarifaria": "verde",
  "historicoDeConsumo": [
    3878, // mes atual
    9760, // mes anterior
    5976, // 2 meses atras
    2797, // 3 meses atras
    2481, // 4 meses atras
    5731, // 5 meses atras
    7538, // 6 meses atras
    4392, // 7 meses atras
    7859, // 8 meses atras
    4160, // 9 meses atras
  ]
}

Saída

{
  "elegivel": false,
	"razoesInelegibilidade": [
    "Classe de consumo não aceita",
    "Modalidade tarifária não aceita"
  ]
}

Testes

O projeto foi construído a partir de TDD. Para rodar os testes execute o seguinte comando na raiz do projeto:

npm test

No processo de TDD, foram desenvolvidos todos os testes unitários. Após o desenvolvimento da aplicação, foram adicionados testes de integração.

Atualmente, o projeto conta com um cobertura de 100%

Tecnologias

As seguintes ferramentas foram utilizadas na construção do projeto.

API(NodeJS)

Testes

Utilitários


Autor

Vinícius Dionysio