Desafio para vaga de backend na MaisTodos
- Deixe o código em inglês;
- Use Git;
- Procure fazer
micro commitsque são muitos commits com menos código isso nos ajuda a compreender a sua lógica; - Pergunte-nos sobre qualquer dúvida que venha a surgir durante o desenvolvimento;
- Documente detalhadamente quaisquer referencias/ferramentas que você pesquisar;
- Crie um repositório público e nos passe o link para acompanharmos o desenvolvimento;
- Faça testes;
Uma grande rede varejista do ramo alimentício, irá utilizar a carteira digital da MaisTODOS para dar cashback para os seus clientes e gerar vendas campanhas, etc.
Então, basicamente vamos precisar de uma API para fazer todo o gerenciamento desses valores e repassar para uma outra API de cashback para dar ao cliente o valor do benefício de fato.
Na API, ficaria toda a lógica e controle da aplicação do cashback.
Sendo responsável pelas seguintes ações:
- Recebe os dados via API
- Faz o processamento dos dados
- Faz uma nova requisição para uma API externa de cashback da MaisTODOS
Fique livre para definir a regra de aplicação
- Ex: 10% do valor total
- Ex2: Fazer por tipe de produto, tipo A possui 5% e tipo B possui 15%
Vamos deixar alguns modelos de API e schema mais à frente, porém são opcionais.
1 - ERP do varejista faz a requisição nesta API a ser construída:
POST /api/cashback
{
"sold_at": "2026-01-02 00:00:00",
"customer": {
"document": "00000000000",
"name": "JOSE DA SILVA",
},
"total": "100.00",
"products": [
{
"type": "A",
"value": "10.00",
"qty": 1,
},
{
"type": "B",
"value": "10.00",
"qty": 9,
}
],
}Onde:
- customer -> document: é o cpf do cliente
- products -> type: é a classificação do produto, você irá definir os valores mas podemos usar (A, B, C)
- products -> value: é o valor unitário do produto
- products -> qty: é a quantidade de cada produto
2 - A API recebe e faz a validação os dados
Exemplos de validação:
- cpf inválido
- soma errada dos valores
- type de produto fora do formato
- data inválida
3 - A API deve salvar todos os dados recebidos, para termos como conciliar posteriormente com o cliente. Salvar também o retorno da API de cashback, para gestão de reenvios, etc.
4 - A API será responsável por todo o cálculo de cashback (Fique livre para definir as regras)
5 - Com os valores já corretos, vamos repassar o valor do cashback para uma API da MaisTODOS criar o cashback de fato
Seguem exemplos da requisição e resposta da API externa da MaisTODOS de cashback:
URL: https://5efb30ac80d8170016f7613d.mockapi.io/api/mock/Cashback
Método: POST
Data: document -> Cpf do cliente
cashback -> valor calculado
Exemplo com o curl
curl --request POST \
--url https://5efb30ac80d8170016f7613d.mockapi.io/api/mock/Cashback \
--header 'Content-Type: application/json' \
--data '{
"document": "33535353535",
"cashback": "10"
}'
Retorno da api:
{
"createdAt": "2021-07-26T22:50:55.740Z",
"message": "Cashback criado com sucesso!",
"id": "NaN",
"document": "33535353535",
"cashback": "10"
}O acesso à API deve ser aberto ao mundo, porém deve possuir autenticação e autorização.
Você está livre para definir a melhor arquitetura e tecnologias para solucionar este desafio. Todos os itens descritos nos campos são sugestões, mas não se esqueça de contar sua motivação no arquivo README que deve acompanhar sua solução, junto com os detalhes de como executar seu programa. Documentação e testes serão avaliados também =).
Nós solicitamos que você trabalhe no desenvolvimento desse sistema sozinho e não divulgue a solução desse problema pela internet.
Boa sorte!
Equipe MaisTodos
