Tarefas SQL: avisar em cada sucesso, e tarefas de teste que não gastam SMS
Duas coisas nos avisos por SMS das Tarefas SQL.
«Incluir SMS nesses avisos», por tarefa, ligado por omissão. Numa tarefa de
testes desliga-se: a falha continua a aparecer no ecrã e a ir por e-mail, mas
não gasta SMS, não conta para o limite do plano e não acorda ninguém fora de
horas. O notificar_falhas que já existia não servia para isto — desliga o
aviso todo, e-mail incluído.
Dava-se a volta pelos motivos de cada telemóvel, que se restringem a tarefas concretas, mas isso é uma lista de permissões: cada tarefa nova tinha de ser acrescentada a cada número, e quem se esquecesse ficava sem aviso de uma tarefa a sério. A informação é da tarefa.
O guarda fica no funil (AvisosPorClosum::emitir) e não em cada chamador: a
falha, o regresso e a falha crítica passam todos por lá com o tarefaSqlId,
por isso um emissor novo fica coberto sem se lembrar disto. Uma tarefa que já
não exista avisa — na dúvida manda-se, porque um aviso a menos é uma avaria que
ninguém soube.
Dois sítios que a leitura do código obrigou a corrigir de passagem:
- aplicar uma correção da IA voltava a ligar o SMS. O detalhe manda ao
PUTtudo o que o ecrã tinha, e sem o campo lá o controller punha-o atrue— é o que o comentário do OBS-08 nesse ficheiro avisa. O campo passou a ir, e no controller «ausente» passou a ser «deixa como está»; - o campo acompanha o
notificar_falhasem todos os sítios por onde ele viaja (criar, atualizar, duplicar para um grupo, exportar, importar), senão perdia-se numa duplicação em silêncio.
Motivo novo «Correu bem» (tarefa_sql.sucesso): avisa em cada execução
real com sucesso, agendada ou à mão, ao contrário do «Voltou a funcionar», que
só avisa na primeira depois de uma falha. A chave do evento é por corrida, por
isso dois sucessos seguidos são dois SMS e não uma repetição calada. O ecrã
«Acrescentar telemóvel» mostra-o sozinho — monta-se do eventos().
É o único aviso da lista que não é uma avaria, por isso: não vem marcado por
omissão, tem alvo (escolhe-se tarefa a tarefa) e é só SMS — não se inventou
notificação na plataforma nem e-mail de sucesso, que o histórico do ecrã já diz
que correu bem e foi o volume de e-mail que bloqueou a conta de envio a 15/10.
Não passa pelo notificar_falhas, que fala de falhas; quem o quiser calar numa
tarefa desliga o «Incluir SMS».
Atenção ao volume: uma tarefa de 5 em 5 minutos daria 288 SMS por dia, e o que
o trava é o avisos_sms_hora do PLN-07 — 3 por hora por empresa, por omissão.
Cada peça foi provada vermelha primeiro: sem o guarda falham os 4 testes de supressão (e os que provam que o SMS continua a sair passam); sem o controller e as vistas falham os 4 do formulário; sem o listener falham os 3 do sucesso.
Suite: 3059 testes, 1 falha anterior a estas alterações (ClassesDoTailwind, CSS compilado desatualizado; pede npm run build). Falta correr a migração no servidor, e o CI é que prova o rollback em SQL Server.