# config/routes.rb Rails.application.routes.draw do # Devise — login padrão para admin/gerente/operador devise_for :users, path: 'auth', controllers: { sessions: 'users/sessions' }, path_names: { sign_in: 'login', sign_out: 'logout', password: 'senha' } # Root — redireciona por role root 'dashboard#index' # Dashboard principal (admin/gerente/operador) get '/dashboard', to: 'dashboard#index', as: :dashboard get '/dashboard/relatorio_financeiro', to: 'dashboard#relatorio_financeiro', as: :dashboard_relatorio_financeiro # Dashboard de análise de entregas por operação (UBS Norte, EMAD, ...) get '/dashboard/operacoes', to: 'operacoes_dashboard#index', as: :operacoes_dashboard # Painel motorista get '/motorista', to: 'motorista/dashboard#index', as: :motorista_dashboard # Login motorista — PIN de 4 dígitos + acesso via QR Code do extrato get '/motorista/login', to: 'motorista/sessoes#new', as: :motorista_login post '/motorista/login', to: 'motorista/sessoes#create' get '/motorista/acesso/:token', to: 'motorista/sessoes#acesso_qr', as: :motorista_acesso_qr # Consolidações resources :consolidacoes do collection do get :veiculos_disponiveis # JSON — veículos do(s) motorista(s) no período (form nova consolidação) get :operacoes_disponiveis # JSON — tabelas de operação (gade_entregas_*) get :dados_da_operacao # JSON — motoristas/veículos/período da(s) operação(ões) get :buscar_nf # JSON — busca a NF na rastreio (nota avulsa) post :avulsa # cria consolidação avulsa a partir de uma NF get :arquivadas # Histórico — consolidações arquivadas end member do get :wizard # Passo 1 — selecionar motorista post :finalizar post :finalizar_parcial # arquiva veículos pendentes e finaliza (só os consolidados) post :arquivar post :reativar # Restaura uma consolidação arquivada post :registrar_pagamento # Marca 1 motorista (ou todos) como pago post :cancelar_pagamento # Estorna o pagamento de 1 motorista (ou todos) post :arquivar_motorista # Arquiva 1 motorista da consolidação (reversível) post :desarquivar_motorista # Restaura um motorista arquivado delete :excluir_motorista # Exclui de vez 1 motorista (admin/gerente) post :adicionar_motorista # Adiciona/restaura 1 motorista nesta consolidação get :preview_extrato get :gerar_pdf_relatorio get :gerar_pdf_extrato get :gerar_pdf_financeiro # relatório financeiro da consolidação end resources :consolidacao_entregas, only: [] do collection do get :validar # Passo 2 — toggles de classificação post :classificar # toggle individual (JSON) post :classificar_em_massa # ações em massa (JSON) get :revisar # Passo 3 — revisão do motorista post :fechar_veiculo # consolida (fecha) um veículo do motorista post :reabrir_veiculo # reabre um veículo já consolidado post :arquivar_veiculo # tira um veículo do gate (reversível) post :desarquivar_veiculo # restaura um veículo arquivado get :buscar_nf # JSON — busca a NF na SimpleRoute (apontamento manual) post :apontar # cria apontamento manual a partir da NF post :apontar_manual # apontamento 100% manual (sem rastreio) post :apontar_termo # lança N entregas de termo (sem NF/código) delete :remover_apontamento # remove um apontamento manual (por id) end end end # Configurações (apenas admin/gerente) namespace :admin do resources :usuarios, except: [:show] do member { patch :toggle_ativo } end resources :configuracoes, only: [:index, :edit, :update] do collection { post :toggle_tema } end resources :auditoria_logs, only: [:index] end # API interna — Dashboard métricas namespace :api do namespace :v1 do get 'dashboard/metricas', to: 'dashboard#metricas' end end # Health check (Docker) get '/health', to: proc { [200, {}, ['OK']] } end