Fases 7 e 8 — PDFs Prawn + QR + Painel Motorista + Notificações
This commit is contained in:
90
README.md
90
README.md
@@ -127,13 +127,13 @@ docker-compose down # parar tudo
|
||||
| Fase | Status | O que fazer |
|
||||
|------|--------|-------------|
|
||||
| **1** | ✅ **CONCLUÍDA** | Setup + Docker + Models + Migrations + Seeds + Layout base |
|
||||
| **2** | ⏳ Pendente | Login por role + PIN motorista + CRUD usuários + pilares de preço + sidebar |
|
||||
| **2** | ⏳ Pendente | Login por role + CRUD usuários + pilares de preço + toggle tema |
|
||||
| **3** | ⏳ Pendente | Dashboard: cards grandes laranja/preto/branco + gráfico Chart.js + cálculo ao vivo |
|
||||
| **4** | ✅ **CONCLUÍDA** | Job Whenever (1h) + HistoricoEstimado + AuditoriaLog + API métricas |
|
||||
| **5** | ✅ **CONCLUÍDA** | Nova Consolidação + filtros + Wizard Passo 1 (selecionar motorista) |
|
||||
| **6** | ✅ **CONCLUÍDA** | Toggles coloridos + ações em massa + barra progresso + Wizard Passos 2 e 3 (Stimulus) |
|
||||
| **7** | ⏳ Pendente | PDFs com Prawn: relatório individual + holerite com QR code |
|
||||
| **8** | ⏳ Pendente | Painel motorista + notificações WhatsApp/email + responsividade final |
|
||||
| **7** | ✅ **CONCLUÍDA** | PDFs Prawn: relatório individual + holerite com QR code + modal preview |
|
||||
| **8** | ✅ **CONCLUÍDA** | Painel motorista + login PIN/QR + notificações WhatsApp/email |
|
||||
|
||||
### 📂 Arquivos das Fases 4, 5 e 6
|
||||
|
||||
@@ -178,30 +178,82 @@ config/routes.rb # ATUALIZADO — rotas do wi
|
||||
- Consolidação finalizada não pode ser editada por operadores (Pundit)
|
||||
- Todas ações críticas registradas em `auditoria_logs`
|
||||
|
||||
### ▶️ Para continuar (Fases 2, 3, 7 ou 8)
|
||||
**Fase 7 — PDFs (Prawn + QR Code):**
|
||||
```
|
||||
Gemfile # + rqrcode, chunky_png
|
||||
db/migrate/20260101000009_add_login_token_to_users.rb # token para QR — rodar db:migrate!
|
||||
app/services/pdf/base_pdf.rb # layout base: cabeçalho preto/laranja + rodapé
|
||||
app/services/pdf/relatorio_motorista_pdf.rb # tabela detalhada de entregas + resumo + total
|
||||
app/services/pdf/holerite_pdf.rb # estilo contracheque + QR Code de login rápido
|
||||
app/controllers/consolidacoes_controller.rb # ATUALIZADO: gerar_pdf_relatorio/gerar_pdf_holerite/preview_holerite
|
||||
app/views/consolidacoes/show.html.erb # botões por motorista + modal de preview
|
||||
app/views/consolidacoes/preview_holerite.html.erb # preview HTML antes de confirmar o PDF
|
||||
app/models/user.rb # ATUALIZADO: regenerar_login_token!
|
||||
```
|
||||
Soft delete já implementado: consolidações finalizadas vão para "arquivada", nunca são excluídas.
|
||||
|
||||
**Fase 8 — Painel Motorista + Notificações:**
|
||||
```
|
||||
Gemfile # + twilio-ruby
|
||||
app/controllers/motorista/sessoes_controller.rb # login PIN 4 dígitos + acesso via QR (/motorista/acesso/:token)
|
||||
app/controllers/motorista/dashboard_controller.rb # 2 cards: estimado (mês) + consolidado (finalizadas)
|
||||
app/views/motorista/sessoes/new.html.erb # teclado numérico gigante mobile-first (envia no 4º dígito)
|
||||
app/views/motorista/dashboard/index.html.erb # cards laranja/branco + lista com download do próprio holerite
|
||||
app/services/notificacao_service.rb # WhatsApp (Twilio) + email — falha nunca quebra a finalização
|
||||
app/mailers/application_mailer.rb
|
||||
app/mailers/consolidacao_mailer.rb # pagamento_fechado
|
||||
app/views/consolidacao_mailer/pagamento_fechado.html.erb # email com identidade visual da marca
|
||||
app/views/layouts/mailer.html.erb
|
||||
config/initializers/smtp.rb # SMTP via ENV (só ativa se SMTP_USERNAME existir)
|
||||
config/routes.rb # ATUALIZADO: /motorista/login + /motorista/acesso/:token
|
||||
```
|
||||
|
||||
**Notificações — como ativar:**
|
||||
1. WhatsApp: preencha `TWILIO_ACCOUNT_SID`, `TWILIO_AUTH_TOKEN` e `TWILIO_WHATSAPP_FROM` no `.env` e mude a configuração `notificacao_whatsapp` para `true` no sistema. Motorista precisa ter `telefone` cadastrado (formato `+5511999998888`).
|
||||
2. Email: preencha as variáveis `SMTP_*` no `.env` e mude `notificacao_email` para `true`. Motorista precisa ter `email`.
|
||||
3. Ao finalizar uma consolidação, cada motorista recebe automaticamente a mensagem com o valor e o link do painel.
|
||||
|
||||
**Fluxo do motorista (público de baixo nível técnico):**
|
||||
- Acessa `/motorista/login` → digita PIN de 4 números num teclado gigante (envia sozinho no 4º dígito)
|
||||
- OU escaneia o QR Code impresso no holerite → entra direto sem digitar nada
|
||||
- Vê 2 cards: 🟧 valor estimado do mês ("aproximado") e ⬜ valor fechado para pagamento
|
||||
- Baixa o próprio holerite das consolidações finalizadas
|
||||
|
||||
### 🧪 Teste end-to-end sugerido
|
||||
1. Login admin → criar consolidação (nome + período + motoristas)
|
||||
2. Wizard Passo 1 → escolher motorista → Passo 2: classificar entregas com os toggles
|
||||
3. Usar "Marcar todos como Normal" → Passo 3: revisar → próximo motorista
|
||||
4. Com tudo classificado → Finalizar (motoristas notificados)
|
||||
5. Na tela da consolidação → "Ver antes de gerar" → Confirmar → baixar Holerite PDF
|
||||
6. Logout → `/motorista/login` → entrar com PIN do motorista
|
||||
7. Conferir cards de valores → baixar próprio holerite → sair
|
||||
|
||||
### ▶️ Para continuar (faltam apenas Fases 2 e 3)
|
||||
|
||||
Cole este contexto no início da conversa com o Claude:
|
||||
|
||||
```
|
||||
Continue o Sistema de Controle de Custos Logística da Gade Hospitalar.
|
||||
|
||||
CHECKPOINT — FASES 1, 4, 5 e 6 CONCLUÍDAS:
|
||||
CHECKPOINT — FASES 1, 4, 5, 6, 7 e 8 CONCLUÍDAS:
|
||||
- Rails 7+ com Docker, PostgreSQL externo, Tailwind (preto #0a0a0a / laranja #f97316)
|
||||
- Models: Entrega (read-only db_reem_simplerout_2026), User (Devise+roles),
|
||||
Configuracao, Consolidacao (+route_ids jsonb), ConsolidacaoMotorista,
|
||||
ConsolidacaoEntrega, HistoricoEstimado, AuditoriaLog
|
||||
- 8 migrations criadas
|
||||
- Fase 4: Whenever (1h) + AtualizarHistoricoEstimadoJob + rake historico:atualizar
|
||||
+ API GET /api/v1/dashboard/metricas + concern Auditavel
|
||||
- Fase 5: ConsolidacoesController completo (filtros, multi-select motoristas/rotas)
|
||||
+ Wizard Passo 1 (wizard.html.erb)
|
||||
- Fase 6: ConsolidacaoEntregasController (validar/classificar/classificar_em_massa/revisar)
|
||||
+ toggles coloridos + ações em massa + Stimulus validacao_controller.js
|
||||
+ validação de finalização
|
||||
- Models: Entrega (read-only db_reem_simplerout_2026), User (Devise+roles+pin_code
|
||||
+login_token), Configuracao, Consolidacao (+route_ids), ConsolidacaoMotorista,
|
||||
ConsolidacaoEntrega, HistoricoEstimado, AuditoriaLog — 9 migrations
|
||||
- Fase 4: Whenever (1h) + job + rake historico:atualizar + API /api/v1/dashboard/metricas
|
||||
- Fase 5: ConsolidacoesController (filtros, multi-select) + Wizard Passo 1
|
||||
- Fase 6: validar/classificar/classificar_em_massa/revisar + toggles + Stimulus
|
||||
- Fase 7: PDFs Prawn (Pdf::RelatorioMotoristaPdf, Pdf::HoleritePdf com QR code)
|
||||
+ modal preview em consolidacoes/show
|
||||
- Fase 8: login motorista por PIN (/motorista/login) e QR (/motorista/acesso/:token)
|
||||
+ painel motorista (2 cards + holerites) + NotificacaoService (Twilio/ActionMailer)
|
||||
|
||||
FALTAM: Fase 2 (auth/PIN/CRUD usuários/configurações), Fase 3 (Dashboard com
|
||||
gráficos), Fase 7 (PDFs Prawn + holerite + QR code), Fase 8 (painel motorista
|
||||
+ notificações). Consulte o README.md do repositório para detalhes.
|
||||
FALTAM SOMENTE:
|
||||
- FASE 2: tela de login Devise estilizada + CRUD usuários (admin/usuarios) +
|
||||
CRUD pilares de preço (admin/configuracoes) + tela auditoria + toggle tema claro/escuro
|
||||
- FASE 3: DashboardController + view com cards grandes (valor estimado, entregas
|
||||
do dia/mês, motoristas ativos) + gráfico Chart.js do historico_estimados
|
||||
Consulte o README.md do repositório para a lista completa de arquivos.
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
Reference in New Issue
Block a user