✅ 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 modelActionPlan
🛠️ 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/updateStatusvalidate(auditor aprova/rejeita com fotos antes/depois + comentário)list(Kanban filtros)overdue(planos vencidos)
Lógica
- Quando Checklist encontra
isConform: false→createActionPlanautomaticamente - 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
- Não conformidade no Checklist gera plano 5W2H automaticamente
- MASTER/LOCAL pode criar plano manualmente também
- Kanban visual (PENDING→IN_PROGRESS→APPROVED/DONE)
- Validação com fotos antes/depois
- Rejeição gera recorrência + novo prazo
- Notificações automáticas (push + email + WhatsApp)
- Dashboard: taxa resolução, planos vencidos por filial
- Build passa + lint OK
🔌 Handoff
- Job
action-plan-overdue-checkno 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