Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Inscrição online em disciplinas #347

Closed
JoaoFelipe opened this issue Jul 24, 2021 · 18 comments
Closed

Inscrição online em disciplinas #347

JoaoFelipe opened this issue Jul 24, 2021 · 18 comments
Assignees
Milestone

Comments

@JoaoFelipe
Copy link
Contributor

Esta issue depende da #346

O objetivo desta issue é permitir que alunos possam se inscrever em disciplinas online no período de inscrição de disciplinas. Essa inscrição não será efetivada imediatamente. Após a inscrição feita por alunos, orientadores deverão confirmar a inscrição.

Para esta issue serão necessárias algumas sub-tarefas:
1- Configuração no sistema de qual é o período de inscrição online. A interface do aluno só deve exibir o formulário de inscrição no período exibido.
2- Cadastro das disciplinas na interface do aluno. Dúvidas: Que validações devem ser feitas? Penso só em impedir pegar disciplina repetida (mas estou em dúvida nisso por conta de estágio em docência) e impedir pegar disciplina com horário conflitante.
3- Página na interface de controle do SAPOS para orientadores confirmarem a inscrição. A princípio, penso em criar uma página genérica de "Pendências" que vai servir tanto para a validação de inscrições em disciplinas quanto para validar pedidos de bancas. Dúvidas: Quando alguma pendência for registrada, devemos notificar todos os envolvidos de forma hardcoded no sistema? Ou é melhor deixar em uma notificação configurável? Apenas orientadores podem validar inscrições? Como fica a inscrição no mestrado para quem ainda não tem orientador?

@braganholo
Copy link
Contributor

Quanto à sua dúvida no item 2: Acho que as validações que podem ser feitas de forma automática são só essas mesmo. A questão da disciplina repetida nós podemos controlar pelo TIPO de disciplina. Toda disciplina é ligada a um tipo, e no cadastro de tipo existe um booleano que diz se pode haver inscrição repetida nas disciplinas daquele tipo ou não. Exemplos: Pesquisa de Dissertação/Tese, Estágio Em Docência e Tópicos Avançados (essa última é pq às vezes a disciplina é oferecida com ementas diferentes, mas usando o mesmo código).

Temos que pensar em como tratar as inscrições de alunos avulsos -- acho que essas continuariam sendo feitas via secretaria, certo @leomurta ?

Quanto à sua dúvida no item 3: acho que fazer com que as notificações sejam configuráveis seria melhor, já pensando que o SAPOS está sendo usado em programas de pós com regras diferentes.

Aqui para @leomurta discutir com Plastino: Acho que se o orientador não validar dentro de X tempo, a coordenação deveria validar. Os alunos que não possuem orientador deveriam ter a matrícula validada pelo coordenador? Ou vamos passar a ter um conceito de orientador de área que ficaria responsável por isso? Nos programas de pós que não tiverem esse conceito, bastaria cadastrar o coordenador como coordenador de todas as áreas de pesquisa.

Entendo que a gente vai precisar de algo como um workflow pra isso e para as validações de pedidos de banca e prorrogação.

@nataliacfUFF
Copy link

Oi pessoal,

Acaba que precisa ter uma validação do orientador e uma da coordenação/secretaria. A coordenação vê se o aluno ainda pode se inscrever (por exemplo, se já não deu causa para desligamento por reprovação) e o orientador vê a questão acadêmica.

Há ainda a questão de exceder o número de vagas na turma, que poderia ser resolvido pela coordenação ou pelo sapos (se isso for simples de implementar...não sei se todos os programas seguem as regras da UFF...talvez seja mais fácil mesmo deixar a coordenação decidir).

Com relação aos avulsos, acho que deveria ser realmente via secretaria, mas seria legal poder cadastrar no sapos para que a informação não se perca no futuro. Os alunos regulares e os especiais deveriam poder se inscrever diretamente pelo sistema.

@leomurta
Copy link
Member

Concordo que avulso deveria continuar pela secretaria, até pq eles não terão acesso ao sistema, como discutirmos na issue #346.

Será que não podemos separar o que é validação do que é efetivação para simplificar? A validação seria o ok do orientador ou do coordenador (do programa ou de área) sob o aspecto técnico. Se o orientador não concorda, avisa ao aluno e ele edita até ficar ok. Aí, todos os pedidos (validados ou não) ficariam disponíveis numa tela para a secretaria efetivar (ou não). A efetivação mudaria o estado daquela inscrição de "solicitada" para "ativa" ou algo assim. As que não fossem efetivadas seriam resolvidas entre a secretaria e o aluno. O que acham?

Quanto ao item 1 do João, Já temos Turmas no Sapos, e elas têm ano/período. Acho que poderíamos ter uma entidade que representasse o quadro de horários e ela teria ano/período assim como uma coleção de turmas. Nela seria possível configurar a data limite de inscrição, assim como a regra de validação (orientador, chefe de área, coordenador).

Achei interessante todo usuário ter uma página de pendências. Na verdade, poderia ser a landing page do Sapos. Isso seria útil não só para esse workflow de inscrição, mas para outros também. No caso do aluno, poderia ser a página que a @nataliacfUFF sugeriu na issue #346 que listasse todas as etapas e prorrogações e indicasse o que já foi feito. No caso do professor, poderia, além de mostrar ações pendentes, dar um overview das pendências dos seus alunos. Mas isso poderia ir para uma issue seguinte, para conseguirmos fechar as inscrições online rapidamente.

@nataliacfUFF , essa questão de limite do número de alunos em turmas não é tratada pelo Sapos hoje. Acho que nós não temos essa demanda na computação, já que não limitamos. Mas se vcs tiverem essa necessidade, podemos criar uma issue própria para isso. O processo pode ser mais complexo, pois podemos querer usar diferentes critérios para priorizar (CR, ano de ingresso, nível, FIFO, etc.). Seja como for, deixaria de fora dessa issue para não elevarmos muito a complexidade e termos uma versão em produção o quanto antes.

Por fim, sobre termos avulsos geridos no sistema, é uma decisão de uso. Hoje já fazemos isso na computação.

@nataliacfUFF
Copy link

nataliacfUFF commented Jul 26, 2021 via email

@Kohwalter
Copy link

Mas pq avulsos não poderiam usar o sistema também (para consulta)? Eles poderiam ser User do tipo Avulso, que é Student com restrições na plataforma (read-only em algumas funcionalidades e permitir ele mesmo atualizar seus dados como endereço, telefone, etc).

Na verdade até a inscrição dos avulsos (uma vez que tenham acesso ao SAPOS pelo modelo acima) poderia ser pelo SAPOS, visto que precisará passar pela aprovação da Secretaria de qualquer forma...

Acho válido necessitar do ok do orientador (ou coordenador caso não tenha, visto que ele é instancia superior de coordenador: isso na verdade poderia ser uma hierarquia: orientador > coordenador de área > coordenador da pós) e depois da secretaria.

Para o orientador provavelmente seria um OK e NOK (com um campo de justificativa para não precisar ter troca de e-mail externa?) e a secretaria seria OK e NOK (com justificava para o NOK. Ex: Rejeitado por causa de Turma cheia).

A página de pendencias para o aluno é bem interessante.

@leomurta
Copy link
Member

@nataliacfUFF , em matrícula já temos um campo "tipo de matrícula". Nela, aqui na computação, usamos os valores "regular", "especial", "avulso" e "trancada". Isso fica em matrícula pois o mesmo aluno pode ter várias matrículas (mestrado, doutorado, etc.). Aqui, qq aluno avulso é cadastrado no Sapos com o tipo de matrícula configurado como "avulso". A configuração do que um "tipo de matrícula" pode fazer poderia ser feita na entidade que representa o tipo de matrícula, que é configurável: https://github.com/gems-uff/sapos/blob/master/app/models/enrollment_status.rb

@Kohwalter , os avulsos não têm nenhum vínculo com a pós. Acho que dar acesso a um sistema pode dar margem para algum aluno entrar na justiça argumentando que é regular. Eu deixaria de fora nesse momento. A única declaração que eles têm direito é a de que cursaram uma determinada disciplina. Podemos até gerar pelo Sapos, mas acho que a secretaria é quem deveria pegar no Sapos e entregar ao aluno. Note que até a inscrição deles é diferente aqui no PGC: tanto o coordenador quanto o professor da disciplina podem ou não concordar.

Lendo o comentário do @Kohwalter me dei conta que a aprovação tem que ser individual para cada inscrição e não para o todo de uma vez. Ou seja, se o aluno está se inscrevendo em 3 turmas, pode ocorrer de 1 ser NOK e outras duas ser OK. @JoaoFelipe , avalie se não vale a pena, para todas as features, fazer um protótipo de tela antes de cair na implementação. Poderíamos inclusive validar com a secretaria, se for o caso. Esse protótipo poderia ser low tech (folha de papel), usando alguma ferramenta de mock de tela ou mesmo já usando a tecnologia final em HTML. Nada aqui é obrigatório, mas pense nisso e veja se não será útil para validar. Ou, se vc achar simples ajustar depois, siga em frente sem o mock.

@braganholo
Copy link
Contributor

Acho que eu entendi o que a Natália quis dizer -- nós podemos adicionar um atributo no tipo de aluno, para configurar lá se ele pode ou não acessar o sistema. Aí cada programa decide se quer ou não permitir acesso para um determinado tipo de aluno. Só tem um detalhe, o tipo na verdade não está associado a Student, mas sim a Enrollment. Então a gente tem que ver como tratar os casos de alunos que possuem várias matrículas (avulso depois mestrado depois doutorado, por exemplo). Imagino que deva valer a matrícula atual do aluno (ou será que permitimos que ele veja as matrículas antigas também?).

@Kohwalter
Copy link

@braganholo , no iduff eu consigo acessar todas as minhas matriculas, então acho que poderia ser interessante fazer o mesmo no SAPOS.

@nataliacfUFF
Copy link

nataliacfUFF commented Jul 27, 2021 via email

@JoaoFelipe
Copy link
Contributor Author

Seguindo sugestão de protótipo e os comentários que foram feitos, essa issue ficaria assim.

  1. Inicialmente é cadastrado um quadro de horários com configuração de início e fim de matrícula:
    image

A princípio pensei nesse quadro de horário sendo independente do Turma. Ou seja, continuar permitindo a criação de turma mesmo que o quadro de horário não exista.

A parte de definição de regra de validação (orientador, chefe da área, coordenador) também seria nessa parte, mas consegui pensar em como seria essa configuração. Alguma sugestão?

  1. Se estiver no período de inscrição, o link para inscrição aparecerá na página do aluno (issue Página de aluno #353) e o aluno poderá se inscrever marcando as opções desejadas.
    image

  2. Ao terminar a inscrição, seria feita uma Solicitação de Inscrição que entraria em uma página de Pendências do Orientador e/ou Coordenador

image

  1. Ao visualizar a solicitação, o responsável teria que marcar cada disciplina como válida ou inválida e teria um campo de texto para comentar.

image

Se alguma disciplina não fosse marcada, a pendência continuaria lá.

  1. Tendo alguma disciplina inválida, o formulário de inscrição apareceria para o aluno com o comentário do responsável e uma marcação de disciplinas inválidas. Alterações entrariam na lista de pendências.

image

Dúvidas: Será que vale manter o histórico de solicitações/comentários de forma a permitir a consulta por orientadores/alunos? O aluno pode comentar algo de volta?

Até então, esse processo ocorre apenas durante o período de inscrição e orientadores/coordenadores só podem aprovar nesse período.

  1. Após o período de inscrição a secretaria deve fazer o processo de efetivação, usando o mesmo formulário do item 4, mas vendo se a disciplina foi aprovada ou não (não sei o quão relevante é). Dúvida: Será que o processo da secretaria de efetivação pode ocorrer em paralelo durante o período de inscrição? No caso, marcariam disciplinas para efetivação, mas elas só seriam efetivadas de fato após o período de inscrição. E qualquer alteração na inscrição teria que ser validada outra vez.

@nataliacfUFF
Copy link

nataliacfUFF commented Jul 27, 2021 via email

@JoaoFelipe
Copy link
Contributor Author

O "accept all" que pensei é aquele "Marcar todas" da figura 4. Você pensou em algo diferente?

Essa filtragem por aluno seria uma busca, certo? Pensando nisso, acho que deveria ter 2 buscas

  • uma em pendência usando os campos que estão lá (pendência e tipo). O nome do aluno apareceria no campo "pendência".
  • e a outra seria a busca normal que existe em matrícula, mas poderia ter uma ação em cada matrícula para mostrar quais são as pendências associadas

Mas talvez seja melhor jogar essa parte de busca para uma issue separada...

@nataliacfUFF
Copy link

nataliacfUFF commented Jul 27, 2021 via email

@nataliacfUFF
Copy link

nataliacfUFF commented Jul 27, 2021 via email

@braganholo
Copy link
Contributor

Sobre essa dúvida: "A parte de definição de regra de validação (orientador, chefe da área, coordenador) também seria nessa parte, mas consegui pensar em como seria essa configuração. Alguma sugestão?"

Daria para ter uma configuração onde o admin poderia configurar a ordem das validações, se precisa aguardar o fim do período de inscrição ou se pode ser em paralelo, etc. Por exemplo, o admin poderia querer configurar que a ordem seja orientador, depois coordenador ou secretaria. E haveria a opção de marcar que a validação do orientador pode ocorrer em paralelo com as inscrições, mas o da secretaria/coordenador não. Um admin de outro programa de pós poderia escolher não envolver o orientador, e usar apenas secretaria, e permitir que fosse em paralelo com as inscrições. Já um admin de um terceiro programa de pós poderia escolher que a validação vai primeiro para o orientador e depois para o coordenador de área, mas não vai para secretaria nem coordenador do curso, e que o ok do orientador e do orientador de área devem ocorrer apenas APÓS o período de inscrição terminar.

@leomurta
Copy link
Member

Quanto a esse último comentário da @braganholo , vou sugerir umas simplificações aqui:

  1. Não existe paper de "coordenador de área" no Sapos nesse momento, então sugiro deixarmos de fora por agora. Depois podemos fazer uma issue só para incluir esse papel com suas permissões.
  2. Seguindo a sugestão da @nataliacfUFF , podemos num primeiro momento deixar coordenação/secretaria como a mesma coisa. No nosso caso, não é. A coordenação faz o papel do orientador para o aluno de mestrado que ainda não tem orientador. Já a secretaria faz verificações mais operacionais, sem julgar o conteúdo das matérias que o aluno está se inscrevendo.
  3. Coordenador/secretaria deveriam poder atuar a qualquer momento, sem ter que ficar presos a datas ou ao workflow. Um professor que está viajando pode pedir para a secretaria agir no seu lugar. Se a secretaria vê que tem algo errado, ela poderia barrar desde o início. Sendo assim, manteria ambos (secretaria/coordenador) com permissão total sobre todos os pedidos de inscrição a qualquer momento.
  4. Se tudo que eu falei antes estiver ok para vocês, só restou o orientador. Para simplificar, nem criaria configuração para isso. Assumiria que ao fazer uma inscrição, enviamos um e-mail para o aluno e para o orientador, indicando as disciplina (algo parecido com o que já é feito hoje no lançamento de notas). Aí o orientador pode, a qualquer momento, ir lá e indicar se ele está de acordo com cada inscrição ou não, e colocar um comentário se quiser. Isso dispara um e-mail para o aluno e orientador. Se o aluno alterar a inscrição, novamente há e-mail para aluno e orientador, e o ciclo pode reiniciar. Nem preocuparia em ter vários campos de texto. Deixaria dois de "observações": um que o aluno pode preencher desde a primeira solicitação de inscrição e outro que o orientador pode preencher.
  5. Notem que se um programa não quer validação de inscrição por parte do orientador, ou se um orientador não quer/pode fazer a validação, não tem problema nenhum. O estado de cada inscrição ficaria "solicitado" (em contraponto a "validada pelo orientador" ou "invalidada pelo orientador") e a coordenação/secretaria tomaria a decisão de aceitar ou não aquela inscrição.

O que acham? Assim talvez tenhamos uma implementação mais simples num primeiro momento e conseguiremos colocar em produção nosso MVP o quanto antes. Depois, se for necessário, podemos ter uma issue para elaborar mais o processo.

@leomurta
Copy link
Member

@JoaoFelipe relendo sua mensagem: se for simples manter o histórico de comentários, talvez seja melhor do que o que eu sugeri de dois campos no comentário acima. Assim, em toda interação, qq pessoa pode preencher um campo de comentário antes de salvar. No final das contas, esses comentários seriam sempre listados, junto com a data e o autor. Parece legal.

No mais, para deixar claro, não penso em campos separados de OK para orientador, coordenação, secretaria. Penso em estados de uma inscrição. Ela pode estar no estado "solicitada", "válida" ou "inválida". A mudança de "solicitada" para "válida" (ou "inválida") pode ser feita pelo orientador dentro do prazo ou pela secretaria/coordenação a qq momento. Um processo separado desse é o de efetivação da inscrição, que só pode ser feito pela secretaria/coordenação. Depois do prazo, o coordenador ou a secretaria poderia fazer a efetivação individualmente (clicando "efetivar" em cada inscrição) ou em lote. No caso da efetivação em lote, seguindo a sugestão da @nataliacfUFF , poderíamos ter algumas variações: "efetivar todas válidas" ou "efetivar todas não inválidas", onde a segunda inclui as "solicitada" que não foram validadas. Não sei se um "efetivar todas" no geral faria sentido, pois acabaria efetivando inclusive as inválidas. Ao final desse processo de efetivação, a inscrição passaria para o estado de "efetivada". Note que, do ponto de vista de migração, todas as inscrições existentes hoje deveriam ter nesse novo campo "estado" o valor "efetivada".

JoaoFelipe added a commit that referenced this issue Sep 20, 2021
JoaoFelipe added a commit that referenced this issue Sep 23, 2021
JoaoFelipe added a commit that referenced this issue Sep 25, 2021
…lidations to moments that affect them, create helpers to improve enroll table view
JoaoFelipe added a commit that referenced this issue Sep 26, 2021
JoaoFelipe added a commit that referenced this issue Sep 26, 2021
@leomurta leomurta added the 5.0.0 label Sep 26, 2021
JoaoFelipe added a commit that referenced this issue Oct 17, 2021
JoaoFelipe added a commit that referenced this issue Oct 17, 2021
… Add enrollment link to class enrrollment request
@leomurta leomurta added the 5.0.1 label Oct 20, 2021
JoaoFelipe added a commit that referenced this issue Mar 5, 2022
@leomurta leomurta added the 5.0.5 label Mar 6, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

5 participants