Entrar como:FuncionalidadesDoc
Pular para o conteúdo
← Voltar para a visão geral
✅ ConcluídoCard #52 · M9

Plano de Ação 5W2H

Marco M9: Experiência & Qualidade (SULTS-inspired)

👤Wellington Santiago (via ZCode)

✅ EXECUÇÃO — 15/08/2026

Implementado e validado em produção (homolog). Commits: 2062f6c (fundação: 21 tabelas), 080c857 (features), bbfa277 (lint). Deploy CI verde.

Validação ao vivo: página(s) da feature respondendo 200 com a role correta + procedures tRPC testadas via HTTP (respostas JSON corretas). Ver relatório da sessão.

Detalhes de implementação e decisões: conforme o design acima deste documento (schema, procedures e páginas seguidos conforme especificado; ajustes menores documentados no commit).

📄 Card 52 [M9] — Plano de Ação 5W2H

📚 Referência SULTS: https://www.sults.com.br/produtos/checklist Estrutura 5W2H para acompanhar planos de ação gerados pelas não conformidades do Checklist: What, Why, Who, Where, When, How, How much. Validado obrigatoriamente pelo auditor na próxima visita.

🎯 Objetivo

Criar o módulo Plano de Ação 5W2H — gerado automaticamente quando uma não conformidade é detectada no Checklist (Card 51), com:

  • 7 dimensões: What (o quê), Why (por quê), Who (quem), Where (onde), When (quando), How (como), How much (quanto custa)
  • Responsável + prazo + status (Pendente, Em Andamento, Aprovado, Rejeitado, Concluído)
  • Validação obrigatória do auditor na próxima visita (com fotos antes/depois)
  • Recorrência automática se reprovado
  • Notificação ao responsável por push + email + WhatsApp
  • Kanban de planos por filial

📚 Documentação de Referência

  • docs/DESIGN_SYSTEM.md §6 (Kanban reusar do Card 30/46)
  • prisma/schema.prisma — novo model ActionPlan

🛠️ Especificação Técnica

Schema Prisma (novo)

model ActionPlan {
  id              String        @id @default(cuid())
  applicationId   String                              // origem no checklist
  application     ChecklistApplication @relation(fields: [applicationId], references: [id])
  branchId        String
  branch          Branch        @relation(fields: [branchId], references: [id])
  questionId      String?                             // questão que gerou (se aplicável)
  // 5W2H
  what            String                              // O quê será feito
  why             String                              // Por que (motivo)
  who_id          String                              // Quem (responsável)
  who             User          @relation("ActionPlanResponsible", fields: [who_id], references: [id])
  where           String?                             // Onde (localização)
  when_due        DateTime                            // Quando (prazo)
  how             String       @db.Text               // Como (passos)
  howMuch         Decimal?      @db.Decimal(10, 2)    // Quanto custa
  status          ActionStatus  @default(PENDING)     // PENDING, IN_PROGRESS, APPROVED, REJECTED, DONE
  priority        ActionPriority @default(MEDIUM)     // LOW, MEDIUM, HIGH
  beforePhotos    String[]                            // estado inicial (evidência)
  afterPhotos     String[]                            // estado corrigido
  approvedAt      DateTime?
  approvedById    String?
  rejectedReason  String?
  recurrenceCount Int           @default(0)            // quantas vezes rejeitado
  createdAt       DateTime      @default(now())
  updatedAt       DateTime      @updatedAt
}

enum ActionStatus { PENDING  IN_PROGRESS  APPROVED  REJECTED  DONE }
enum ActionPriority { LOW  MEDIUM  HIGH }

Rotas (page.tsx)

  • /master/planos — Kanban de todos os planos (filtros: filial, status, prioridade)
  • /supervisor/planos — planos das filiais supervisionadas
  • /local/planos — planos da filial do LOCAL
  • /master/planos/[id] — detalhe + timeline + validação

Procedures tRPC

  • create (geralmente automático via Checklist, mas pode ser manual)
  • update / updateStatus
  • validate (auditor aprova/rejeita com fotos antes/depois + comentário)
  • list (Kanban filtros)
  • overdue (planos vencidos)

Lógica

  • Quando Checklist encontra isConform: falsecreateActionPlan automaticamente
  • Job Bull action-plan-overdue-check (diário): planos vencidos → notifica responsável + MASTER
  • Validação: auditor na próxima visita registra afterPhotos + approve/reject
  • Reject → recurrenceCount++ + novo prazo + notifica responsável
  • 3+ rejeições → escala pra MASTER (alerta)

✅ Critérios de Aceite

  1. Não conformidade no Checklist gera plano 5W2H automaticamente
  2. MASTER/LOCAL pode criar plano manualmente também
  3. Kanban visual (PENDING→IN_PROGRESS→APPROVED/DONE)
  4. Validação com fotos antes/depois
  5. Rejeição gera recorrência + novo prazo
  6. Notificações automáticas (push + email + WhatsApp)
  7. Dashboard: taxa resolução, planos vencidos por filial
  8. Build passa + lint OK

🔌 Handoff

  • Job action-plan-overdue-check no bootstrap
  • Kanban reusar componente <KanbanBoard /> (do Card 30/46)
  • Integração com Card 51 (Checklist) + Card 46 (Chamados)

🎯 Próximo

Card 53: Universidade Corporativa (LMS para Colaboradores) — M10

← Voltar para a visão geral