Equipe CCPA
voltar

Procedimentos AIPIN
Avaliação de Professores Avaliação Interna Avaliação Eventual
Abertura da entrada de dados

Instruções para iniciar um novo período de entrada de dados no Sistema de Avaliação de Professores.

Primeiro execute na máquina de testes. Se estiver tudo certo, repita o processo na produção.

PASSO A PASSO:

  1. Para evitar atrasos, é melhor enviar os pedidos de dados às equipes do SAU e da CCEAD com alguma antecedência. Os modelos de mensagens para as equipes do SAU e da CCEAD já incluem todas as informações. Enquanto não respondem, siga para o passo seguinte; dois "passos" adiante estão as instruções sobre o que fazer com esses arquivos.
  2. Alterar as datas de abertura e fechamento da tabela referente à Avaliação de Professores no sistema:
    1. Editar o script dados_avaliacao.lua
      vi /home/aipin/scripts/dados_avaliacao.lua -- alterar datas na tabela datas_professores
      
    2. Colocar no CVS e transferir o script para a produção (via scp).
      cvs commit /home/aipin/scripts/dados_avaliacao.lua
      scp -p /home/aipin/scripts/dados_avaliacao.lua prod:
      
    3. Na máquina prod, confira se o arquivo copiado tem as modificações que você realizou. Execute o seguinte comando.
      diff ~/dados_avaliacao.lua ../aipin/scripts/dados_avaliacao.lua 
      
    4. Note que o comando scp transfere o arquivo para o home do usuário. Porém, na máquina prod deve-se mover o arquivo dados_avaliacao.lua do diretório home para /home/aipin/scripts/.
      mv  ~/dados_avaliacao.lua ../aipin/scripts/ 
      
    5. Confira que as permissões do arquivo dados_avaliacao.lua sejam 775. Se não execute o seguinte comando.
      chmod 775  /home/aipin/scripts/dados_avaliacao.lua
      

  3. Após receber os arquivos do SAU e/ou da CCEAD:
    1. Criar o diretório referente ao período letivo na pasta import.
    2. mkdir /home/aipin/import/<ANO><SEMESTRE>
      
    3. Colocar os arquivos de dados na pasta criada no passo anterior. Se os arquivos recebidos vierem em 2 pastas (Formandos e Nao_Formandos) ignorar (a princípio) a pasta Formandos e usar os arquivos da pasta Nao_Formandos (os dados que constam em Formandos costumam constar também em Nao_Formandos). Da pasta Formandos, copiar apenas o arquivo alunoform.txt.
    4. Quanto aos dados da CCEAD, estes podem vir de duas formas previstas:
      • Se os dados vierem divididos entre turmas-professores e inscrições, salvá-los para constituirem dois arquivos: ead_turma.csv e ead_inscr.csv:
        ead_turma.csv
        Colunas: turma;professor;matrícula
        ead_inscr.csv
        Colunas: matrícula;aluno;turma[;turma2]
        Se houver apenas uma turma por linha, deve haver duas linhas por matrícula
        Todas as linhas do arquivo precisam ter a mesma quantidade de colunas
        matrículas
        Atenção para garantir que as matrículas de aluno tenham os zeros à esquerda!
      • Se os dados vierem em uma única listagem por matrícula de aluno, com colunas separadas indicando as turmas da parte introdutória e do módulo, salvá-lo em um único arquivo: ead_unico.csv:
        ead_unico.csv
        Colunas: matrícula;nome;curso;turma_introdução;professor_introdução;matrícula_professor_introdução;módulo_escolhido;turma_módulo;professor_módulo;matrícula_professor_módulo

  4. Caso haja alguma mudança nas perguntas da avaliação, alterar no arquivo perguntas.lua.
    vi /home/aipin/import/perguntas.lua 
    
  5. Rodar o script importador.lua (/home/aipin/import/importador.lua) passando como parâmetro o período letivo. É importante executá-lo dentro do diretório /home/aipin/import/. Ele limpa os dados contidos atualmente no esquema de entrada do banco e o recarrega com os dados vindos do SAU para preparar para a nova entrada de dados. Além disso, carrega as perguntas a partir do script perguntas.lua, citado no passo anterior.

    # Uma boa prática é redirecionar o resultado para um arquivo de log. Exemplo:

    cd /home/aipin/import
    ./importador.lua 20111 > log20111
  6. Verifique o resultado da execução do importador.lua (passo anterior). Sua execução costuma gerar erros SQL de inserção na tabela aluno (dados vindos do arquivo aluno.txt). São erros do tipo:

    > ERRO DE SQL:
    [!!! ALUNO SEM CURSO !!!
    ERRO: valor nulo na coluna "id_curso" viola a restrição não-nula
    SQL = { insert into aluno (matricula,nome,id_curso) values ('0911234','NOME DO ALUNO',(select id_curso from curso where sigla = '')) }]

    Esse tipo de erro ocorre com alunos de intercâmbio ou alunos extraordinários pelo fato de não estarem associados a nenhum curso. Verifique se os demais erros ocorridos são consequência da "não inserção" desses alunos ou se precisam ser corrigidos. Caso precisem de correção, faça o que for necessário e volte ao passo anterior.
  7. FIM! Verifique no sistema se os dados estão corretos.
  8. Observação: No primeiro dia de avaliação, na máquina de produção, descomente a linha do crontab (comando crontab -e com o usuário ccpa-auto) correspondente ao gerador de estatísticas da avaliação:
    58 23 * * * /home/aipin/shell/gera_estatisticas.lua professores > /var/log/ccpa/aipin_gera_estatisticas.log 2>&1
Abertura da consulta de dados

Instruções para iniciar um novo período de consulta de dados no Sistema de Avaliação de Professores.

Primeiro é aconselhável fazer um dump dos dados do esquema de entrada da máquina de produção e levá-los para a máquina de testes:

Após deixar os bancos iguais nas duas máquinas:

Atualização dos superusuários

Na Avaliação de Professores, um usuário professor comum pode ver apenas seus próprios comentários. Porém, existem alguns professores que possuem direito de consulta aos comentários de toda a PUC. Há também professores não tão poderosos, mas que podem ver, além de seus próprios comentários, os comentários do seu departamento. Ambos os tipos são considerados superusuários.

Essa seção explica como realizar, a partir de um arquivo .csv, a atualização dos poderes dos professores, isto é, a atualização da tabela permissao do banco de dados.

PASSO A PASSO:

  1. Pedir para a Carla Leitão a planilha com os nomes dos professores superusuários do período.
    Essa planilha deverá possuir o seguinte formato:

    COLUNA1E-MAILNOME
    ......@......
  2. De posse da planilha no formato anterior, salve-a como um arquivo csv de nome: ver_tudo.csv (caso queira dar permissão para todos os comentários) ou ver_dpto.csv (caso queria dar permissão para comentários do departamento de origem).
  3. O arquivo anterior será utilizado na execução do script. Para isso, coloque-o no diretório referente ao período letivo na pasta import
    (exemplo: /home/aipin/import/20082/).

Após estar com o arquivo csv pronto:

  1. Executar o script atualiza_permissoes.lua de dentro do diretório /home/aipin/import/:

    @prod:/home/aipin/import> ./atualiza_permissoes.lua -f path_arquivo.csv --nivel [total|departamento] [SIGLA]
    --nivel Nível de permissão:

    • total - permissão para ver comentários de todos.
    • departamento - permissão para ver seus próprios comentários e dos seus respectivos departamentos.

    Exemplo:

    @prod:/home/aipin/import>./atualiza_permissoes.lua -f 20102/ver_tudo.csv --nivel total

    Ele limpa todos os superpoderes de superusuários existentes e os transfere para os novos superusuários contidos no arquivo ver_tudo.csv.
    Os usuários de ver_tudo.csv poderão ver os comentários de toda a PUC.

    @prod:/home/aipin/import>./atualiza_permissoes.lua -f 20102/ver_dpto.csv --nivel departamento LET

    Os usuários de ver_dpto.csv poderão ver os comentários de todo o departamento LET.

    -> Uma boa prática é redirecionar o resultado para um arquivo de log.

    Exemplo: ./atualiza_permissoes.lua -f 20102/ver_dpto.csv --nivel departamento LET> log_ver_dpto.

  2. Analisar o log da execução:
    • Verifique a listagem de "NOMES NÃO ENCONTRADOS".
      Um nome de um professor pode não ter sido encontrado por algum dos seguintes motivos:
      • Nomes não batem

        O nome está em nosso banco mas possui um formato diferente (exemplo: nomes abreviados).
        Solução: Procure o nome equivalente no banco e substitua o nome presente no CSV por ele. Execute o script atualiza_permissoes.csv novamente e verifique se o nome ainda é tido como "NÃO ENCONTRADO".

      • Nome não existente

        O nome não existe em nosso banco de dados.
        Solução: Descubra os dados do professor e insira-o no banco no período atual. Feito isso, execute o script atualiza_permissoes.csv novamente e verifique se ele ainda é tido como "NÃO ENCONTRADO".

  3. FIM! Verifique no sistema se os dados estão corretos.
Checagem do serviço de login automático

O serviço de login automático é usado pelo sistema de matrícula para induzir os alunos que terminarem de se matricular a fazerem a avaliação dos professores do semestre anterior. A pedido da equipe do SAU, este serviço só aceita requisições de um certo conjunto de máquinas autorizadas.

O serviço fica em aipin/scripts/servicos_soap.lua e deve receber como parâmetro uma matrícula de aluno que esteve inscrito em alguma disciplina no semestre anterior. Ele irá tentar obter a página que o aluno verá quando entrar no sistema e verificar se ela está de acordo com o esperado.

O script aipin/shell/teste_servico_soap.lua pode ser usado para testá-lo. Por causa do bloqueio de IPs, o script só consegue obter os dados se for executado do alfa (139.82.196.20).
Para rodá-lo, basta tentar:


/home/aipin/shell/teste_servico_soap.lua MATRICULA
Correção na Pauta
ATENÇÃO! Esta operação deve ser realizada com MUITO CUIDADO enquanto a avaliação estiver aberta, pois afeta os formulários de avaliação dos alunos!

A correção na pauta pode acontecer por motivos diversos, mas é necessário haver uma confirmação do departamento/coordenação responsável pela disciplina-turma sobre a correção a ser efetuada.

Nos casos a seguir:
XXXXX
é a matrícula do professor que deve PASSAR A CONSTAR na pauta da turma
YYYYY
é a matrícula do professor que deve SAIR da pauta da turma
TTT
é o código da turma
DDDDDDD
é o código da disciplina
  1. Quando a avaliação já estiver aberta, pode ser que alguém já tenha avaliado esta disciplina-turma, então é necessário resolver o que fazer com as notas e comentários existentes. Pode ser que o aluno tenha indicado que identificou o engano do professor e está avaliando o professor correto, mas pode ser que não tenha especificado nada. O melhor mesmo é discutir o caso com a Carla Leitão ou com o Casanova.
    As consultas abaixo devem ajudar a descobrir o tamanho do problema:
    • Descobre as turmas e os professores de uma disciplina:
      select
      	pf.nome||' ('||pf.matr_professor||')' as professor,
      	d.sigla, t.codigo, t.id_turma, p.ch
      from
      	entrada.professor pf inner join
      	entrada.pauta p using(id_professor) inner join
      	entrada.turma t using(id_turma) inner join
      	entrada.disciplina d using(id_disciplina)
      where
      	d.sigla='DDDDDDD'
      order by codigo;
      
    • Lista quantas avaliações (notas e/ou comentários) foram feitas de uma turma:
      select
      	count(distinct id_aluno)
      from
      	entrada.turma t inner join
      	entrada.disciplina d using(id_disciplina) left outer join
      	entrada.nota_prof n using(id_turma) left outer join
      	entrada.comenta_prof c using(id_turma, id_aluno)
      where
      	d.sigla='DDDDDDD'
      	and
      	t.codigo='TTT';
      
  2. Se houver avaliações, é necessário decidir quais serão apagadas e quais serão aproveitadas e depois, incluir o novo professor:
    1. Se não houver cadastro do professor, inserí-lo (tabela professor);
    2. Inserir o professor na pauta (tabela pauta)
    3. Apagar as notas e comentários duvidosos (tabelas nota_prof e comenta_prof)
    4. Corrigir as notas e comentários que forem permanecer, corrigindo o professor (tabelas nota_prof e comenta_prof)
    5. Retirar o professor da pauta (tabela pauta)
  3. Antes de aberta a avaliação, a correção da pauta é bastante simples:
    begin;
    update entrada.pauta
    	set id_professor=
    		(select id_professor from entrada.professor where matr_professor=XXXXX)
    where
    	id_professor=(select id_professor from entrada.professor where matr_professor=YYYYY)
    	and
    	id_turma=(select id_turma from entrada.turma t inner join entrada.disciplina d using(id_disciplina) where t.codigo='TTT' and d.sigla='DDDDDDD');
    
Envio de e-mails da Avaliação de Professores
ATENÇÃO! Essa operação só poderá ser realizada durante o período de avaliação (ver Abertura da entrada de dados)!

Durante a Avaliação de Professores, são enviados dois tipos de e-mails em duas datas distintas:

Para enviar esses e-mails, os seguintes procedimentos precisam ser realizados:

  1. A cada período, pode ser que os textos das mensagens a serem enviadas necessitem de alteração. Por isso, lembre-se sempre de revisar com a Carla Leitão os textos existentes. Esses textos estão em /home/aipin/shell/emails/.
    São eles:
    • avprof_txt_formandos.lua - Assunto e texto da mensagem a ser enviada para os formandos.
    • avprof_txt_todos.lua - Assunto e texto da mensagem a ser enviada para os alunos que ainda não avaliaram.
  2. Como os e-mails possuem um link de acesso direto ao sistema, cada aluno precisa ter um código de acesso associado à sua matrícula na tabela entrada.codigo_matricula do banco de dados. Confira se os códigos de acesso já estão na tabela entrada.codigo_matricula (são inseridos pelo importador.lua no momento da abertura). Para conferir execute o comando:
    
    select a.matricula from entrada.aluno a where not exists (select codigo from entrada.codigo_matricula where matricula=a.matricula);
    
    Este comando deve retornar zero como resultado! Isso indica que todos os códigos já foram criados para as matrículas.
    Caso contrário, para criar os códigos de acesso, utilize o comando SQL a seguir, substituindo data_final pela data/hora em que a avaliação será encerrada (por exemplo: '29/07/2010 23:59:59').
    
    insert into entrada.codigo_matricula (matricula, codigo, timeout)
    	select a.matricula, md5(a.matricula || random()), 'data_final' from entrada.aluno a
    		where not exists (select codigo from entrada.codigo_matricula cm where cm.matricula=a.matricula);
    

Após executar os passos acima, envie os e-mails:

  1. Executar o script envia_spam.lua de dentro do diretório /home/aipin/shell/:

    @prod:/home/aipin/shell> ./envia_spam.lua [OPTIONS]

    Para conhecer as opções execute primenramente ./envia_spam.lua -h

    • Exemplo de envio de e-mails para os formandos:
      @prod:/home/aipin/shell>./envia_spam.lua --aval professores --msg emails/avprof_txt_formandos.lua -f -e
    • Exemplo de envio de e-mails para os alunos que ainda não avaliaram:
      @prod:/home/aipin/shell>./envia_spam.lua --aval professores --msg emails/avprof_txt_todos.lua -n -e > spam_avprof_AAAA-MM-DD.log 2>&1 &

    • Parâmetros do script:
    • -f - Só destinatários formandos.
    • -n - Só destinatários que ainda não avaliaram.
    • -e - Enviar as mensagens (default é apenas simular o envio).
    • > - Salva a saída do script em um arquivo de log.
    • 2>&1 - Redireciona a saída de erro para mesmo local que a padrão.
    • & - Rodar o processo em background.
Geração dos relatórios dos departamentos

Instruções para a geração dos relatórios dos departamentos. Esse procedimento é realizado após a liberação da consulta dos dados da avaliação dos professores.

Geração do relatório de um (ou mais) professor(es)

Este procedimento deve ser executado quando for necessário gerar o relatório da avaliação de um professor (notas e comentários) em um ou vários períodos letivos. Pode-se especificar também um conjunto de professores de um departamento.

Geração dos relatórios semestrais

Instruções para a geração dos relatórios entregues semestralmente. Esse procedimento é realizado após a abertura da consulta dos dados da avaliação dos professores.

SQL: selects comuns
SQL: update
Média PUC da Avaliação de Professores

Na época da Avaliação Interna, a Carla Leitão costuma solicitar relatórios com médias da Avaliação de Professores.
Esses relatórios podem ser gerados através do script /home/aipin/shell/relatorio_ai.lua.
Esse script gera diferentes tipos de relatórios. Os relatórios referentes a Avaliação de Professores são os de tipo 4.

Os comandos abaixo deverão ser executados. Caso seja necessário alterar os períodos de consulta, modifique-os na tabela relatorios[4].

prod:~> cd /home/aipin/shell
prod:/home/aipin/shell> ./relatorio_ai.lua 4

Os relatórios serão gerados em /tmp/relat_ai/:

prod:/home/aipin/shell> ls /tmp/relat_ai/
# AV_PROFESSORES-planilha1.csv   AV_PROFESSORES-planilha2.csv   AV_PROFESSORES-planilha3.csv
Relatórios da Avaliação Interna

Após o término da Avaliação Interna, a Carla Leitão costuma solicitar relatórios com o resultado.
Estes relatórios possuem 4 formatos padrões e podem ser gerados com o script abaixo.

prod:~> cd /home/aipin/shell
prod:/home/aipin/shell> ./relatorio_ai.lua -t 1
prod:/home/aipin/shell> ./relatorio_ai.lua -t 2
prod:/home/aipin/shell> ./relatorio_ai.lua -t 3
prod:/home/aipin/shell> ./relatorio_ai.lua -t 4

Os relatórios serão gerados em /tmp/relat_ai/ ou na pasta especificada através parâmetro -d.

Como ela tem solicitado também um agrupamento desses dados por centro, o script aipin/shell/entrega_interna.sh pode ser usado para gerar um .ZIP com todo esse conteúdo, ou seja, todos os tipos de relatórios considerando a PUC inteira e mais os 3 primeiros tipos agrupados por centro. Deve ser fornecido o ano da avaliação.
O script gera um único .ZIP na pasta /tmp/avaliacao_interna_$ANO, que contém uma pasta para cada tipo de relatório (dominios, medias, comentarios e professores) e mais uma pasta para cada centro

Atualiza estatística da Avaliação Interna

Na época da Avaliação Interna, é preciso atualizar as estatísticas de respostas enviadas diariamente. Esta atualização é feita rodando o script "gera_estatisticas.lua interna" em /home/aipin/shell. Para este script executar diariamente, precisamos alterar o crontab do usuário ccpa-auto.

Para isso, execute os seguintes comandos:

prod:~> sudo su ccpa-auto # login como ccpa-auto
prod:~> crontab -e # abrirá o crontab a ser editado

No editor do crontab, deverá ser descomentada a seguinte linha:

#58 23 * * * /home/aipin/shell/gera_estatisticas.lua interna > /var/log/ccpa/aipin_gera_estatisticas.log 2>&1

Para descomentá-la basta tirar o # do início.

Uma vez editado o arquivo, basta salvá-lo para o script passar a executar diariamente.

Criando uma nova avaliação eventual
Avaliações da CCCI tem instruções separadas

Instruções para iniciar uma nova avaliação eventual, ou seja, uma avaliação que não necessariamente ocorrerá novamente.

Para uma nova avaliação, usamos o mesmo esquema da avaliação interna. Portanto, é preciso fazer um backup dos dados de entrada utilizados na avaliação interna, limpar o banco e então preenchê-lo com os novos dados. Use um dos dois comandos abaixo:

@zeta:$ pg_dump -n interna -c -f /home/aipin/import/interna/[ANO]/interna[ANO].sql -U postgres prod
@zeta:$ pg_dump -n interna -c -f /home/aipin/backup/eventual/[ESPECIFICAÇÃO_AVALIAÇÃO]_[SEMESTRE].sql -U postgres prod

Primeiro execute na máquina de testes. Se estiver tudo certo, repita o processo na produção.

PASSO A PASSO:

    Caso já esteja na data de início da avaliação (ou posterior), deixar os passos 1 e 2 para o final!
  1. Alterar as datas de abertura e fechamento da tabela referente à Avaliação Eventual no script dados_avaliacao.lua
    No mesmo script, alterar:
    • Nome da avaliação - tabela dados_avaliacao.eventual.nome; nome_html_upper
    • Imagem do cabeçalho - tabela dados_avaliacao.eventual.imagem
    • Mensagens direcionadas aos usuários - tabela dados_avaliacao.eventual.descricao; textoFormG; textoFormP
    • Datas de abertura e fechamento - tabela datas_eventual
    vi /home/aipin/scripts/dados_avaliacao.lua -- alterar os dados descritos acima
    
  2. Colocar no CVS e transferir o script para a produção (via SCP).
    cvs commit /home/aipin/scripts/dados_avaliacao.lua
    scp /home/aipin/scripts/dados_avaliacao.lua prod:
    
  3. Pedir a lista de alunos participantes para a Carla Leitão. Normalmente ela se encarrega de entrar em contato com o SAU.
    O arquivo deverá possuir obrigatoriamente: matricula, nome, email (para o envio de avisos).
    Opcionalmente, pode conter: sigla_hablt, sigla_curso, sigla_dpto, situacao
    Vale ressaltar que o arquivo deverá ser csv com os nomes de colunas exatamente como descritos acima.
  4. Solicitar, também para a Carla Leitão, o questionário de perguntas a serem utilizadas com suas devidas opções de resposta.

Após receber os arquivos da Carla Leitão:

  1. Renomear o arquivo de alunos para dados_alunos.csv e colocar na pasta /home/aipin/import/eventual/. Lembre-se de conferir o cabeçalho.
    Exemplo:
    matricula;nome;sigla_hablt;situacao;email
    9999999;NOME SOBRENOME;AAA;MT;email@conta.com
  2. Preencher a configuração do questionario no arquivo /home/aipin/import/eventual/configuracao.lua.
    vi /home/aipin/import/eventual/configuracao.lua 
    
    O arquivo possui uma tabela no seguinte formato:
    local conf = {
    	dimensoes = {
    		-- Deverá conter sigla e título das dimensões que houverem.
    		-- Seu preenchimento é opcional.
    		-- A posição das subtabelas na tabela dimensoes será o id de cada dimensão no banco de dados. 
    		{ sigla = "", titulo = "", },
    	},
    	indicadores = {
    		-- Deverá conter as opções de resposta disponíveis.
    		-- Deverá haver pelo menos uma subtabela preenchida.
    		-- A posição das subtabelas na tabela indicadores será o id de cada indicador no banco de dados. 
    		[1] = { i5 = "Muito frequentemente", i4 = "Frequentemente", i3 = "Às vezes", 
    			i2 = "Raramente", i1 = "Nunca", texto_na = 'Não precisei de atendimento', },
    	},
    	dominios = {
    		-- Deverá conter os grupos (domínios) de perguntas do questionário.
    		-- Deverá haver pelo menos uma subtabela preenchida.
    		-- A posição das subtabelas na tabela dominios será o id de cada domínio no banco de dados. 
    		-- A coluna "comentar" indica se deverá haver um campo de comentário para o domínio ('t'[default] ou 'f'). 
    		{ titulo = "Questões gerais", comentar = "f" },
    	},
    	-- Cada tabela abaixo corresponde a um perfil no banco de dados.
    	-- Deverá haver pelo menos uma tabela preenchida.
    	-- A posição destas tabelas na tabela conf será o id de cada perfil no banco de dados. 
    	-- As colunas nome, sigla e tipo deverão ser preenchidas. 
    	[1] = { -- perfil
    		nome = "Alunos de Engenharia", sigla = "MT", tipo = "Aluno",
    		dominios = {
    			-- Deverá conter uma tabela para cada domínio ao qual o perfil possui acesso..
    			-- Deverá haver pelo menos uma subtabela preenchida.
    			-- A posição das subtabelas na tabela dominios será o id de cada domínio no banco de dados. 
    			-- A coluna "ordem" indica a ordem que o domínio aparecerá no questionário (default: id_dominio). 
    			[1] = { -- domínio 1
    				ordem = 1, -- DEFAULT: id_dominio
    				perguntas = {
    					-- Deverá conter uma tabela para cada pergunta pertencente ao domínio correspondente.
    					-- Se não houver nenhuma pergunta preenchida (subtabela), o domínio terá apenas campo de comentário.
    					[1] = {
    						id_dimensao = 1, -- opcional
    						txthelp = '',
    						ordem = 1, -- DEFAULT: índice desta tabela
    						id_indicador = 1, -- DEFAULT: 1
    						opcao_na = 't', -- DEFAULT: 'f'
    						texto = "O que você acha ...?",
    					},
    				},
    			},
    		},
    	},
    }
    
    
  3. Rodar o script carga_banco.lua (/home/aipin/import/eventual/carga_banco.lua). É importante executá-lo dentro do diretório /home/aipin/import/eventual. Ele limpa os dados contidos atualmente no esquema "interna" do banco e o recarrega com os dados vindos do arquivo dados_alunos.csv para preparar para a nova avaliação. Além disso, carrega as perguntas a partir do script configuracao.lua, citado no passo anterior.

    # Uma boa prática é redirecionar o resultado para um arquivo de log. Exemplo:

    cd /home/aipin/import/eventual
    ./carga_banco.lua > log_eventual_20121
  4. Verifique o resultado da execução do carga_banco.lua (passo anterior).
  5. FIM! Verifique no sistema se os dados estão corretos.
  6. Importante:
    Após efetuar a carga no banco é importante verificar e remover as duplicações que podem ter ocorrido, por conta de dois ou mais usuários iguais, dentro de um mesmo perfil utilizado na avaliação.
    OBS: Usuários iguais (mesmo nome) com perfis diferentes (aluno e funcionario, por exemplo) não é uma duplicação.

Criando uma nova avaliação para a CCCI

Instruções para iniciar uma nova avaliação para a CCCI, seja de estrangeiros, seja de regressantes.

Como a base é a mesma da avaliação interna, o procedimento de backup é o mesmo de outras avaliações internas. Um caso comum é fazer o backup da última avaliação da CCCI:

@zeta:$ pg_dump -n interna -c -f /home/aipin/backup/eventual/CCCI_puc_[SEMESTRE ANTERIOR].sql -U postgres prod
@zeta:$ pg_dump -n interna -c -f /home/aipin/backup/eventual/CCCI_estrangeiros_[SEMESTRE ANTERIOR].sql -U postgres prod

Primeiro execute na máquina de testes. Se estiver tudo certo, repita o processo na produção.

PASSO A PASSO:

  1. Copiar a configuração apropriada. Use o comando abaixo, corrigindo o tipo de avaliação:
    $ cp /home/aipin/import/eventual/configuracao_[ AGIP | AGII ].lua /home/aipin/import/eventual/configuracao.lua
  2. Baixar dados do SAU (mudando seus nomes), de acordo com o tipo de avaliação:
    AGIP
    $ ftp mimas.rdc.puc-rio.br
    ...
    ftp> get AGIP_<SEMESTRE ANTERIOR>_DT_<DATA>.txt dados_alunos_convenio_<SEMESTRE ANTERIOR>.txt
    ftp> get AGIP_<SEMESTRE ATUAL>_AT_<DATA>.txt dados_alunos_convenio_<SEMESTRE ATUAL>.txt
    
    AGII
    $ ftp mimas.rdc.puc-rio.br
    ...
    ftp> get AGII_<SEMESTRE ATUAL>_DT_<DATA>.txt dados_alunos_estrangeiros_<SEMESTRE ATUAL>.txt
    
  3. Montar o arquivo de importação (dados_alunos.csv):
    AGIP
    $ cd /home/aipin/import/eventual
    $ ./convenio2regressantes.lua dados_alunos_convenio_<SEMESTRE ANTERIOR>.txt --excluir dados_alunos_convenio_<SEMESTRE ATUAL>.txt
    
    AGII
    $ cd /home/aipin/import/eventual
    $ rm dados_alunos.csv
    $ echo "nome;matricula;cod_curso;cod_habilitacao;cod_enfase;formando;email;resto" > dados_alunos.csv
    $ cat dados_alunos_estrangeiros_<SEMESTRE ATUAL>.txt >> dados_alunos.csv
    
  4. Importar os dados (no mesmo diretório do passo anterior):
    $ ./carga_banco.lua > carga_[ AGIP | AGII ]_<SEMESTRE ATUAL>.log
  5. Atualizar os dados da Avaliação Eventual no script dados_avaliacao.lua:
    • Nome da avaliação - tabela dados_avaliacao.eventual.nome; nome_html_upper
    • Imagem do cabeçalho - tabela dados_avaliacao.eventual.imagem
    • Mensagens direcionadas aos usuários - tabela dados_avaliacao.eventual.descricao; textoFormG; textoFormP
    • Datas de abertura e fechamento - tabela datas_eventual
    • Colocar no CVS e transferir o script para a produção (via SCP).
      $ cvs commit /home/aipin/scripts/dados_avaliacao.lua
      $ scp -p /home/aipin/scripts/dados_avaliacao.lua prod:
      
  6. FIM! Verifique no sistema se os dados estão corretos.
  7. Importante:
    Após efetuar a carga no banco é importante verificar e remover as duplicações que podem ter ocorrido, por conta de dois ou mais usuários iguais, dentro de um mesmo perfil utilizado na avaliação.
    OBS: Usuários iguais (mesmo nome) com perfis diferentes (aluno e funcionario, por exemplo) não é uma duplicação.

Relatórios da Avaliação Eventual

Os relatórios disponíveis são os mesmos da avaliação interna. Como a avaliação dos alunos de intercâmbio tem sido realizadas como avaliações eventuais, a Carla Leitão tem pedido os relatórios de tipo 6 (médias e notas) e tipo 3 (comentários) da avaliação interna (apesar do nome ele serve para AGII também):

alfa:~$ cd /home/aipin/shell
alfa:/home/aipin/shell$  psql prod -U postgres -f /home/aipin/backup/eventual/[ESPECIFICAÇÃO_AVALIAÇÃO]_[SEMESTRE].sql  # por exemplo, /home/aipin/backup/eventual/CCCI_estrangeiros_20152.sql
...
alfa:/home/aipin/shell$  ./relatorio_ai_agip.lua -d [ESPECIFICAÇÃO_AVALIAÇÃO]_[SEMESTRE]/ --log [ESPECIFICAÇÃO_AVALIAÇÃO]_[SEMESTRE]/log.txt -t 6
alfa:/home/aipin/shell$  ./relatorio_ai_agip.lua -d [ESPECIFICAÇÃO_AVALIAÇÃO]_[SEMESTRE]/ --log [ESPECIFICAÇÃO_AVALIAÇÃO]_[SEMESTRE]/log.txt -t 3

Por exemplo, o backup e a geração dos relatórios da avaliação de estrangeiros de 2016.2:

cd /home/aipin/backup/eventual
mkdir AGII_20162
pg_dump -n interna -c -f /home/aipin/backup/eventual/AGII_20162/CCCI_estrangeiros_20162.sql -U postgres prod # backup
cd /home/aipin/shell
./relatorio_ai_agip.lua -d ../backup/eventual/AGII_20162/ --log ../backup/eventual/AGII_20162/log.txt -t 6 # médias e notas
./relatorio_ai_agip.lua -d ../backup/eventual/AGII_20162/ --log ../backup/eventual/AGII_20162/log.txt -t 3 # comentários
voltar
Atualização da tabela curriculo_curso

A consulta abaixo deve mostrar quantas linhas há em cada período letivo

zeta:~$ psql prod aipin -c "select periodo_letivo,count(*) from curriculo_curso group by periodo_letivo order by 1"

Se o período atual não aparecer, será necessário atualizar os currículos. Para isso é necessário o arquivo com as disciplinas de cada currículo, chamado atualmente de DISCIP_CURRICULO_YYYY.MM.DD.txt (antigamente era chamado curriculos.txt):

zeta:~$ cd /home/aipin/import
zeta:/home/aipin/import$ ./insere_curriculos.lua [PERIODO]/curriculos.txt [PERIODO]
voltar