Essa é uma API construída em Node.js com a finalidade de verificar a viabilidade/elegibilidade de um pontencial cliente da Lemon. Por meio da análise do histórico de contas de energia, tipo de conexão e a classe do cliente essa análise se torna possível, resultando em um calculo final com o valor de CO2 a ser economizado pelo cliente, caso ele comesse a utilizar energia limpa.
- Node.js
- Jest
- Docker
- Docker Compose
- Validação dos dados de entrada
- Validação dos critérios de elegibilidade por cliente
- Calculo de consumo mínimo por cliente para projeção de economia de CO2
- Git (≃v2.34.1)
- Docker (≃v24.0.5)
- Docker Compose (≃v2.3.3)
- Node (≃v18.18.0)
- npm (v9.8.1)
Clonar o repositório:
$ git clone [email protected]:viniciussaturnino/api-lemon.git
Acessar a pasta:
$ cd api-lemon
Rodar o container:
$ docker compose up --build
ou:
$ make build
Comando para rodar a suíte de testes:
$ npm run test
ou:
$ make test
Comando para rodar a suíte de testes com relatório de coverage:
$ npm run cov
ou:
$ make coverage
Está configurada na API, uma rota de verificação de status da aplicação, chamada
de healthcheck
que retorna um json
no seguinte formato caso a aplicação esteja
rodando com sucesso:
{
"uptime": 3.953783992,
"message": "OK",
"timestamp": 1698862001840
}
Em caso de falha na API essa rota retorna um status 503
com a
mensagem de erro.
As requisições para verificar elegibilidade de um cliente são feitas pela rota
/customer/validate
e é um método POST
com o seguinte formato:
{
"numeroDoDocumento": "05561699130",
"tipoDeConexao": "bifasico",
"classeDeConsumo": "comercial",
"modalidadeTarifaria": "convencional",
"historicoDeConsumo": [
3878,
9760,
5976,
2797,
2481,
5731,
7538,
4392,
7859,
4160,
6941,
4597
]
}
curl --request POST \
--url http://localhost:3000/customer/validate \
--header 'Content-Type: application/json' \
--data '{
"numeroDoDocumento": "05561699130",
"tipoDeConexao": "bifasico",
"classeDeConsumo": "comercial",
"modalidadeTarifaria": "convencional",
"historicoDeConsumo": [
3878,
9760,
5976,
2797,
2481,
5731,
7538,
4392,
7859,
4160,
6941,
4597
]
}'
Response Body esperado:
{
"elegivel": true,
"economiaAnualDeCO2": 5553.24
}
curl --request POST \
--url http://localhost:3000/customer/validate \
--header 'Content-Type: application/json' \
--data '{
"numeroDoDocumento": "05561699130",
"tipoDeConexao": "bifasico",
"classeDeConsumo": "rural",
"modalidadeTarifaria": "verde",
"historicoDeConsumo": [
3878,
9760,
5976,
2797,
2481,
5731,
7538,
4392,
7859,
4160
]
}'
Response Body esperado:
{
"elegivel": false,
"razoesDeInelegibilidade": [
"Classe de consumo não aceita",
"Modalidade tarifária não aceita"
]
}