Enterprise Management API
- Deve ser possível cadastrar um departamento;
- Deve ser possível consultar informações de um departamento;
- Deve ser possível consultar todos os departamentos;
- Deve ser possível atualizar um departamento;
- Deve ser possível deletar um departamento.
- Não deve ser possível cadastrar um departamento com nome duplicado;
- Não deve ser possível deletar um departamento se houver projeto ativo;
- Não deve ser possível deletar um departamento se houver funcionários ativos.
- Deve ser possível cadastrar um funcionário;
- Deve ser possível consultar informações de um funcionário;
- Deve ser possível consultar todos os funcionários;
- Deve ser possível atualizar um funcionário;
- Deve ser possível deletar um funcionário.
- Não deve ser possível cadastrar um funcionário caso já exista um funcionário com mesmo nome, cpf ou rg;
- Não deve ser possível um funcionário supervisionar ou trabalhar em um projeto que exceda sua carga horária.
- Deve ser possível cadastrar um projeto;
- Deve ser possível consultar um projeto;
- Deve ser possível consultar todos os projetos;
- Deve ser possível atualizar um projeto;
- Deve ser possível deletar um projeto;
- Deve ser possível substituir todos os funcionários do projeto;
- Deve ser possível adicionar funcionários a um projeto;
- Deve ser possível remover funcionários de um projeto;
- Deve ser possível obter as estatísticas do projeto;
- Deve ser possível marcar um projeto como concluído.
- A quantidade de horas necessárias para a conclusão do projeto deve ser calculada com base na quantidade de horas concluídas pelos funcionários e no número de horas restantes;
- A quantidade de horas realizadas no projeto deve ser baseada na quantidade de horas trabalhadas pelos funcionários e no número de semanas passadas desde o último cálculo;
- Não deve ser possível adicionar um funcionário ou supervisor em um projeto caso eles não tenham horas disponíveis;
- Os funcionários devem ser desassociados do projeto ao marcá-lo como concluído.
- Os dados da aplicação precisam estar persistidos em um banco MySQL;
- Todas as listas de dados precisam estar paginadas com 20 itens por página;
- A API deve conter testes automatizados;
- A API deve conter documentação.
Documentação: https://documenter.getpostman.com/view/20700565/2s93Xx1jaa
📄 Clone o projeto em sua máquina;
🔐 Tendo feito isso, entre na pasta do projeto e crie o arquivo .env;
📄 Uma vez criado, ele deverá conter:
DATABASE_NAME=database
DATABASE_USER=docker
DATABASE_PASSWORD=docker
DATABASE_HOST=db_api_enterprise_management
DATABASE_PORT=3306
📂 Em seguinda, abra o terminal na pasta do projeto e rode o seguinte comando:
docker compose up
⏳ Aguarde até que os containers estejam em execução;
📡 Com os containers prontos, você poderá acessar o servidor usando:
http://localhost:8000
🧪 Caso queira executar os testes, use:
python manage.py test