- Passo 3 (revisar): GROUP BY tipo + ORDER BY created_at é inválido no
PostgreSQL (PG::GroupingError → 500/tela branca). reorder(nil) no count.
Só ficou acessível depois de corrigir o new? da consolidação.
- Usuários: helper badge_status_usuario criado; rota toggle_ativo corrigida
para toggle_ativo_admin_usuario_path (PATCH); confirms via turbo_confirm.
- Passo 3: contagem mostra entregas distintas + nº de pilares (multi-pilar).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Consolidação — multi-pilar:
- Uma entrega pode ter vários pilares ao mesmo tempo (Normal + Bônus +
Retirada…), somando os valores. Toggles viraram multi-seleção (liga/desliga
por pilar; classificar agora faz toggle, em massa só adiciona).
- migration: unicidade passa de [consolidacao_id, tracking_id] para
[consolidacao_id, tracking_id, tipo].
- classificadas_count/resumo contam entregas distintas (≥1 pilar).
Configurações:
- /admin/configuracoes lista só os pilares de PREÇO (empresa/notificações
não são preço e saíram da tela).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
account_id na tabela externa é texto e os registros recentes vêm com conta
vazia (junho estava 100% em conta vazia), então o filtro fixo em 95907 (.to_i)
zerava o dashboard. da_conta_gade agora lê DB_EXISTING_ACCOUNT_ID como lista de
contas (texto) ou "all"/vazio para não filtrar. .env.example documentado.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Regra de pagamento:
- Entrega.pagas agora exige status='completed' E checkout preenchido
(antes era checkin). Afeta dashboard, painel do motorista, job 1h e
elegibilidade das consolidações de forma consistente.
Veículo no lugar de rota na consolidação:
- migration troca consolidacoes.route_ids por vehicle_ids (jsonb + gin)
- Entrega: da_veiculo/veiculos_unicos; contar_pagas usa vehicle
- new.html.erb: filtro "Veículos" (multi-select por vehicle)
- validar.html.erb: mostra o veículo em vez do código da rota
- filtros/elegibilidade do controller passam a usar vehicle_ids
Docs/diagnóstico atualizados.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Ajuda a distinguir as causas do dashboard zerado: conta errada, regra de
pagamento (checkin vazio mas checkout preenchido) ou ausência de dados.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- ConfiguracaoPolicy (e UserPolicy) chamavam admin_ou_gerente?/admin? que não
existiam -> helpers movidos para ApplicationPolicy (toda policy herda)
- View de usuários usava helper badge_role inexistente -> criado em
ApplicationHelper (badge por papel, cores do navbar)
Spec: ConfiguracaoPolicy.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
O inflector pt-BR (inflections.rb) resolvia o composto ConsolidacaoMotorista
para o singular "consolidacao_motorista", tabela que não existe (migration cria
"consolidacao_motoristas"). Login do motorista por PIN derrubava /motorista com
PG::UndefinedTable.
Fixa self.table_name explicitamente nos models pt-BR (Consolidacao,
ConsolidacaoMotorista, ConsolidacaoEntrega, Configuracao), eliminando a
dependência do inflector. Spec trava os nomes de tabela.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- 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 <noreply@anthropic.com>
Erros corrigidos (reportados em prints):
- Logout dava "No route matches [GET] /auth/logout": link usava method:
:delete (rails-ujs), que o Turbo ignora -> agora data-turbo-method
- /admin/usuarios estourava NoMethodError 'admin_ou_gerente?'/'admin?' na
UserPolicy -> adicionados helpers que delegam para o User
- Nova consolidação estourava NoMethodError 'new?' na ConsolidacaoPolicy ->
ApplicationPolicy passa a definir new? (= create?) e edit? (= update?)
Dashboard:
- Substitui a navegação por mês por um filtro de calendário com faixa de
datas (Flatpickr, range mode) que auto-submete inicio/fim
- Controller passa a consultar por período (Entrega.no_periodo) em vez de
do_mes; gráfico diário limitado a ~1 trimestre
Specs: UserPolicy + new? na ConsolidacaoPolicy.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Correções:
- Erro de sintaxe em Admin::Usuarios#toggle_ativo (entidade: \'User\') que
derrubava /admin/usuarios
- Migration fase2 readicionava coluna `ativo` sem guard (db:migrate do zero
quebrava); db:seed colidia no índice único de email para motoristas
- Dashboard e HistoricoEstimado agora aplicam .da_conta_gade
- ConsolidacaoMotorista#recalcular_valor usa valor_aplicado (fonte única)
- Gate de finalização por motorista (antes soma agregada com >=) e validação
de elegibilidade em classificar/classificar_em_massa
- Remove coluna órfã pin_acesso; registra autor do arquivamento
(arquivado_por/arquivado_em + belongs_to :arquivador)
- Dashboard redireciona motorista; Date.parse tolerante
- Remove MotoristaController + view órfãos (não roteados e quebrados)
Testes: infra RSpec + factories + specs de models, policy e request.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>