- Faça um fork deste teste na sua conta do github.
- Crie uma branch com o seu nome.
- Realize commits com frequencia.
Implementar uma API REST que:
- Receba um arquivo CSV contendo operações financeiras.
- Realize validações específicas nas operações.
- Registre as operações validadas em um banco de dados.
- Gere um resumo das operações não validadas.
- A API deve oferecer um endpoint para o upload de arquivos CSV.
- O arquivo deve seguir o formato especificado:
from;to;amount
.
- Valores Negativos: Operações com valores negativos são consideradas inválidas.
- Operações Duplicadas: Uma operação é duplicada se existir outra operação no arquivo com os mesmos valores de
to
,from
, eamount
. Tais operações são consideradas inválidas. - Valores Suspeitos: Operações com valores acima de R$50.000,00 são marcadas como suspeitas, mas ainda válidas para inclusão no banco de dados.
- Os Valores estão em centavos, desta forma 100 = R$1
- O arquivo deve ser lido e as operações devem ser validadas conforme as regras acima.
- As operações validadas devem ser armazenadas em um banco de dados (você decide).
- Um resumo das operações não validadas (com o motivo da invalidade) deve ser gerado e armazenado no banco de dados juntamente com o nome do arquivo.
Após o processamento do arquivo, a API deve retornar uma resposta contendo:
- Número de operações validadas e inseridas no banco de dados.
- Resumo das operações não validadas, incluindo o motivo.
- Utilize o script transactionGenerator.js para gerar o arquivo com as transaçoes.
- Uso de Node.js com TypeScript.
- Aplicação de conceitos para a criação de uma API REST eficiente.
- Estratégias para a solução de problemas em tempo real.
- Capacidade de testar e validar sua solução.
- Dockerização da aplicação (se possível dentro do tempo alocado).
- Persistência em banco de dados.
- Testabilidade e Manutenibilidade.
- Eficiência e Preparo para Escalabilidade.
- Modularidade, Organização e Reutilização de Código.
- A preocupação com segurança também será considerada um plus na sua solução.