Traz para a tela as funções do programa original (Romaneiro PDF), na linha de
design do projeto:
- Veículos deixam de ser um <select> e viram lista visível com a contagem de
paradas de cada carro — que é a conferência feita antes de imprimir e ficava
invisível mostrando um veículo por vez. Cada item é link (?veiculo=), então
sobrevive ao 'voltar' e ao F5. No celular vira faixa horizontal.
- Na mesma coluna: motorista do veículo, 'PDF deste veículo' e 'PDF de TODOS'.
- Busca ganha 'Limpar busca' e contador vivo ('4 de 31 paradas'). A contagem
saiu do cabeçalho da tabela: dois números para a mesma coisa, um atualizando e
o outro não, é a divergência que a diretriz 1 proíbe.
- Logo do cabeçalho escolhível (Configuracao 'romaneio_logo', separado do
empresa_logo — o romaneio é documento do cliente). PNG/JPG até 2MB, gravado em
storage/logos/ e não em public/, com nome gerado pelo sistema.
Nova tela ADM/gerente (Administração > Planilha SimpliRoute) que gera a
planilha de importação (.xlsx) de uma operação vigente, no formato do
pt_br_example.xlsx. Preenche Latitude/Longitude reaproveitando a
geocodificação do mês anterior da mesma operação (casa nome + endereço +
supervisão; geo vem do rastreio db_reem_simplerout_2026). Pacientes novos
saem sem lat/long.
- SimpliRoute::PlanilhaCarga: monta linhas + resolve match do mês anterior
- SimpliRoute::PlanilhaCargaXlsx: builder caxlsx com cabeçalho verbatim
- Admin::PlanilhasSimpliRouteController (show/baixar) + policy admin/gerente
- Gem caxlsx (rebuild do container atualiza o Gemfile.lock)
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>
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>