namespace :reem do
  desc "Diagnóstico do dashboard: verifica dados da tabela externa por conta/período"
  task diagnostico: :environment do
    ini = ENV['INICIO'] ? Date.parse(ENV['INICIO']) : Date.current.beginning_of_month
    fim = ENV['FIM']    ? Date.parse(ENV['FIM'])    : Date.current

    puts "================ DIAGNÓSTICO REEM ================"
    puts "Período analisado: #{ini} → #{fim}"
    puts "DB_EXISTING_ACCOUNT_ID: #{ENV.fetch('DB_EXISTING_ACCOUNT_ID', '95907 (default)')}"
    puts "-------------------------------------------------"
    puts "Entregas no período (com filtro Gade):  #{Entrega.da_conta_gade.no_periodo(ini, fim).count}"
    puts "Entregas no período (SEM filtro conta):  #{Entrega.no_periodo(ini, fim).count}"
    puts "Pagas no período (com filtro Gade):      #{Entrega.da_conta_gade.pagas.no_periodo(ini, fim).count}"
    puts "-------------------------------------------------"
    puts "account_ids presentes na tabela:"
    Entrega.group(:account_id).count.each { |acc, qtd| puts "  account_id=#{acc.inspect} → #{qtd} linhas" }
    puts "-------------------------------------------------"
    puts "status presentes na tabela:"
    Entrega.group(:status).count.each { |st, qtd| puts "  status=#{st.inspect} → #{qtd} linhas" }
    puts "-------------------------------------------------"
    no_periodo = Entrega.no_periodo(ini, fim)
    puts "No período (sem filtro de conta):"
    puts "  total:               #{no_periodo.count}"
    puts "  status='completed':  #{no_periodo.where(status: 'completed').count}"
    puts "  checkin preenchido:  #{no_periodo.where.not(checkin: nil).count}"
    puts "  checkout preenchido: #{no_periodo.where.not(checkout: nil).count}"
    puts "  .pagas (completed + checkout): #{no_periodo.pagas.count}"
    puts "-------------------------------------------------"
    puts "planned_date mais antiga: #{Entrega.minimum(:planned_date)}"
    puts "planned_date mais recente: #{Entrega.maximum(:planned_date)}"
    puts "================================================="
    puts "Leitura:"
    puts " • 'SEM filtro' > 0 e 'com filtro Gade' = 0     → ajuste DB_EXISTING_ACCOUNT_ID no .env"
    puts " • total > 0 mas '.pagas' = 0 (checkout vazio)  → entregas sem checkout não contam como pagas"
    puts " • tudo 0                                       → não há dados nesse período (veja datas acima)"
  rescue => e
    warn "[diagnostico] Falha: #{e.class} - #{e.message}"
    raise
  end
end
