5.6 KiB
| type | name | description | scope | updatedAt |
|---|---|---|---|---|
| workflow | criar-fluxograma | Criar ou atualizar uma página de fluxograma interativo em qualquer sistema | local | 2026-06-01 |
Workflow: Criar Fluxograma de Decisões
Este workflow cria uma página interativa de fluxograma em qualquer aplicação web, usando Mermaid.js instalado como dependência do projeto.
Princípio
O fluxograma é um artefato vivo. Ele documenta visualmente:
- Os pontos de entrada do processo
- As decisões tomadas em cada etapa
- Os registros gerados (banco, fila, log, e-mail, etc.)
- As proteções e regras que governam os estados
Deve ser mantido sempre sincronizado com o código real.
Passos
1. Levantar o processo a ser documentado
Ler os arquivos de código relevantes para entender:
- Quais são os pontos de entrada? (funções de API, eventos, webhooks, ações do usuário)
- Quais são as decisões? (condições
if/else, guards, validações) - Quais são os efeitos colaterais? (gravações em banco, envios de e-mail, filas, logs)
- Quais são os estados possíveis? (status, notas, flags, etapas)
- Existe hierarquia ou prioridade entre estados?
2. Organizar os diagramas
Dividir o processo em um diagrama por ponto de entrada.
Cada diagrama deve mostrar:
- Todos os caminhos possíveis, inclusive early returns e casos de erro
- Registros gerados com ícone indicativo (ex: 🗄️ banco, 📧 e-mail, 🚫 bloqueio)
- Decisões claramente separadas por ramificações
Definir a orientação de cada diagrama:
flowchart TD→ vertical (melhor para fluxos sequenciais com poucas ramificações)flowchart LR→ horizontal (melhor para pipelines e fluxos com muitas etapas em linha)
3. Instalar o Mermaid
Instalar como dependência do projeto antes de qualquer implementação:
# npm
npm install mermaid
# pnpm
pnpm add mermaid
4. Criar a página com Mermaid
Adaptar à plataforma do projeto (Vue, React, HTML puro, etc.), mas garantir:
Importação
import mermaid from 'mermaid';
Inicialização com tema institucional
Adaptar as cores para a identidade visual do projeto:
mermaid.initialize({
startOnLoad: false,
theme: 'base',
themeVariables: {
primaryColor: '#4F46E5', // cor primária do projeto
primaryTextColor: '#1F2933',
primaryBorderColor: '#3730A3', // variação mais escura da primária
lineColor: '#6B7280',
secondaryColor: '#E0E7FF', // variação clara da primária
tertiaryColor: '#F3F4F6',
fontFamily: "'Inter', 'Segoe UI', sans-serif",
fontSize: '13px',
},
});
Renderização de cada diagrama
// Para cada diagrama:
const { svg } = await mermaid.render(`id-unico-${idx}`, codigoMermaid);
container.innerHTML = svg;
// Tornar o SVG responsivo:
const svgEl = container.querySelector('svg');
if (svgEl) {
svgEl.style.width = '100%';
svgEl.style.height = 'auto';
svgEl.removeAttribute('width');
}
5. Registrar a rota e adicionar acesso
- Registrar a rota
/fluxograma(ou equivalente) no sistema de rotas do projeto - Adicionar botão de navegação na tela de administração ou dashboard
Padrão de sintaxe Mermaid
Tipos de nó por semântica
| Situação | Sintaxe | Exemplo |
|---|---|---|
| Início / Fim | A(["Texto"]) |
A(["Início"]) |
| Decisão | B{"Condição?"} |
B{"Nota é ativa?"} |
| Ação / Processo | C["Texto"] |
C["Consulta banco"] |
| Registro em banco | D[("🗄️ Grava dado")] |
D[("🗄️ Grava 203_neutro")] |
| E-mail / notificação | E["📧 Envia e-mail"] |
E["📧 Agenda na fila"] |
| Bloqueio / guard | F["🚫 Retorna sem ação"] |
F["🚫 Nota ativa, ignora"] |
| Proteção / regra | G["🛡️ Regra aplicada"] |
G["🛡️ SQL CASE protege"] |
Regras para evitar erros de parsing
✅ Nós com parênteses → usar aspas:
A["Texto (com parênteses)"]
✅ Labels de arestas com texto especial → usar aspas:
A -- "Label aqui" --> B
✅ Emojis → sempre dentro de aspas:
A["🗄️ Grava registro"]
❌ Não usar < > dentro de labels sem aspas
❌ Não usar & diretamente — usar texto alternativo
Cores de destaque para nós
style NomeNo fill:#22C55E,color:#fff → verde sucesso
style NomeNo fill:#DC2626,color:#fff → vermelho erro
style NomeNo fill:#F59E0B,color:#000 → amarelo alerta
style NomeNo fill:#4F46E5,color:#fff → cor institucional (adaptar ao projeto)
style NomeNo fill:#6B7280,color:#fff → cinza neutro
Validação antes de finalizar
- Cada ponto de entrada tem seu próprio diagrama?
- Todos os registros gerados estão mapeados?
- Os caminhos de bloqueio e early return estão visíveis?
- A hierarquia de estados (se existir) está documentada?
- A data de atualização está registrada na página?
- A sintaxe Mermaid está correta (sem erros de parsing)?
- O SVG está responsivo (largura 100%, sem width fixo)?
Manutenção
Sempre que o processo mudar:
- Identificar qual diagrama é afetado
- Atualizar o código Mermaid correspondente
- Atualizar a data de atualização na página
- Se houver novo estado ou proteção, documentar na legenda
Referência de implementação
Se o projeto já possuir um fluxograma implementado, usar como referência. Caso contrário, seguir os passos acima para criar a primeira implementação.
Referências
- Workflow:
global/workflows/codigo-limpo(ouglobal/workflows/otimizar-codigos) - Skill:
global/skills/documentar-decisao-tecnica/SKILL(para decisões que geram fluxogramas)