Por favor leia este documento do começo ao fim, com muita atenção. O intuito deste teste é avaliar seus conhecimentos técnicos de programação.
O teste consiste em parsear este arquivo de texto CNAB e salvar suas informações (transações financeiras) em uma base de dados a seu critério.
- Primeiro, faça um fork deste projeto para sua conta no Github (crie uma se você não possuir).
- Em seguida, implemente o projeto tal qual descrito abaixo, em seu clone local.
- Por fim, envie via e-mail o projeto ou o fork/link do projeto para o RH ([email protected]).
Você recebeu um arquivo CNAB com os dados das movimentações finanaceiras de várias lojas.
É necessário que estes dados sejam importados para um banco de dados.
Sua tarefa é criar uma interface web que aceite upload do arquivo CNAB, normalize os dados e armazene-os em um banco de dados relacional ou NoSQL e exiba essas informações em tela.
| Campo | Inicio | Fim | Tamanho | Descrição |
|---|---|---|---|---|
| Tipo | 1 | 1 | 1 | Tipo da transação |
| Data | 2 | 9 | 8 | Data da ocorrência |
| Valor | 10 | 19 | 10 | Valor da movimentação (o valor precisa ser divido por cem para normalizá-lo) |
| CPF | 20 | 30 | 11 | CPF do beneficiário |
| Cartão | 31 | 42 | 12 | Cartão utilizado na transação |
| Dono da loja | 43 | 56 | 14 | Nome do representante da loja |
| Nome da loja | 57 | 74 | 18 | Nome da loja |
| Tipo | Descrição |
|---|---|
| 1 | Débito |
| 2 | Crédito |
| 3 | Pix |
| 4 | Financiamento |
Sua aplicação Web Deve:
- Possuir uma tela para fazer o upload do arquivo;
- Interpretar (parsear) o arquivo recebido, normalizar os dados, e salvar corretamente as informações em um banco de dados;
- Verificar se os dados de CPF estão válidos;
- Exibir uma lista das operações importadas por lojas, e nesta lista deve conter um totalizador do saldo em conta;
- Exibir uma lista das operações que deram errado;
- Ser escrita obrigatoriamente em .NET em versões recentes, pode ser .NET Core, ASP.MVC, etc;
- Ser simples de configurar e rodar. Ela deve utilizar apenas linguagens e bibliotecas livres ou gratuitas;
- Git com commits atomicos e bem descritos;
- PostgreSQL, MySQL, SQL Server ou MongoDb (pode usar qualquer banco relacional ou NoSQL, lembrando que o NoSQL é opcional);
- Readme file descrevendo bem o projeto e seu setup;
- Incluir informação descrevendo como consumir o endpoint da API.
Você ganhará pontos adicionais se:
- Lidar com autenticação ou autorização (mais pontos extras se a autenticação for feita via OAuth);
- Documentar sua API;
- Desenvolver testes automatizados;
- Utilizar Docker Compose.
Avaliaremos a sua familiarização com as bibliotecas padrões (standard libs), bem como sua experiência com programação orientada a objetos a partir da estrutura de seu projeto.
Boa sorte!