Correções de integração Fases 2/3 ↔ 4-8 + Auditoria UI + README final
This commit is contained in:
110
README.md
110
README.md
@@ -124,16 +124,60 @@ docker-compose down # parar tudo
|
||||
|
||||
## 🗺️ Fases de implementação
|
||||
|
||||
| Fase | Status | O que fazer |
|
||||
|------|--------|-------------|
|
||||
| **1** | ✅ **CONCLUÍDA** | Setup + Docker + Models + Migrations + Seeds + Layout base |
|
||||
| **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** | ✅ **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 |
|
||||
| Fase | Status | O que faz |
|
||||
|------|--------|-----------|
|
||||
| **1** | ✅ Concluída | Setup + Docker + Models + Migrations + Seeds + Layout base |
|
||||
| **2** | ✅ Concluída *(corrigida)* | Login e-mail/PIN + CRUD usuários + pilares de preço + toggle tema |
|
||||
| **3** | ✅ Concluída *(corrigida)* | Dashboard: cards + gráfico Chart.js + ranking motoristas + navegação por mês |
|
||||
| **4** | ✅ Concluída | Job Whenever (1h) + HistoricoEstimado + AuditoriaLog + API métricas |
|
||||
| **5** | ✅ Concluída | Nova Consolidação + filtros + Wizard Passo 1 |
|
||||
| **6** | ✅ Concluída | Toggles coloridos + ações em massa + Wizard Passos 2 e 3 (Stimulus) |
|
||||
| **7** | ✅ Concluída | PDFs Prawn: relatório + holerite com QR code + modal preview |
|
||||
| **8** | ✅ Concluída | Painel motorista + login PIN/QR + notificações WhatsApp/email |
|
||||
|
||||
**🎉 PROJETO: 8 de 8 fases implementadas.**
|
||||
|
||||
---
|
||||
|
||||
## 🔧 Análise de integração (11/06/2026) — Correções aplicadas
|
||||
|
||||
As Fases 2/3 (commit `4724847`) foram desenvolvidas em paralelo às Fases 4-8 (commits `90ed705` e `8b3d4bc`), e a mesclagem gerou **conflitos que quebravam a aplicação**. Análise dos commits e correções:
|
||||
|
||||
### 🔴 Problemas críticos encontrados e corrigidos
|
||||
|
||||
**1. Migration da Fase 2 quebrada** (`20260610_add_fase2_fields_to_users.rb`)
|
||||
- Timestamp curto (8 dígitos) fazia ela rodar ANTES da `create_users` → erro "table does not exist"
|
||||
- Adicionava coluna `ativo` que já existia → erro de coluna duplicada
|
||||
- Criava `pin_acesso` duplicando o `pin_code` existente
|
||||
- ✅ **Corrigida:** reescrita como `20260101000010_add_devise_trackable_to_users.rb` — só trackable/lockable, timestamp correto
|
||||
|
||||
**2. Campo de PIN inconsistente** — Fase 2 usava `pin_acesso`, o model e as Fases 7/8 usam `pin_code`. PINs cadastrados no CRUD não funcionariam no login.
|
||||
- ✅ **Corrigido:** padronizado `pin_code` em todos os arquivos
|
||||
|
||||
**3. Campo de nome inconsistente** — CRUD de usuários usava `:name`, o schema usa `nome` → o CRUD quebrava ao salvar.
|
||||
- ✅ **Corrigido:** padronizado `nome`
|
||||
|
||||
**4. Controllers fora do namespace** — As rotas esperam `Admin::UsuariosController` e `Admin::ConfiguracoesController`, mas os controllers foram criados na raiz → `/admin/usuarios` dava "uninitialized constant" e os controllers ficavam inacessíveis.
|
||||
- ✅ **Corrigido:** movidos para `app/controllers/admin/` + views para `app/views/admin/` + paths atualizados (`admin_usuarios_path` etc.)
|
||||
|
||||
**5. Dashboard (Fase 3) chamava métodos inexistentes** — `Entrega.do_mes` e `Configuracao.mapa_de_precos` foram sobrescritos pelo commit das Fases 4-6 → **a raiz do site quebrava** (root = dashboard#index).
|
||||
- ✅ **Corrigido:** scope `do_mes` e método `mapa_de_precos` restaurados nos models, junto com `tipo_label`/`icone` usados pelas views de configurações
|
||||
|
||||
**6. AuditoriaLog com 2 assinaturas** — Fase 2 chamava `registrar(user, 'acao', ip)` posicional; o model usa keyword args → `ArgumentError` em login PIN, CRUD de usuários e configurações.
|
||||
- ✅ **Corrigido:** todas as chamadas convertidas para a assinatura do model
|
||||
|
||||
**7. Rotas/controllers ausentes**
|
||||
- `Admin::AuditoriaLogsController` tinha rota mas não existia → ✅ criado com view de listagem e filtros
|
||||
- `toggle_tema` e `toggle_ativo` existiam nos controllers mas sem rota → ✅ rotas adicionadas
|
||||
- Controller de configurações usava campo `tipo` que não existe (schema usa `chave`) → ✅ corrigido
|
||||
|
||||
### 🟡 Duplicações removidas (arquivos órfãos)
|
||||
- `app/controllers/motorista_controller.rb` + `app/views/motorista/index.html.erb` — a rota `/motorista` usa `Motorista::DashboardController` (Fase 8)
|
||||
- `app/views/layouts/_sidebar.html.erb` — o layout renderiza `_navbar.html.erb`
|
||||
- Seeds dos 3 motoristas de teste (João/1234, Maria/5678, Carlos/9012) restaurados — tinham sido sobrescritos
|
||||
|
||||
### ⚠️ Observação sobre login PIN duplicado
|
||||
Existem **dois fluxos de login por PIN** funcionais: a aba PIN na tela Devise (`/auth/login`, Fase 2) e a tela dedicada (`/motorista/login`, Fase 8 — usada pelo QR Code do holerite). Ambos usam `pin_code` e funcionam; recomenda-se manter os dois (a tela dedicada é melhor para mobile) ou unificar futuramente.
|
||||
|
||||
### 📂 Arquivos das Fases 4, 5 e 6
|
||||
|
||||
@@ -228,33 +272,35 @@ config/routes.rb # ATUALIZADO: /motorista/log
|
||||
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)
|
||||
### ▶️ Próximos passos (deploy)
|
||||
|
||||
Cole este contexto no início da conversa com o Claude:
|
||||
O projeto está completo. Para colocar em produção:
|
||||
|
||||
```bash
|
||||
# 1. Configurar .env com credenciais reais (DB_HOST do PostgreSQL existente)
|
||||
cp .env.example .env && nano .env
|
||||
|
||||
# 2. Subir e migrar
|
||||
docker-compose up -d --build
|
||||
docker-compose exec app bundle exec rails db:create db:migrate db:seed
|
||||
|
||||
# 3. Ativar o cron do job de 1h
|
||||
docker-compose exec app bundle exec whenever --update-crontab
|
||||
|
||||
# 4. Testar o fluxo end-to-end (seção de teste acima)
|
||||
```
|
||||
Continue o Sistema de Controle de Custos Logística da Gade Hospitalar.
|
||||
|
||||
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+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)
|
||||
**Credenciais de teste (seeds):**
|
||||
|
||||
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.
|
||||
```
|
||||
| Usuário | Login | Senha/PIN |
|
||||
|---------|-------|-----------|
|
||||
| Admin | admin@gade.com | Gade@2026! |
|
||||
| Gerente | gerente@gade.com | Gade@2026! |
|
||||
| Motorista João Silva | PIN | 1234 |
|
||||
| Motorista Maria Santos | PIN | 5678 |
|
||||
| Motorista Carlos Souza | PIN | 9012 |
|
||||
|
||||
⚠️ Altere as senhas padrão no primeiro acesso em produção.
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user