|
| 1 | +# Show me the code |
| 2 | + |
| 3 | +### # DESAFIO: |
| 4 | + |
| 5 | +API REST para Gestão de Gastos! |
| 6 | + |
| 7 | +``` |
| 8 | +Funcionalidade: Integração de gastos por cartão |
| 9 | + Apenas sistemas credenciados poderão incluir novos gastos |
| 10 | + É esperado um volume de 100.000 inclusões por segundo |
| 11 | + Os gastos, serão informados atraves do protoloco JSON, seguindo padrão: |
| 12 | + { "descricao": "alfanumerico", "valor": double americano, "codigousuario": numerico, "data": Data dem formato UTC } |
| 13 | +``` |
| 14 | +``` |
| 15 | +Funcionalidade: Listagem de gastos* |
| 16 | + Dado que acesso como um cliente autenticado que pode visualizar os gastos do cartão |
| 17 | + Quando acesso a interface de listagem de gastos |
| 18 | + Então gostaria de ver meus gastos mais atuais. |
| 19 | + |
| 20 | +*Para esta funcionalidade é esperado 2.000 acessos por segundo. |
| 21 | +*O cliente espera ver gastos realizados a 5 segundos atrás. |
| 22 | +``` |
| 23 | +``` |
| 24 | +Funcionalidade: Filtro de gastos |
| 25 | + Dado que acesso como um cliente autenticado |
| 26 | + E acessei a interface de listagem de gastos |
| 27 | + E configure o filtro de data igual a 27/03/1992 |
| 28 | + Então gostaria de ver meus gastos apenas deste dia. |
| 29 | +``` |
| 30 | +``` |
| 31 | +Funcionalidade: Categorização de gastos |
| 32 | + Dado que acesso como um cliente autenticado |
| 33 | + Quando acesso o detalhe de um gasto |
| 34 | + E este não possui uma categoria |
| 35 | + Então devo conseguir incluir uma categoria para este |
| 36 | +``` |
| 37 | +``` |
| 38 | +Funcionalidade: Sugestão de categoria |
| 39 | + Dado que acesso como um cliente autenticado |
| 40 | + Quando acesso o detalhe do gasto que não possui categoria |
| 41 | + E começo a digitar a categoria que desejo |
| 42 | + Então uma lista de sugestões de categoria deve ser exibida, estas baseadas em categorias já informadas por outro usuários. |
| 43 | +``` |
| 44 | +``` |
| 45 | +Funcionalidade: Categorização automatica de gasto |
| 46 | + No processo de integração de gastos, a categoria deve ser incluida automaticamente |
| 47 | + caso a descrição de um gasto seja igual a descrição de qualquer outro gasto já categorizado pelo cliente |
| 48 | + o mesmo deve receber esta categoria no momento da inclusão do mesmo |
| 49 | +``` |
| 50 | +### # Avaliação |
| 51 | + |
| 52 | +Você será avaliado pela usabilidade, por respeitar o design e pela arquitetura da API. |
| 53 | +É esperado que você consiga explicar as decisões que tomou durante o desenvolvimento através de commits. |
| 54 | + |
| 55 | +* Springboot - Java - Maven (preferêncialmente) ([https://projects.spring.io/spring-boot/](https://projects.spring.io/spring-boot/)) |
| 56 | +* RESTFul ([https://blog.mwaysolutions.com/2014/06/05/10-best-practices-for-better-restful-api/](https://blog.mwaysolutions.com/2014/06/05/10-best-practices-for-better-restful-api/)) |
| 57 | +* DDD ([https://airbrake.io/blog/software-design/domain-driven-design](https://airbrake.io/blog/software-design/domain-driven-design)) |
| 58 | +* Microservices ([https://martinfowler.com/microservices/](https://martinfowler.com/microservices/)) |
| 59 | +* Testes unitários, teste o que achar importante (De preferência JUnit + Mockito). Mas pode usar o que você tem mais experiência, só nos explique o que ele tem de bom. |
| 60 | +* SOAPUI para testes de carga ([https://www.soapui.org/load-testing/concept.html](https://www.soapui.org/load-testing/concept.html)) |
| 61 | +* Uso de diferentes formas de armazenamento de dados (REDIS, Cassandra, Solr/Lucene) |
| 62 | +* Uso do git |
| 63 | +* Diferencial: Criptografia de comunicação, com troca de chaves. ([http://noiseprotocol.org/](http://noiseprotocol.org/)) |
| 64 | +* Diferencial: CQRS ([https://martinfowler.com/bliki/CQRS.html](https://martinfowler.com/bliki/CQRS.html)) |
| 65 | +* Diferencial: Docker File + Docker Compose (com dbs) para rodar seus jars. |
| 66 | + |
| 67 | +### # Observações gerais |
| 68 | + |
| 69 | +Adicione um arquivo [README.md](http://README.md) com os procedimentos para executar o projeto. |
| 70 | +Pedimos que trabalhe sozinho e não divulgue o resultado na internet. |
| 71 | + |
| 72 | +Faça um fork desse desse repositório em seu Github e nos envie um Pull Request com o resultado, por favor informe por qual empresa você esta se candidatando. |
| 73 | + |
| 74 | +### # Importante: não há prazo de entrega, faça com qualidade! |
| 75 | + |
| 76 | +# BOA SORTE! |
0 commit comments