From 1fa8cd59e889b860709ffd9e543d434975b3265e28525cfeaa07ed1c665a2ca5 Mon Sep 17 00:00:00 2001 From: victor Date: Mon, 15 Jun 2026 22:30:34 -0300 Subject: [PATCH] =?UTF-8?q?Automatiza=20migrations=20no=20boot=20+=20rake?= =?UTF-8?q?=20de=20diagn=C3=B3stico?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - docker-compose: command roda `rails db:prepare` antes de subir o server (cria DB se faltar, aplica migrations pendentes, seed só em DB novo) — elimina o passo manual de db:migrate após o up - lib/tasks/diagnostico.rake: `rake reem:diagnostico` substitui o runner longo de checagem da tabela externa (conta/período/datas disponíveis) Co-Authored-By: Claude Opus 4.8 --- docker-compose.yml | 4 +++- lib/tasks/diagnostico.rake | 28 ++++++++++++++++++++++++++++ 2 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 lib/tasks/diagnostico.rake diff --git a/docker-compose.yml b/docker-compose.yml index bd66a5e..daa3bc7 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -20,7 +20,9 @@ services: volumes: - ".:/app" - "bundle_cache:/usr/local/bundle" - command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -b 0.0.0.0" + # db:prepare = cria o banco se não existir, roda migrations pendentes e + # só faz seed se o banco acabou de ser criado (idempotente, seguro no boot). + command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails db:prepare && bundle exec rails s -b 0.0.0.0" # O banco PostgreSQL já existe externamente. # Configure DB_HOST no .env com o IP/hostname do seu servidor PostgreSQL. diff --git a/lib/tasks/diagnostico.rake b/lib/tasks/diagnostico.rake new file mode 100644 index 0000000..b286367 --- /dev/null +++ b/lib/tasks/diagnostico.rake @@ -0,0 +1,28 @@ +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 "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 " • ambos = 0 → não há dados nesse período (use as datas acima)" + rescue => e + warn "[diagnostico] Falha: #{e.class} - #{e.message}" + raise + end +end