sextafeiraDocumentação

    Sextafeira Flow · Constituição

    Como o Sextafeira Flow funciona

    Todo fluxo de CX é um grafo de estados nomeados, onde transições entre estados são disparadas por eventos, atividades acontecem ao entrar/sair de estados, e a posição do grafo + dados acumulados são persistidos de forma durável a cada ponto de bloqueio.

    As 5 primitivas

    Toda definição de nó, todo evento e toda mudança da plataforma se classifica em uma das 5 primitivas. Sem exceção.

    Primitiva #1

    STATE

    Pergunta que responde: onde a conversa está agora?

    Posição nomeada onde a instância pode dormir. Único ponto durável — sem state, não há suspensão.

    Primitiva #2

    EVENT

    Pergunta que responde: algo aconteceu?

    Sinal tipado entregue via mailbox. Único input externo. Inclui timer.fired e cron.tick como subtipos.

    Primitiva #3

    TRANSITION

    Pergunta que responde: qual aresta seguir?

    Aresta dirigida State→State, disparada por Event, opcionalmente protegida por guard. Única forma de motion.

    Primitiva #4

    ACTIVITY

    Pergunta que responde: que efeito atômico produzir?

    Trabalho atômico com efeito no mundo (send msg, call API, update CRM). Idempotente, retry-safe.

    Primitiva #5

    CONTEXT

    Pergunta que responde: que dados a instância carrega?

    Dados durável-persistidos do bureau. Lidos por guards, escritos por activities. Memória entre eventos.

    Regras invioláveis

    1. STATE é o único ponto durável — instâncias dormem em estados. Sem isso, reboot perde flows em andamento.
    2. EVENT é o único input externo — toda entrada chega como event tipado.
    3. TRANSITION é a única forma de motion — não há "salto direto", toda mudança de estado é via transição declarada.
    4. ACTIVITY é a única coisa que muda o mundo externo — guards são puros, transitions só movem, states só são. Side-effect só dentro de activity.
    5. CONTEXT é a única forma de memória entre eventos — sem ela, fluxo seria stateless.
    6. Toda ACTIVITY DEVE ter retry policy + timeout + ser idempotente — sem isso, redes flutuantes geram dupla cobrança ou mensagem dupla.
    7. Replay é determinístico — re-aplicar EVENTs na ordem reconstrói o mesmo STATE+CONTEXT.

    Anti-padrão #1 — Hook hardcoded

    ❌ Errado: chamar uma feature direto do código de outra. Acopla, não dá pra cliente trocar trigger.

    async function resolveHandoff(args) {
      // ... resolve logic ...
      // hook hardcoded — acopla NPS dentro do handoff service
      createSurveyFromHandoff(args.handoffId)  // ❌
    }

    ✅ Certo: emitir no event-bus + flow assinante reage. Trigger configurável.

    async function resolveHandoff(args) {
      // ... resolve logic ...
      eventBus.emit('handoff.resolved', { handoffId, ... })  // ✅
    }
    
    // Flow NPS é instalado pelo cliente, com trigger configurável.
    // Cliente troca pra cron, webhook, manual, etc — sem tocar código.

    Próximos passos

    Sobre nossos cookies.

    Usamos apenas cookies essenciais para o funcionamento do site e da plataforma. Não usamos cookies de rastreamento, analytics de terceiros ou publicidade. Nenhum dado seu é compartilhado com anunciantes. Ver política completa de cookies →