implantação da fase 2 e 3
This commit is contained in:
163
README_FASE2_3.md
Normal file
163
README_FASE2_3.md
Normal file
@@ -0,0 +1,163 @@
|
||||
# 🚀 Fase 2 e 3 — Gade Logística
|
||||
|
||||
## O que foi implementado
|
||||
|
||||
---
|
||||
|
||||
### ✅ FASE 2 — Login, Usuários e Configurações
|
||||
|
||||
#### Autenticação e Login
|
||||
- **`app/controllers/users/sessions_controller.rb`** — Devise customizado:
|
||||
- Redirecionamento por role: admin/gerente/operador → `/dashboard`, motorista → `/motorista`
|
||||
- Login por PIN de 4 dígitos para motoristas (sem precisar de e-mail)
|
||||
- Auditoria de login no banco
|
||||
|
||||
- **`app/views/devise/sessions/new.html.erb`** — Tela de login com:
|
||||
- Duas abas: E-mail e PIN Motorista
|
||||
- Teclado numérico visual (touchscreen-friendly) para PIN
|
||||
- Auto-submit ao digitar o 4º dígito
|
||||
- Suporte a teclado físico no campo PIN
|
||||
|
||||
#### CRUD de Usuários
|
||||
- **`app/controllers/usuarios_controller.rb`** — CRUD completo com Pundit
|
||||
- **`app/views/usuarios/`** — Lista com hover actions + formulário dinâmico
|
||||
- Formulário adapta campos conforme o role (e-mail/senha para staff, PIN para motorista)
|
||||
- Toggle ativo/inativo sem excluir o usuário
|
||||
|
||||
#### Configurações e Preços
|
||||
- **`app/controllers/configuracoes_controller.rb`** — CRUD de pilares de preço
|
||||
- **`app/views/configuracoes/`** — Cards com edição inline e informações do banco externo
|
||||
- **Toggle de tema claro/escuro** via `POST /configuracoes/toggle_tema` (salvo na sessão)
|
||||
|
||||
#### Pundit (Permissões)
|
||||
- **`app/policies/application_policy.rb`** — Base com helpers `admin?`, `gerente?`, etc.
|
||||
- **`app/policies/user_policy.rb`** — Admin vê tudo; gerente não vê outros admins
|
||||
- **`app/policies/configuracao_policy.rb`** — Apenas admin edita preços
|
||||
|
||||
---
|
||||
|
||||
### ✅ FASE 3 — Dashboard com Chart.js
|
||||
|
||||
- **`app/controllers/dashboard_controller.rb`** — Cálculos ao vivo:
|
||||
- Total de entregas, pagas, pendentes (da tabela read-only)
|
||||
- Valor estimado (entregas pagas × preço da Configuracao)
|
||||
- Top 10 motoristas por valor
|
||||
- Distribuição por local (contact_name)
|
||||
- Evolução diária para o gráfico (labels + valores + qtds)
|
||||
|
||||
- **`app/views/dashboard/index.html.erb`** — Layout visual:
|
||||
- **Card laranja grande** com valor estimado total
|
||||
- **3 cards menores** (entregas, consolidações, motoristas)
|
||||
- **Gráfico de linha** com Chart.js 4.4 (CDN) — evolução diária do mês
|
||||
- **Ranking de motoristas** com barras de progresso
|
||||
- **Grid de locais** com percentuais
|
||||
- Navegação por mês (← →)
|
||||
|
||||
- **`app/views/motorista/index.html.erb`** — Painel simplificado do motorista:
|
||||
- Cards com suas métricas pessoais
|
||||
- Lista das últimas entregas pagas
|
||||
- Fechamentos/consolidações aprovadas
|
||||
|
||||
---
|
||||
|
||||
## Arquivos gerados
|
||||
|
||||
```
|
||||
app/
|
||||
├── controllers/
|
||||
│ ├── application_controller.rb ← Pundit + tema
|
||||
│ ├── users/sessions_controller.rb ← PIN login + redirect por role
|
||||
│ ├── usuarios_controller.rb ← CRUD usuários
|
||||
│ ├── configuracoes_controller.rb ← Preços + toggle tema
|
||||
│ ├── dashboard_controller.rb ← Cálculos Fase 3
|
||||
│ └── motorista_controller.rb ← Painel motorista
|
||||
├── models/
|
||||
│ ├── user.rb ← PIN, roles, validações
|
||||
│ ├── configuracao.rb ← mapa_de_precos, labels, ícones
|
||||
│ ├── entrega.rb ← READ-ONLY, scopes atualizado
|
||||
│ ├── consolidacao.rb ← status enum, do_mes scope
|
||||
│ └── auditoria_log.rb ← método .registrar()
|
||||
├── policies/
|
||||
│ ├── application_policy.rb
|
||||
│ ├── user_policy.rb
|
||||
│ └── configuracao_policy.rb
|
||||
├── helpers/
|
||||
│ └── application_helper.rb ← moeda(), badge_status(), badge_role(), nav_link_to()
|
||||
└── views/
|
||||
├── devise/sessions/new.html.erb ← Login com PIN keypad
|
||||
├── usuarios/
|
||||
│ ├── index.html.erb
|
||||
│ ├── new.html.erb
|
||||
│ ├── edit.html.erb
|
||||
│ └── _form.html.erb
|
||||
├── configuracoes/
|
||||
│ ├── index.html.erb
|
||||
│ └── edit.html.erb
|
||||
├── dashboard/
|
||||
│ └── index.html.erb ← Chart.js + cards grandes
|
||||
├── motorista/
|
||||
│ └── index.html.erb
|
||||
├── layouts/
|
||||
│ ├── application.html.erb ← Tema toggle + sidebar responsiva
|
||||
│ └── _sidebar.html.erb ← Navegação por role
|
||||
└── shared/
|
||||
└── _flash.html.erb
|
||||
|
||||
config/
|
||||
└── routes.rb ← Rotas completas Fases 1-8
|
||||
|
||||
db/
|
||||
├── migrate/20260610_add_fase2_fields_to_users.rb ← PIN + ativo + trackable + lockable
|
||||
└── seeds.rb ← Admin + Gerente + Operador + 3 motoristas com PIN
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Como aplicar
|
||||
|
||||
```bash
|
||||
# 1. Copiar os arquivos para o projeto
|
||||
cp -r fase2_3/* .
|
||||
|
||||
# 2. Renomear a migration com timestamp real
|
||||
TIMESTAMP=$(date +%Y%m%d%H%M%S)
|
||||
mv db/migrate/20260610_add_fase2_fields_to_users.rb \
|
||||
"db/migrate/${TIMESTAMP}_add_fase2_fields_to_users.rb"
|
||||
|
||||
# 3. Rodar migrations
|
||||
docker-compose exec app bundle exec rails db:migrate
|
||||
|
||||
# 4. Rodar seeds
|
||||
docker-compose exec app bundle exec rails db:seed
|
||||
|
||||
# 5. Verificar rotas
|
||||
docker-compose exec app bundle exec rails routes | grep -E 'usuario|config|dashboard|motor'
|
||||
|
||||
# 6. Subir
|
||||
docker-compose up -d
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Credenciais de teste
|
||||
|
||||
| Usuário | Login | Senha/PIN | Vai para |
|
||||
|---------|-------|-----------|----------|
|
||||
| Admin | admin@gade.com | Gade@2026! | /dashboard |
|
||||
| Gerente | gerente@gade.com | Gade@2026! | /dashboard |
|
||||
| Operador | operador@gade.com | Gade@2026! | /dashboard |
|
||||
| Motorista João | PIN | 1234 | /motorista |
|
||||
| Motorista Maria | PIN | 5678 | /motorista |
|
||||
| Motorista Carlos | PIN | 9012 | /motorista |
|
||||
|
||||
---
|
||||
|
||||
## Próximas fases
|
||||
|
||||
| Fase | O que implementar |
|
||||
|------|-------------------|
|
||||
| **4** | Job Whenever (1h) + HistoricoEstimado + AuditoriaLog UI |
|
||||
| **5** | Nova Consolidação + Wizard Passo 1 (selecionar motorista) |
|
||||
| **6** | Toggle switches + ações em massa + barra progresso (Stimulus) |
|
||||
| **7** | PDFs com Prawn: relatório individual + holerite com QR code |
|
||||
| **8** | Notificações WhatsApp/email + responsividade final |
|
||||
Reference in New Issue
Block a user