Desafio AZ - Classificação de propostas
Desafio para avaliação de candidato
Instruções para rodar o projeto (Backend e Frontend)
Informações sobre o projeto
- Os dados são mantidos em memória.
- Ao subir o projeto de frontend, o mesmo estará utilizando Vue CLI (não é necessário instalar a dependência separadamente).
- Para auxiliar na estilização e componentização do projeto, foi utilizado o framework Vuetify.
Requerimentos
- Node.js (versão 10 ou superior)
- Maven
Obs: O projeto não utiliza banco de dados, não é necessário nada para conexão desse tipo.
Para rodar o backend
- Na pasta "server", rode o comando para gerar o package:
mvn clean install
- Para rodar o projeto com o jar gerado, use o comando:
java -jar target/challenge-0.0.1-SNAPSHOT.jar
Obs: o backend está configurado para rodar na porta 9000.
Para rodar o frontend
- Para instalar as dependências do projeto, use o comando:
npm install
- Após instalar as dependências, use o comando para rodar em modo de desenvolvimento:
npm run serve
Instruções para o desafio
- O candidato deverá criar um fork no git e criar uma branch com o nome e sobrenome do canditado(ex: desafio_Jose_Silva) para o desenvolvimento da atividade;
- O projeto deverá ser divido em dois pacotes, um do front-end e um do back-end;
- O front deverá ser feito em Vue.js e o back deverá ser feito com spring boot;
- Fica a critério do candidato a implementar testes unitários;
- Histórico de commit será levado em consideração para acompanhamento da evolução do desafio, onde iremos avaliar o passo a passo desde a criação do projeto, criação dos pacotes back e front, criação dos serviços, criação das funcionalidades, etc. Portanto sugerimos que a cada passo realizado seja feito um commit com um comentário explicativo do que foi realizado, exemplo:
- Commit 1- Criação da estrutura inicial do projeto;
- Commit 2- Criação do pacote back-end;
- Commit 3- Criação do pacote front-end;
- Commit 4- Criação das entidades de persistência;
- Commit x- Criação da funcionalidade Criar Licitação;
- Ao final do desafio, criar um documento explicando como configurar e subir a aplicação;
Desafio
-
Desenvolver uma aplicação web responsável por classificar as propostas de uma licitação.
-
Licitação
- Deve conter os atributos
- descrição (string)
- tipo classificação (enum ["Menor Preço", "Nota Preço"])
- Incluir, excluir, atualizar
- Deve conter os atributos
-
Proposta
- Deve conter os atributos
- fornecedor (string)
- nota (bigdecimal) somente para tipo NOTA_PRECO
- preço (bigdecimal)
- data cadastro (string)
- classificação (integer)
- licitação (objeto)
- Incluir, excluir, atualizar, classificar
- Deve conter os atributos
-
Regras de classificação
- Para licitações do tipo "Nota Preço" classificar a colocação pela nota, preço e data cadastro
Fornecedor A, nota 8.0, preço 110.00, data 23/10/2019 10:00 Fornecedor B, nota 8.0, preço 110.00, data 23/10/2019 10:30 Fornecedor C, nota 8.9, preço 115.00, data 23/10/2019 10:40 Fornecedor D, nota 7.5, preço 90.00, data 23/10/2019 10:50 A ordem de classificação: Fornecedor C, Fornecedor A e Fornecedor B, Fornecedor D
- Para licitações do tipo "Menor Preço" classificar a colocação pelo preço e data cadastro
Fornecedor A, preço 115.00, data 23/10/2019 10:00 Fornecedor B, preço 115.00, data 23/10/2019 10:30 Fornecedor C, preço 100.00, data 23/10/2019 10:40 A ordem de classificação: Fornecedor C, Fornecedor A e Fornecedor B
- Para licitações do tipo "Nota Preço" classificar a colocação pela nota, preço e data cadastro