91 lines
3.7 KiB
Ruby
91 lines
3.7 KiB
Ruby
# 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
|
|
|
|
# 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 :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
|
|
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
|