~~ODT~~
Lista de Alunos Laureados
O usuário da Pro Reitoria de Graduação, PROGRAD, semestralmente, organiza as cerimônias de colação de grau e, para tanto, faz-se necessário saber quais discentes estão aptos a receber a medalha de mérito estudantil.
A medalha de mérito estudantil é entregue aos alunos de cada curso que obtiverem o maior Índice de Eficiência Acadêmica Normalizado (IEAN), dentre os alunos aptos a colação de grau em um determinado período letivo regular.
Este relatório lista os discentes que estão com o status GRADUANDO ou CONCLUÍDO, que podem colar grau e serem indicados como alunos laureados.
Descrição do Caso de Uso
Este caso de uso inicia quando o usuário acessa a opção: SIGAA → Graduação → Relatórios - DACA → Alunos → Concluintes e Egressos → Concluintes e Egressos → Lista de Alunos Laureados.
Para gerar o relatório, o usuário deve escolher o ano e período dos discentes à colarem grau e o índice acadêmico que será utilizado para gerar o relatório. O índice acadêmico a ser considerado neste relatório via de regra deve ser o IEAN, porém o usuário tem a opção de selecionar que o relatório seja gerado a partir do IRA para contemplar casos antigos, aonde existia apenas o IRA e este era o índice considerado para listagem dos laureados. O IRA deixou de ser o índice padrão para cálculo de laureados na UFRN a partir de 2010.2.
O usuário tem como opção:
- Ano-Período: Tipo - NUMÉRICO. Formato - 9999.9
- Índice Acadêmico: Tipo - TEXTO. Com as opções:
IRA, IEAN
.
O relatório listará os discentes graduandos e concluídos, agrupados por curso, sendo listado:
- Curso: Tipo - TEXTO. Curso do discente laureado.
- Discente: Tipo - TEXTO. Matrícula e nome do discente.
- IEAN Índice de Eficiência Acadêmica Normalizado ou IRA: Tipo - NUMÉRICO.
Será, ainda, apresentado uma tabela semelhante contendo uma Lista dos Cursos de Discentes com IEAN menor que 600, mas que tiveram maior IEAN do curso.
Principais Regras de Negócio
- RN01 - A concessão da medalha de mérito estudantil só ocorrerá caso o IEAN do discente seja igual ou superior a 600(seiscentos). Caso a lista de laureados seja gerada com base no IRA o valor mínimo a ser considerado é 8.5.
- RN02 - Ocorrendo casos de alunos com o mesmo IEAN, considerando-se o valor inteiro arredondando, cada aluno será indicado com laureado.
- RN03 - A ordenação da listagem deve ser pelo nome do curso, sigla da unidade e nome do discente.
- RN04 - Para os cursos em que nenhum aluno atingiu o valor mínimo de IEAN, será relacionado (com destaque em vermelho) aquele discente que tenha atingido a maior pontuação (mesmo que inferior a 600).
- RN05 - Um mesmo curso (Unidade/Curso/Cidade) não pode aparecer em ambas listagens.
Resoluções/Legislações Associadas
Quando não houver, informar com texto “Não se Aplica”.
Classes Persistentes e Tabelas Envolvidas
Classe | Tabela |
---|---|
br.ufrn.sigaa.pessoa.dominio.Discente | sigaa.public.discente |
br.ufrn.sigaa.ensino.graduacao.dominio.DiscenteGraduacao | sigaa.graduacao.discente_graduacao |
br.ufrn.sigaa.dominio.Curso | sigaa.public.curso |
br.ufrn.sigaa.ensino.dominio.MatriculaComponente | sigaa.ensino.matricula_componente |
br.ufrn.sigaa.ensino.dominio.IndiceAcademicoDiscente | sigaa.graduacao.indice_academico_discente |
Plano de Teste
Sistema: SIGAA
Módulo: Graduação
Link(s): SIGAA → Graduação → Relatórios - DACA → Alunos → Concluintes e Egressos → Concluintes e Egressos → Lista de Alunos Laureados
Usuário: lins, mirza
Papel que usuário deve ter: SigaaPapeis.DAE
Cenários de Teste
Pode-se comparar os status dos discentes em Consultar Dados do Aluno.
Dados para o Teste
SQL da Lista de Laureados:
select u.sigla as centro, c.id_curso, c.nome as curso_nome, d.matricula, p.nome as discente_nome, round(iad.valor) as IEAN, m.id_municipio, m.nome as municipio_nome, sd.descricao as status_discente from comum.unidade u INNER JOIN curso c ON u.id_unidade = c.id_unidade INNER JOIN discente d ON c.id_curso= d.id_curso INNER JOIN graduacao.discente_graduacao dgd ON d.id_discente = dgd.id_discente_graduacao INNER JOIN comum.pessoa p ON d.id_pessoa = p.id_pessoa INNER JOIN comum.municipio m ON c.id_municipio = m.id_municipio INNER JOIN status_discente sd ON d.status = sd.status INNER JOIN ensino.indice_academico_discente iad ON iad.id_discente = d.id_discente INNER JOIN (select cur.id_unidade, cur.id_curso, max(round(iadis.valor)) as iean_max from graduacao.discente_graduacao dg INNER JOIN discente dis ON dis.id_discente = dg.id_discente_graduacao INNER JOIN curso cur ON dis.id_curso = cur.id_curso INNER JOIN ensino.indice_academico_discente iadis ON iadis.id_discente = dis.id_discente where iadis.id_indice_academico = 7 and iadis.valor >= 600 and dis.status in ( 3,9 ) and exists ( select mco.id_discente from ensino.matricula_componente mco where mco.id_discente = dis.id_discente and mco.periodo=1 and mco.id_situacao_matricula <> 10 group by mco.id_discente having max(mco.ano)=2010) and not exists ( select mco.id_discente from ensino.matricula_componente mco where mco.id_discente = dis.id_discente and mco.periodo=2 and mco.id_situacao_matricula <> 10 group by mco.id_discente having max(mco.ano)=2010) group by cur.id_unidade, cur.id_curso ) as maxiean ON maxiean.id_curso = c.id_curso AND maxiean.id_unidade = c.id_unidade where iad.id_indice_academico = 7 and maxiean.iean_max = round(iad.valor) and iad.valor >= 600 and d.status in ( 3,9 ) and exists ( select mcop.id_discente from ensino.matricula_componente mcop where mcop.id_discente = d.id_discente and mcop.periodo=1 and mcop.id_situacao_matricula <> 10 group by mcop.id_discente having max(mcop.ano)=2010) and not exists ( select mcop.id_discente from ensino.matricula_componente mcop where mcop.id_discente = d.id_discente and mcop.periodo=2 and mcop.id_situacao_matricula <> 10 group by mcop.id_discente having max(mcop.ano)=2010) order by c.nome, u.sigla, m.nome, p.nome
SQL da Lista dos Discentes que não atingiram o IEAN mínimo:
select u.sigla as centro, c.id_curso, c.nome as curso_nome, d.matricula, p.nome as discente_nome, round(iad.valor) as IEAN, m.id_municipio, m.nome as municipio_nome, sd.descricao as status_discente from comum.unidade u INNER JOIN curso c ON u.id_unidade = c.id_unidade INNER JOIN discente d ON c.id_curso= d.id_curso INNER JOIN graduacao.discente_graduacao dgd ON d.id_discente = dgd.id_discente_graduacao INNER JOIN comum.pessoa p ON d.id_pessoa = p.id_pessoa INNER JOIN comum.municipio m ON c.id_municipio = m.id_municipio INNER JOIN status_discente sd ON d.status = sd.status INNER JOIN ensino.indice_academico_discente iad ON iad.id_discente = d.id_discente INNER JOIN (select cur.id_unidade, cur.id_curso, max(round(iadis.valor)) as iean_max from graduacao.discente_graduacao dg INNER JOIN discente dis ON dis.id_discente = dg.id_discente_graduacao INNER JOIN curso cur ON dis.id_curso = cur.id_curso INNER JOIN ensino.indice_academico_discente iadis ON iadis.id_discente = dis.id_discente where iadis.id_indice_academico = 7 and dis.status in ( 3,9 ) and exists ( select mco.id_discente from ensino.matricula_componente mco where mco.id_discente = dis.id_discente and mco.periodo=1 and mco.id_situacao_matricula <> 10 group by mco.id_discente having max(mco.ano)=2010) and not exists ( select mco.id_discente from ensino.matricula_componente mco where mco.id_discente = dis.id_discente and mco.periodo=2 and mco.id_situacao_matricula <> 10 group by mco.id_discente having max(mco.ano)=2010) group by cur.id_unidade, cur.id_curso ) as maxiean ON maxiean.id_curso = c.id_curso AND maxiean.id_unidade = c.id_unidade where iad.id_indice_academico = 7 and maxiean.iean_max = round(iad.valor) and d.status in ( 3,9 ) and exists ( select mcop.id_discente from ensino.matricula_componente mcop where mcop.id_discente = d.id_discente and mcop.periodo=1 and mcop.id_situacao_matricula <> 10 group by mcop.id_discente having max(mcop.ano)=2010) and not exists ( select mcop.id_discente from ensino.matricula_componente mcop where mcop.id_discente = d.id_discente and mcop.periodo=2 and mcop.id_situacao_matricula <> 10 group by mcop.id_discente having max(mcop.ano)=2010) and c.id_curso NOT IN( select c.id_curso from comum.unidade u INNER JOIN curso c ON u.id_unidade = c.id_unidade INNER JOIN discente d ON c.id_curso= d.id_curso INNER JOIN graduacao.discente_graduacao dgd ON d.id_discente = dgd.id_discente_graduacao INNER JOIN comum.pessoa p ON d.id_pessoa = p.id_pessoa INNER JOIN comum.municipio m ON c.id_municipio = m.id_municipio INNER JOIN status_discente sd ON d.status = sd.status INNER JOIN ensino.indice_academico_discente iad ON iad.id_discente = d.id_discente INNER JOIN (select cur.id_unidade, cur.id_curso, max(round(iadis.valor)) as iean_max from graduacao.discente_graduacao dg INNER JOIN discente dis ON dis.id_discente = dg.id_discente_graduacao INNER JOIN curso cur ON dis.id_curso = cur.id_curso INNER JOIN ensino.indice_academico_discente iadis ON iadis.id_discente = dis.id_discente where iadis.id_indice_academico = 7 and iadis.valor >= 600 and dis.status in ( 3,9 ) and exists ( select mco.id_discente from ensino.matricula_componente mco where mco.id_discente = dis.id_discente and mco.periodo=1 and mco.id_situacao_matricula <> 10 group by mco.id_discente having max(mco.ano)=2010) and not exists ( select mco.id_discente from ensino.matricula_componente mco where mco.id_discente = dis.id_discente and mco.periodo=2 and mco.id_situacao_matricula <> 10 group by mco.id_discente having max(mco.ano)=2010) group by cur.id_unidade, cur.id_curso ) as maxiean ON maxiean.id_curso = c.id_curso AND maxiean.id_unidade = c.id_unidade where iad.id_indice_academico = 7 and maxiean.iean_max = round(iad.valor) and iad.valor >= 600 and d.status in ( 3,9 ) and exists ( select mcop.id_discente from ensino.matricula_componente mcop where mcop.id_discente = d.id_discente and mcop.periodo=1 and mcop.id_situacao_matricula <> 10 group by mcop.id_discente having max(mcop.ano)=2010) and not exists ( select mcop.id_discente from ensino.matricula_componente mcop where mcop.id_discente = d.id_discente and mcop.periodo=2 and mcop.id_situacao_matricula <> 10 group by mcop.id_discente having max(mcop.ano)=2010) ) order by c.nome, u.sigla, m.nome, p.nome