Correção do relatório que é gerado para completo
This commit is contained in:
42
lib/tasks/series_aparelho.rake
Normal file
42
lib/tasks/series_aparelho.rake
Normal file
@@ -0,0 +1,42 @@
|
||||
# lib/tasks/series_aparelho.rake
|
||||
#
|
||||
# Sincroniza o "Número de Série da Base (Aparelho)" da API do SimpliRoute para a
|
||||
# tabela series_aparelho (ver SincronizarSeriesAparelhoJob).
|
||||
|
||||
# Log padrão das tarefas do projeto (ver historico.rake): uma linha de início,
|
||||
# uma de resultado, e o erro sobe para o cron registrar. É lambda (e não método)
|
||||
# para não pendurar um `executar` global no Object.
|
||||
executar = lambda do |&bloco|
|
||||
puts "[#{Time.current}] Sincronizando número de série da base (SimpliRoute)..."
|
||||
r = bloco.call
|
||||
puts "[#{Time.current}] OK — #{r[:datas]} data(s) varrida(s), #{r[:visitas]} visita(s), #{r[:series]} série(s) gravada(s)."
|
||||
puts "[#{Time.current}] AVISO — #{r[:falhas].size} data(s) sem resposta da API: #{r[:falhas].map { |f| f[:data] }.join(', ')}" if r[:falhas].present?
|
||||
rescue StandardError => e
|
||||
puts "[#{Time.current}] ERRO: #{e.message}"
|
||||
Rails.logger.error("[simpli_route:series] #{e.message}\n#{e.backtrace.first(5).join("\n")}")
|
||||
raise
|
||||
end
|
||||
|
||||
namespace :simpli_route do
|
||||
desc 'Sincroniza o número de série da base dos últimos 45 dias (cron diário)'
|
||||
task series: :environment do
|
||||
executar.call { SincronizarSeriesAparelhoJob.perform_now }
|
||||
end
|
||||
|
||||
desc 'Backfill de UMA operação inteira — rake "simpli_route:series_operacao[gade_entregas_ubs_sudeste_jul_2026]"'
|
||||
task :series_operacao, [:tabela] => :environment do |_t, args|
|
||||
tabela = args[:tabela].to_s
|
||||
if Operacao.valida?(tabela)
|
||||
puts "[#{Time.current}] Backfill da operação #{tabela}..."
|
||||
executar.call { SincronizarSeriesAparelhoJob.perform_now(operacao: tabela) }
|
||||
else
|
||||
puts "[#{Time.current}] ERRO: operação inválida (#{tabela.inspect})."
|
||||
puts "Válidas: #{Operacao.nomes_validos.join(', ')}"
|
||||
end
|
||||
end
|
||||
|
||||
desc 'Backfill por período — rake "simpli_route:series_periodo[2026-07-01,2026-07-31]"'
|
||||
task :series_periodo, %i[de ate] => :environment do |_t, args|
|
||||
executar.call { SincronizarSeriesAparelhoJob.perform_now(de: Date.parse(args[:de]), ate: Date.parse(args[:ate])) }
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user