License: | GPLv3 |
---|
Este projeto visa ser uma API REST para o cálculo de participação de lucros de acordo com regras específicas.
- Os funcionários podem ser cadastros pelo endpoint /api/employees/ (Requer estar autenticado)
- os departamentos podem ser cadastrados pelo endpoint /api/departments/ (Requer estar autenticado)
- O calculo pode ser feito pelo endpoint /api/calculate/ (não requer autenticado)
Mecanismo de autenticação padrão é o django-login.
No swagger existe um botão Django Login, use-o para autenticação.
$ docker-compose -f local.yml run django createsuperuser
- Foi estabelecido um peso por área de atuação:
- Peso 1: Diretoria;
- Peso 2: Contabilidade, Financeiro, Tecnologia;
- Peso 3: Serviços Gerais;
- Peso 5: Relacionamento com o Cliente;
- Foi estabelecido um peso por faixa salarial e uma exceção para estagiários:
- Peso 5: Acima de 8 salários mínimos;
- Peso 3: Acima de 5 salários mínimos e menor que 8 salários mínimos;
- Peso 2: Acima de 3 salários mínimos e menor que 5 salários mínimos;
- Peso 1: Todos os estagiários e funcionários que ganham até 3 salários mínimos;
- Foi estabelecido um peso por tempo de admissão:
- Peso 1: Até 1 ano de casa;
- Peso 2: Mais de 1 ano e menos de 3 anos;
- Peso 3: Acima de 3 anos e menos de 8 anos;
- Peso 5: Mais de 8 anos
Para o desenvolvimento deste projeto algumas divisões foram realizadas.
- Separação em 2 pacotes principais
- API REST
- Pacote de cálculo de distribuição e motor de especificação de regras.
Arredondamento de valores para BAIXO: Diante da necessidade de arredondamento dos valores calculos, é realizada o arredondamento para BAIXO, para evitar extrapolar o valor alvo.
A API calcula somente em RUNTIME, não faz persistência do cálculo.
Esta aplicação tradicional Django + DRF
Aplicação principal se encontra dentro da pasta profit_sharing/:
- specifications.py: Contém todas as especificações das regras (essas especificações usam o pacote profit_calc * views.py : Contém os controladores dos endpoints
- models.py: Persistência + Integração com profit_calc
Para executar os testes, gere o report HTML:
$ docker-compose -f local.yml run django coverage run -m pytest $ docker-compose -f local.yml run django coverage html $ google-chrome htmlcov/index.html
$ docker-compose -f local.yml run django pytest
- Dinamizar motor de regras (Talvez uma DSL ?)
- Persistência do cálculo em 2 etapas (dry-run & persist)
- Expor mecanismo de arredondamento
- Criar endpoint para composição de regras