# config/schedule.rb # Agendamento com Whenever gem # Atualizar crontab: bundle exec whenever --update-crontab # Ver crontab gerado: bundle exec whenever set :output, "log/cron.log" set :environment, ENV.fetch("RAILS_ENV", "production") # A cada 30 min, das 08h às 18h — atualiza o valor estimado do dia. # (Depois de alterar, rode: bundle exec whenever --update-crontab) every "*/30 8-18 * * *" do rake "historico:atualizar" end # 01h — busca na API do SimpliRoute o número de série da base (aparelho) das # visitas dos últimos 45 dias. É o único campo da planilha do cliente que o # espelho não traz, e a API cobra ~9 s por DIA varrido: fora do horário # comercial não atrapalha ninguém. Ver SincronizarSeriesAparelhoJob. every "0 1 * * *" do rake "simpli_route:series" end # De hora em hora — dispara os eventos de notificação com gatilho `agendado` # que venceram (resumo diário/semanal da operação). # # POR QUE varredura horária e não uma linha por evento: hora e frequência são # escolhidas na TELA e mudam a qualquer momento; reler o crontab a cada edição # acoplaria a UI ao cron do sistema. `EventoNotificacao#vencido?` garante um # disparo por dia (grava ultimo_disparo_em). Ver DispararEventosAgendadosJob. every '0 * * * *' do rake 'notificacao:agendados' end # A cada 2h, das 07h às 21h — compara os números de cada operação com o retrato # anterior e avisa o que mudou (NF que entrou/saiu, entrega que trocou de # status). A maioria dessas mudanças acontece no SimpliRoute e chega pelo sync # do espelho, então só uma varredura as detecta. Ver DetectarMudancasOperacaoJob. every '0 7-21/2 * * *' do rake 'notificacao:mudancas_operacao' end