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>
- 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>
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>