-
Notifications
You must be signed in to change notification settings - Fork 16
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
Notificações e verificação assíncrona de pendências #12
Comments
Tarefa alocada ao projeto final do Luis e João Felipe. |
Estamos vendo os exemplos de notificações que foram faladas e parece que dá pra dividir em notificações síncronas e assíncronas. Sincronas:
Assíncronas:
Dúvida:
Para essa Issue, vamos fazer as assíncronas. Depois criamos outra Issue para síncronas. Tem alguma faltando, ou alguma que vocês achem que não é possível atualmente? |
…reate email messages and send them
…pletion quando salva qualquer phase duration
…todas as phase_completions de cada enrollment
|
O ideal seria tentar generalizar o problema, pensando que uma notificação tem um conteúdo, um (ou mais) destinatários e uma data (é só isso ou tem algo mais?). O conteúdo poderia ser o resultado de um SQL (ou alguma outra linguagem de consulta). O destinatário também. A data poderia ser algo parametrizável. Isso permitiria fazer essas notificações definidas por vocês ou outras que se tornassem necessárias. Lembrem que o Everton irá tratar a questão de consultas complexas. Então vcs poderiam simplesmente abstrair e assumir que há consultas cadastradas no BD (podemos colocar na mão enquanto não temos consultas complexas) ou fazer uma tela básica para cadastrarmos, mas sem nenhum tipo de validação. No mais, quanto a separação em síncronas e assíncronas, achei legal. Em relação às notas, uma notificação que acho fundamental é ao professor que ministrou a disciplina. Isso acaba sendo até um mecanismo de proteção: se alguém troca a nota, o professor fica sabendo. Pensem sempre quem é o "dono" do dado. No caso, é o professor que deu a nota e o aluno que recebeu. O orientador é interessado, mas esses outros dois são mais. |
Leo, E para cada consulta um codigo desse tipo seria feito, o que me parece razoavelmente simples, especialmente agora que temos todos os prazos salvos no banco, facilitando a consulta. Ou as vezes até mesmo uma consulta apenas faria mais de 1 notificacao, neste caso poderiamos alem de notificar o aluno, notificar também o orientador dele, e notificar ao coordenador de todos os alunos que ainda faltam pedir banca, tudo em apenas uma das notificacoes |
…rametros a serem utilizados nas queries
Funcionou com wget --spider --no-check-certificate https://sel.ic.uff.br/sapos. Vou ajustar o script. |
Parece que a configuração não funcionou. =/ Tentei instalar o apache com passenger aqui para tentar reproduzir o erro localmente, seguindo a wiki https://github.com/gems-uff/sapos/wiki/Explained-Quick-install-for-production, mas não funcionou =/ |
Vc está na UFF? Eu posso criar uma conta para vc no servidor. Assim, vc consegue ver a configuração lá. |
Não estou =/ Bom, vou tentar fazer a solução que mostra lá na Issue |
Consegui rodar o passanger localmente aqui (usando bundle exec passenger start -p 3000) e usar a "gambiarra" que colocaram na issue. Bom, eu só executei o código do modo que estava, sem nenhuma configuração. Vou ver se consigo usar o PassengerMinInstances 1 localmente para ver qual é o resultado junto da gambiarra. Se não der certo, só consigo ver as seguintes soluções: Alguma outra opção? |
Vamos lá... que tal termos o wget --spider URL no crontab da máquina, e URL sendo uma URL especial (https://sel.ic.uff.br/sapos/notify), que quando é chamada verifica se tem alguma pendência e manda as notificações? Assim, se alguém chamar na mão essa URL, não terá efeito colateral. Por outro lado, teríamos toda a flexibilidade do cron para dizer em qual frequência queremos a verificação. Mas independentemente disso, eu queria entender o que não está dando certo. Pelo que testei, o Passenger está mantendo um processo vivo. |
Essa opção de ter uma url para executar notificações me parece boa e simples de fazer. O que não ta dando certo é o seguinte: |
Coloquei para 3:00 e depois reiniciei o Apache. Estou assumindo que ao reiniciar o Apache o rufus entra no ar. Vamos ver no que dá. |
Aparentemente nao enviou. |
Estou achando que a ideia da url que verifica pendências assíncronas com uma linha no cron da máquina funcionará bem. |
concordo, so acho q deveria ter um token nessa requisicao pra nao deixar |
O que é melhor: deixar só a a url, ou manter o rufus com uma opção de ativar/desativar? |
Acho que deixar só a url, para não complicarmos as coisas. Aí poderia editar o guia de instalação falando que é necessário incluir no cron algo para ativar as notificações assíncronas. |
O processamento das notificações, é um tanto quanto "pesado", são muitas Não acredito que isso vá acontecer, até por ser um sistema interno onde |
Não acho que o processamento de notificações seja pesado... Tem menos de 10 notificações cadastradas no banco e a busca delas só é executada se a pré-busca pela data considerar que está na hora delas serem executadas. De qualquer forma, não é muito dificil fazer essa verificação... |
Bom, vcs decidem. Se forem fazer o token, ele poderia ser uma variável a ser configurada em um arquivo, como é o caso do config/initializers/secret_token.rb. |
Fiz a url sem o token. Outra opção é ter uma variavel de ambiente que seja o token... Se a variavel não estiver definida não usa o token. |
Realmente, é melhor a ideia da variável de ambiente. |
Acho que pode botar em homologação como está, bom para ja validarmos se |
Coloquei. Mas qual é a url? Se for https://sel.ic.uff.br/sapos-homologacao/notify, parece que não está funcionando. |
As mensagens que chegaram foram por que eu cliquei no link. Agora peço que ninguém clique no link. Eu programei o cron da máquina para chamar de manhã (em torno de 6h). |
Ah, programei tb uma notificação de teste como diária. |
Funcionou! Vcs poderiam atualizar o wiki de instalação em produção dizendo que para habilitar as notificações assíncronas é necessário criar o arquivo /etc/cron.daily/sapos com o seguinte conteúdo: #!/bin/sh
wget --spider --no-check-certificate --quiet http://www.foo.com/sapos/notifications/notify |
Permitir consultas diárias, semanais, etc e envio de relatório por email, caso o resultado da consulta seja não vazio. Exemplo: quem pediu banca e não defendeu, passados 45 dias.
The text was updated successfully, but these errors were encountered: