computacao-ufcg/eureca-backend

Criar a rota /retidos

Closed this issue · 4 comments

Essa rota deve retornar os alunos que estão "atrasados". Os alunos retornados devem cair nas categorias que Fubica apresentou. Estão no código como constantes (acredito que sejam UNFEASIBLE, LATE e CRITICAL).

Trazer no json de resposta: matricula, categoria, feasibility; successRate; averageLoad; cost; pace; courseDurationPrediction; risk;

Notem que essas métricas da resposta podem vir em um objeto do tipo br.edu.ufcg.computacao.eureca.backend.core.models.Metrics. Um objeto desse tipo pode ser criado chamando o método estático br.edu.ufcg.computacao.eureca.backend.core.util.MetricsCalculator(Student student). Já a classe de risco pode ser calculada chamando student.getRiskClass().

Entendido. Seguindo o padrão do projeto, eu fiquei com uma dúvida apenas em uma parte: na questão da lógica de estabelecer o status retido. Isto é, a classe core.dao.scsvfiles.mapentries.StudentData possui um atributo status do tipo core.dao.scsvfiles.mapentries.StudentStatus, a qual agora foi incluído o status WITHHELD. Porém, na classe StudentData há um método que realiza a conversão do status em string para a classe StudentStatus, que já possui uma lógica, então eu precisaria saber como chega essa string no método para implementar a nova lógica de retidos.

O StudentStatus é outra coisa. São três status possíveis: ACTIVE, DROPOUT, ALUMUNUS, correspondente a alunos ativos, evadidos e egressos, respectivamente. Os alunos retidos são um subconjunto dos alunos ativos. Para saber se um student é retido, você precisa verificar se o status do aluno é ACTIVE e se student.getRiskClass() retorna UNFEASIBLE, LATE ou CRITICAL. Em resumo, não é preciso criar o status WITHHELD nem mudar nada nos dados do student.

Tudo bem, entendi.