EAP #895
EAP #1771: SIGAA - Implantação Total
Módulo Ensino Fundamental
100%
Descrição
Esta tarefa reúne as ações referentes à implantação dos módulo Fundamental do SIGAA no Colégio de Aplicação/UFPE.
Subtarefas
Tarefas relacionadas
Histórico
#1 Atualizado por MARLOS GONDIM RIBEIRO BATISTA há quase 8 anos
- % Terminado alterado de 0 para 30
- Situação alterado de Nova para Em andamento
- Data prevista ajustado para 31/07/2018
- Descrição atualizado(a) (diff)
- Título alterado de Implantar Módulos Ensino Fundamental e Médio para Implantar Módulo Ensino Fundamental
#2 Atualizado por MARLOS GONDIM RIBEIRO BATISTA há quase 8 anos
- copiada EAP #1013: Módulo Ensino Médio adicionado
#3 Atualizado por MARLOS GONDIM RIBEIRO BATISTA há quase 8 anos
- copiada excluído (EAP #1013: Módulo Ensino Médio)
#4 Atualizado por MARLOS GONDIM RIBEIRO BATISTA há quase 8 anos
- BuzzValue ajustado para 0
- Tipo alterado de TP para IBL
#5 Atualizado por BRUNO CHAVES DE FREITAS há quase 8 anos
A modelagem AS-IS já foi feita pela PROCIT.
Disponível em:
https://www.ufpe.br/procit/escritorio-de-processos/portfolio/ensino-basico
#6 Atualizado por MARLOS GONDIM RIBEIRO BATISTA há quase 8 anos
- % Terminado alterado de 30 para 50
Configurando o Módulo para o CAp junto com a SINFO.
Modelando a modelagem TO-BE para validação (PROCIT/CAp).
Analisando dados enviados pelo CAp para elaborar proposta de importação.
#7 Atualizado por BRUNO CHAVES DE FREITAS há mais de 7 anos
Acessei a lista de docentes do cap (https://www.ufpe.br/cap/corpo-docente), escolhi o docente “Alfredo Matos Moura Junior” para testar. Acessei os dados do servidor em “SIGAdmin / Suporte Técnico / Consultar Servidores”, e em seguida fiz o primeiro acesso no SIGAA, autorizando o acesso em seguida com o usuário admin (Usuários /Permissão / Autorizar Usuários). O login/senha que criei foi “alfredo.matos/secret”.
Tentei logar com o usuário, houve erro de calendário acadêmico não encontrado, mesmo já existindo um calendário acadêmico para o COLÉGIO DE APLICAÇÃO / Nível Fundamental. Debugando percebi que o usuário estava sendo associado ao nível TÉCNICO.
Chamado filho aberto com detalhes.
#8 Atualizado por BRUNO CHAVES DE FREITAS há mais de 7 anos
Finalizei a análise do processo de negócio Avaliar Discente, propus o TOBE e já fiz as customizações/ajustes de código necessárias no SIGAA, branch ufpe_sprint06. Inclusive a principal customização identificada na fase de análise de aderência, para permitir o Formulário de Evolução da Criança para o nível médio, também foi feita e está funcional.
O report da análise está na pasta SIGAA/Análise de Processos de Negócio do Google Drive. Após validação será colocado no NTIDocs.
#9 Atualizado por BRUNO CHAVES DE FREITAS há mais de 7 anos
O processo de negócio Avaliar Professores, como já discutido na análise de aderência, não tem suporte do SIGAA, em virtude da dinamicidade prática (formação de grupos de alunos para avaliar professores, revisão das análises por outros grupos, acompanhamento do conselho de classe, feedback do professor). A avaliação Docente disponível pelo SIGAA se assemelha à da UFPE no nível graduação: formulário periódico de preenchimento individual.
Em virtude disso, não foi feita proposta TO-BE para este processo, que continuará ocorrendo sem apoio de sistema.
#10 Atualizado por HIALLY RODRIGUES DE SA há mais de 7 anos
Foi concluído os seguintes processos TO-BE e Roteiros de Validação:
-Matricular Aluno Veterano
-Organizar Horário e Oferta de Turma
-Expedir Documentos
O processo de Organizar Horário e Oferta de Turma já foi validado com os clientes.
#11 Atualizado por HIALLY RODRIGUES DE SA há mais de 7 anos
Corrigido um bug que impedia a matrícula na 6 série do Fundamental. (NullPointer)
#12 Atualizado por BRUNO CHAVES DE FREITAS há mais de 7 anos
O SIGAA foi colocado em produção. Implantadas permissões para Lávinia e Madson: Gestor Fundamental e Gestor Médio.
#13 Atualizado por BRUNO CHAVES DE FREITAS há mais de 7 anos
Foi verificado após inclusão em produção que faltava a disciplina LINGUA ESTRANGEIRA em todas as séries do Fundamental.
Como já havia matrículas realizadas, foi preciso rodar o script abaixo:
@
--Atualiza sequence hibernate_sequence
do $$
declare maximo_id numeric;
begin
select max(id_curriculo_medio_componente) from medio.curriculo_medio_componente into maximo_id;
execute 'alter SEQUENCE hibernate_sequence RESTART with '|| maximo_id+100;
end;
$$ language plpgsql;
--Atualiza sequence ensino.componente_seq
do $$
declare maximo_id numeric;
begin
select max(id_disciplina) from ensino.componente_curricular into maximo_id;
execute 'alter SEQUENCE ensino.componente_seq RESTART with '|| maximo_id + 100;
end;
$$ language plpgsql;
--Atualiza código da IES para 74-UFPE
update ensino.componente_curricular set id_ies=74;
--CADASTRAR ANTES A LINGUA ESTRANGEIRA VIA APLICAÇÃO e atribuir às turmas
do $$
declare
turma_serieX record;
codigoTurmaLE numeric;
idLinguaEstrangeira numeric;
discenteX record;
idMatriculaComponente numeric;
idMatriculaDiscenteSerie numeric;
codigoDisciplina text;
idSerie numeric;
idCurriculoMedio numeric;
begin
---====INFORME OS PARÂMETROS PARA CADA SÉRIE AQUI, NÃO MEXER APÓS ESTE TRECHO
--select 'LE161' into codigoDisciplina;
--select 1 into idSerie; --1 para 6a, 2 7a, 3 8a, 4 9a
--select 16 into idCurriculoMedio; --16 para 6a, 17 para 7a, 18 para 8a, 19 para 9a.
--select 'LE171' into codigoDisciplina;
--select 2 into idSerie; --1 para 6a, 2 7a, 3 8a, 4 9a
--select 17 into idCurriculoMedio; --16 para 6a, 17 para 7a, 18 para 8a, 19 para 9a.
--select 'LE181' into codigoDisciplina;
--select 3 into idSerie; --1 para 6a, 2 7a, 3 8a, 4 9a
--select 18 into idCurriculoMedio; --16 para 6a, 17 para 7a, 18 para 8a, 19 para 9a.
select 'LE191' into codigoDisciplina;
select 4 into idSerie; --1 para 6a, 2 7a, 3 8a, 4 9a
select 19 into idCurriculoMedio; --16 para 6a, 17 para 7a, 18 para 8a, 19 para 9a.
--pegando código da disciplina cadastrada pela app
select id_disciplina into idLinguaEstrangeira from ensino.componente_curricular where codigo=codigoDisciplina;
--Iterando em cada turma da série em questão
for turma_serieX in (select * from medio.turma_serie where ano=2019 and id_serie=idSerie and ativo=true)
loop
raise notice 'Iterando para cadastrar...';
raise notice 'turma_serie = %', turma_serieX.id_turma_serie;
select tsa.id_turma into codigoTurmaLE from ensino.turma t inner join ensino.componente_curricular cc on t.id_disciplina=cc.id_disciplina
inner join medio.turma_serie_ano tsa on t.id_turma=tsa.id_turma where tsa.id_turma_serie=turma_serieX.id_turma_serie and cc.codigo=codigoDisciplina;
--Discentes matriculados da turma que está iterando
for discenteX in
(select distinct id_discente from ensino.matricula_componente where id_turma in
(select id_turma from medio.turma_serie_ano where id_turma_serie=turma_serieX.id_turma_serie and ativo=true) and id_situacao_matricula=2)
loop
select nextval('ensino.matricula_componente_seq') into idMatriculaComponente;
--Inserindo matricula em LE para cada discente
INSERT INTO ensino.matricula_componente
(id_situacao_matricula, id_discente, media_final,
numero_faltas, id_matricula_componente, codmerg,
id_turma, id_recuperacao, apto,
codmergpa, id_registro_atividade, id_registro_entrada,
data_cadastro, id_conceito_nota_apagar, foiretificada,
codmergpapos, ano, periodo,
id_componente_curricular, id_restricoes, tipo_integralizacao,
id_componente_detalhes, recuperacao, conceito_apagar,
mes, mes_fim, ano_fim,
processamento_rematricula, observacao, codmergppgeec,
id_usuario_consolidacao, data_consolidacao, rematricula,
ano_inicio, id_serie, porcentagem_frequencia,
consolidacao_sem_notas, dependencia, consolidado_pendente_divulgacao,
nota_minima, em_regime_observacao, prioritario)
VALUES(2, discenteX.id_discente, NULL,
NULL, idMatriculaComponente, NULL,
codigoTurmaLE, NULL, NULL,
NULL, NULL, null,
now(), NULL, NULL,
NULL, 2019, 0,
idLinguaEstrangeira, NULL, NULL,
(select id_componente_detalhes from ENSINO.componente_curricular_detalhes cd where cd.id_componente=idLinguaEstrangeira), NULL, NULL,
1, NULL, NULL,
NULL, NULL, NULL,
NULL, NULL, NULL,
2019, turma_serieX.id_serie, NULL,
false, NULL, NULL,
NULL, false, NULL);
raise notice 'cadastro matricula_componente para o discente %', discenteX.id_discente;
if (select count(*) from medio.matricula_discente_serie where id_discente=discenteX.id_discente and id_turma_serie = turma_serieX.id_turma_serie) = 0
then
select nextval('hibernate_sequence') into idMatriculaDiscenteSerie;
INSERT INTO medio.matricula_discente_serie
(id_matricula_discente_serie, id_discente, id_situacao_matricula_serie,
situacao_final, id_turma_serie, id_curriculo_medio,
dependencia, id_registro_entrada, data_cadastro,
num_chamada, compulsoria, id_escola,
media_final, frequencia_anual)
VALUES(idMatriculaDiscenteSerie, discenteX.id_discente, 1,
NULL, turma_serieX.id_turma_serie, idCurriculoMedio,
false, null, now(),
NULL, false, NULL,
NULL, NULL);
raise notice 'Cadastrado matricula_discente_serie para o discente %', discenteX.id_discente;
INSERT INTO medio.matricula_componente_serie
(id_matricula_componente_serie, id_matricula_discente_serie, id_matricula_componente,
ativo, data_cadastro, id_registro_entrada,
dependencia)
VALUES((select nextval('hibernate_sequence')), idMatriculaDiscenteSerie, idMatriculaComponente,
true, now(), null,
false);
raise notice 'Cadastrado medio.matricula_componente_serie para o discente %', discenteX.id_discente;
else
select id_matricula_discente_serie into idMatriculaDiscenteSerie from medio.matricula_discente_serie
where id_discente=discenteX.id_discente and id_turma_serie = turma_serieX.id_turma_serie;
INSERT INTO medio.matricula_componente_serie
(id_matricula_componente_serie, id_matricula_discente_serie, id_matricula_componente,
ativo, data_cadastro, id_registro_entrada,
dependencia)
VALUES((select nextval('hibernate_sequence')), idMatriculaDiscenteSerie, idMatriculaComponente,
true, now(), null,
false);
raise notice 'Cadastrado medio.matricula_componente_serie para o discente %', discenteX.id_discente;
end if;
end loop;
end loop;
end;
$$ language plpgsql;
@
#14 Atualizado por BRUNO CHAVES DE FREITAS há mais de 7 anos
- Arquivo temp_orientacao_educacional.sql temp_orientacao_educacional.sql adicionado
Executado script em dev para acrescentar Orientação Educacional a pedido do CAP. Em anexo.
Aguardando review para rodar em prod.
#15 Atualizado por BRUNO CHAVES DE FREITAS há mais de 7 anos
- Arquivo temp_orientacao_educacional_medio.sql temp_orientacao_educacional_medio.sql adicionado
Também foi executado o script para Orientação Educacional no nível médio, pois Hially detectou a falta na revisão da tarefa.
Script específico do médio anexado.
#16 Atualizado por BRUNO CHAVES DE FREITAS há mais de 7 anos
Finalizando script para remover duplicidades. Marise passou uma lista de vinculos a excluir (que ela replicou), confrontei com a saída de um script e detectamos dois erros manuais dela.
Falta acertar dependencia alteracao_pessoa.
do $$
declare
vinculoAExcluir record;
declare qtdPessoasParaODiscente numeric;
declare pessoaResponsavel record;
begin
for vinculoAExcluir in
(
select d.id_discente,d.matricula,p.id_pessoa, p.nome from
medio.discente_medio dm
--inner join medio.matricula_discente_serie mds on dm.id_discente = mds.id_discente
inner join public.discente d on dm.id_discente=d.id_discente
inner join comum.pessoa p on d.id_pessoa = p.id_pessoa
where dm.id_discente not in
(
--matriculas associadas a turmas ativas de 2019
select mds.id_discente from
medio.matricula_discente_serie mds inner join medio.turma_serie ts on mds.id_turma_serie=ts.id_turma_serie
inner join medio.situacao_matricula_serie sms on mds.id_situacao_matricula_serie=sms.id_situacao_matricula_serie
where ts.id_turma_serie in
(
--turmas ativas de 2019
select distinct ts.id_turma_serie
from
medio.turma_serie ts
inner join medio.turma_serie_ano tsa on ts.id_turma_serie=tsa.id_turma_serie
inner join ensino.turma t on tsa.id_turma=t.id_turma
inner join ensino.situacao_turma st on t.id_situacao_turma=st.id_situacao_turma
where ts.ativo=true and tsa.ativo=true and st.descricao in ('ABERTA', 'A DEFINIR DOCENTE','CONSOLIDADA')
and ts.ano=2019
)
and sms.descricao in ('MATRICULADO', 'APROVADO', 'TRANCADO','APROVADO EM DEPENDÊNCIA')
)
and trim(p.nome) in
(
select nome from
(
select
trim(p.nome) as nome,
count(*) as qtd
from
comum.pessoa p
inner join public.discente d on
p.id_pessoa = d.id_pessoa
group by
trim(p.nome)
having
count(*)>1
order by
trim(p.nome) asc
) as nome
)
order by p.nome asc
)
loop
raise notice 'Analisando % % %', vinculoAExcluir.id_discente, vinculoAExcluir.matricula, vinculoAExcluir.nome;
--deleta medio.matricula_componente_serie
delete from medio.matricula_componente_serie where id_matricula_discente_serie in
(select id_matricula_discente_serie from medio.matricula_discente_serie mds where mds.id_discente=vinculoAExcluir.id_discente);
raise notice ' apagados registros de medio.matricula_componente_serie';
--deleta ensino.matricula_turma
delete from ensino.matricula_componente where id_discente=vinculoAExcluir.id_discente;
raise notice ' apagados registros de ensino.matricula_componente';
--deleta medio.matricula_discente_serie
delete from medio.matricula_discente_serie where id_discente = vinculoAExcluir.id_discente;
raise notice ' apagados registros de medio.matricula_discente_serie';
--talvez deletar registro_emissao_historico
delete from medio.registro_emissao_historico where id_discente= vinculoAExcluir.id_discente;
raise notice ' apagados registros de medio.registro_emissao_historico';
raise notice ' responsáveis:';
--apagando infantil.responsavel_discente
for pessoaResponsavel in (select rd.id_responsavel_discente,rd.id_pessoa, rd.id_discente from infantil.responsavel_discente rd where rd.id_discente=vinculoAExcluir.id_discente)
loop
-- a pessoa associada ao responsavel está associada a outro responsavel de um vinculo distinto?
-- caso positivo, não apaga
if (select count(*) from comum.pessoa p
inner join infantil.responsavel_discente rd on p.id_pessoa = rd.id_pessoa
where rd.id_discente != vinculoAExcluir.id_discente
and rd.id_pessoa= pessoaResponsavel.id_pessoa)=0
then
delete from infantil.responsavel_discente where id_responsavel_discente=pessoaResponsavel.id_responsavel_discente;
raise notice ' excluído responsavel %', pessoaResponsavel.id_responsavel_discente;
delete from comum.pessoa where id_pessoa=pessoaResponsavel.id_pessoa;
raise notice ' excluída pessoa %', pessoaResponsavel.id_pessoa;
else
delete from infantil.responsavel_discente where id_responsavel_discente=pessoaResponsavel.id_responsavel_discente;
raise notice ' excluído responsavel %', pessoaResponsavel.id_responsavel_discente;
raise notice ' não foi excluída a pessoa porque tinha associação com outro responsável de outro vínculo.';
end if;
end loop;
--deleta medio.discente_medio
delete from medio.discente_medio where id_discente = vinculoAExcluir.id_discente;
raise notice ' apagados registros de medio.discente_medio';
--deleta public.discente
delete from public.discente where id_discente = vinculoAExcluir.id_discente;
raise notice ' apagados registros de public.discente';
--deleta comum.pessoa SE houver outra pessoa com mesmo nome (já associada ao vínculo certo)
select qtd into qtdPessoasParaODiscente from
(select
trim(p.nome),
count(*) as qtd
from
comum.pessoa p
inner join public.discente d on
p.id_pessoa = d.id_pessoa
where trim(p.nome) = trim(vinculoAExcluir.nome)
group by
trim(p.nome)
having
count(*)>1
order by
trim(p.nome) asc) as qtdVinculos;
if qtdPessoasParaODiscente>1 then
delete from comum.pessoa where id_pessoa=vinculoAExcluir.id_pessoa;
raise notice ' Registro de pessoa duplicado de % excluído.', vinculoAExcluir.nome;
else
raise notice ' Só havia 1 registro de pessoa para %, não foi excluído.', vinculoAExcluir.nome;
end if;
--- DANDO PAU APÓS ALGUNS DISCENTES, DEPENDÊNCIA NA TABELA ALTERACAO_PESSOA.
end loop;
ALTER TABLE medio.discente_medio ADD CONSTRAINT discente_infantil_id_responsavel_ufrn_fkey FOREIGN KEY (id_responsavel_ufrn) REFERENCES infantil.responsavel_discente(id_responsavel_discente);
ALTER TABLE medio.discente_medio ADD CONSTRAINT discente_infantil_id_outro_responsavel_fkey FOREIGN KEY (id_outro_responsavel) REFERENCES infantil.responsavel_discente(id_responsavel_discente);
end;
$$ language plpgsql;
#17 Atualizado por BRUNO CHAVES DE FREITAS há mais de 7 anos
- Arquivo script_remoção_alunos_replicados.sql script_remoção_alunos_replicados.sql adicionado
Script finalizado e ajustado após testes iniciais em ambiente de desenvolvimento. Aguardando segundo revisor para executar em produção.
#18 Atualizado por MARLOS GONDIM RIBEIRO BATISTA há aproximadamente 7 anos
- relacionado a BUG #1338: Correção - Menu Plano de Curso adicionado
#19 Atualizado por MARLOS GONDIM RIBEIRO BATISTA há aproximadamente 7 anos
- Situação alterado de Em andamento para Concluída
#20 Atualizado por MARLOS GONDIM RIBEIRO BATISTA há aproximadamente 7 anos
- Tarefa pai alterado de #848 para #1771
#21 Atualizado por MARLOS GONDIM RIBEIRO BATISTA há aproximadamente 7 anos
- BuzzValue excluído (
0) - Título alterado de Implantar Módulo Ensino Fundamental para Módulo Ensino Fundamental
- Tipo alterado de IBL para EAP
#22 Atualizado por MARLOS GONDIM RIBEIRO BATISTA há aproximadamente 7 anos
- relacionado a TP #848: Módulo Educação Básica adicionado