# 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
