Sobre • Instalação • Utilização • Testes • Tecnologias
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.
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:
Basta rodar o comando abaixo que o orquestrador ficará responsável pela instalação.
docker-compose up
Rode o comando abaixo para instalar todas as dependências.
npm install
Rode o comando abaixo para iniciar a aplicação.
npm start
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/
Atualmente, a API possui apenas uma rota POST /elegibilidade para checagem da elegibilidade do cliente.
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"
]
}
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%
As seguintes ferramentas foram utilizadas na construção do projeto.
API(NodeJS)
Testes
Utilitários
Vinícius Dionysio