Desafio para avaliar o candidato que queira ingressar na Trace Finance como desenvolvedor back-end
Precisamos criar uma API que realiza pagamentos para uma carteira especifica.
Antes do pagamento ser autorizado é necessário validar se a carteira que está sendo utilizada possui limite para realizar a operação.
- Uma carteira deve possuir o nome do dono da mesma e o valor desse atributo não pode ser vazio ou nulo
- O valor máximo para um pagamento é de 1000 reais
- Durante o periodo diurno, o limite total é de 4000 reais
- Durante o periodo noturno, o limite total é de 1000 reais
- Durante o final de semana, o limite total é de 1000 reais
Criar uma API que realize as seguintes operações:
POST /wallets
{
"ownerName": String
}
Http status code: 201
{
"id": UUID
"ownerName": String
}
GET /wallets/{walletId}/limits
Http status code: 200
{
"value": Number
}
POST /wallets/{walletId}/payments
{
"amount": Number,
"Date": String
}
Http status code: 200
- O limite é diário e não único
- O limite diurno não interfere no limite noturno, ou seja, uma carteira pode pagar até 5000 reais em um dia de semana (4000 durante o dia, 1000 durante a noite)
- O periodo diurno corresponde ao horário entre as 06:00 até as 18:00, ou seja:
date >= 06:00 && date < 18:00 = diurno
- O periodo noturno corresponde ao horário entre as 18:00 até as 06:00, ou seja:
date >= 18:00 && date < 06:00 = noturno
Além da API, o desafio só será aceito para avaliação se contiver os seguintes requisitos:
- Repositório do desafio privado no Github
- Testes
- Instruções para subir a aplicação e suas dependencias para testes manuais
- Utilização de docker
- Arquitetura (DDD, Clean Architecture)
- Documentação (comente sobre decisões técnicas, escolhas, requisitos, etc)
- Código limpo (utilização de princípios como DRY, KISS, SOLID, YAGNI)
- Testes (unitários, e2e, etc)
- Padrão de commits (Conventional)
- O teste foi desenvolvido para ser feito independente da senioridade, portanto não é necessário implementar tudo que foi pedido na sessão Seria legal
- Foque em fazer muito bem a demanda, ou seja, os requisitos da sessão Pré-Requisitos
- Dar permissão de leitura para o usuário do github @tracefinancedev no repositório do desafio.
- Enviar um e-mail para [email protected] com o assunto: "Vaga Back-end Jr.". No corpo do e-mail, favor enviar a URL do repositório no Github.