Skip to main content
Outras pessoas mexem no projeto pelo painel: o dono da agência, a equipe do cliente final, o suporte. O assistente descobre essas mudanças externas comparando a revision do projeto com a última que ele conhece e, quando ela muda, comparando o template atual com o último snapshot. O resultado vai para a MEMORIA.md. Isso também é o desfazer da agência: a Zatten guarda versões só do agente (o config do LangChain Agent). Colunas, tags, propriedades e automações não têm histórico na Zatten. Sem snapshot, não há como voltar.

As três peças

A revision muda com o que está no template: colunas, tags, propriedades, automações, departamentos, templates da Meta e o config do agente (inclusive um rascunho salvo e não publicado). Ela não muda com leads, conversas, membros de departamento, campanhas ou conexão, que não fazem parte do template.

Ao abrir um cliente

1

Ler o projeto

Chamar get_template com o project_id do CLIENTE.md.
2

Comparar a revision

Comparar com a revision registrada no Vigente da MEMORIA.md.
  • Igual: nada mudou. Seguir com o pedido.
  • Diferente: alguém mudou o projeto fora do assistente. Ir para o passo 3.
3

Fazer o diff contra o último snapshot

Comparar o template atual com o snapshot citado no Vigente. Ver “Como fazer o diff” abaixo.
4

Registrar e atualizar

  • Acrescentar ao Histórico uma entrada “Mudança externa” com o que mudou.
  • Gravar um snapshot novo (assunto mudanca-externa).
  • Atualizar o Vigente: a revision nova, o snapshot novo e o que passou a valer.
5

Contar para a pessoa

Em uma ou duas linhas, nos termos do painel: “Desde 02/10, alguém criou a tag Retorno e desligou o follow-up Lembrete 72h pelo painel.”
Na primeira vez com o cliente (diagnóstico), não há com o que comparar: a leitura vira a linha de base, com snapshot ..._diagnostico.json e a revision no Vigente. Ver Diagnóstico de um projeto.

Depois de cada escrita

A resposta de update_template não traz a revision nova, de propósito. Por isso o assistente relê.
  1. update_template (depois do plano e do “sim”).
  2. get_template de novo.
  3. Gravar o snapshot: AAAA-MM-DD_HHMM_<assunto>.json, com a resposta inteira (project_id, project_name, revision e template).
  4. Atualizar o Vigente com a revision nova e o nome do snapshot.
  5. Acrescentar a entrada no Histórico, no mesmo formato do relatório.
Escritas feitas pelo navegador (publicar, enviar template à Meta) também entram no Histórico. Se mudaram algo do template, releia e grave snapshot do mesmo jeito.

Por que o snapshot é depois, e não antes?

Para dizer “alguém mexeu no painel” com precisão, o assistente precisa do último estado que ele conhece, que é o de depois da própria escrita. O “antes” da escrita seguinte é o “depois” da anterior. Um snapshot por escrita basta. Comparar com o snapshot de antes obrigaria o assistente a separar o que ele mesmo mudou do que outra pessoa mudou, e ele erraria. Comparar com o Vigente também não serve: o Vigente é texto, não JSON.

Como fazer o diff

Compare bloco a bloco, e dentro de cada bloco item a item pela chave, não linha a linha. A ordem dos itens não importa. Para cada bloco, liste: criado, removido, alterado (campo, antes → depois). Uma forma rápida de achar os blocos que mudaram, antes de olhar item a item:
Relate nos termos do painel, não do JSON: “a coluna Agendado passou a desligar a IA”, não “columns[3].shutdown_ai: false → true”.

Formato da MEMORIA.md

clientes/clinica-sorriso/MEMORIA.md
O Vigente é reescrito quando algo muda. O Histórico só recebe entradas novas; nunca se edita uma entrada antiga.

Como desfazer com um snapshot

Para voltar um bloco ao estado de um snapshot, o assistente envia aquele bloco do snapshot por update_template, com plano e “sim”, como qualquer escrita. Itens que foram criados depois do snapshot não somem: o MCP nunca apaga. Eles aparecem como “ficou de fora sem ser apagado”, e apagar é com uma pessoa, no painel. Ver Como uma escrita funciona. Para o agente (o config do LangChain Agent), prefira restaurar a versão pelo histórico de versões do painel. Ver Versões e publicação.

Armadilhas

  • Snapshot sem segredo. O template lido pelo MCP traz a chave do modelo, a do LangSmith e os headers preenchidos. Antes de gravar o snapshot, troque esses valores por "<removido>" (regra em Organizar sua agência). Por isso o diff não mostra se uma chave mudou: para isso, compare só se o campo existe, nunca o valor.
  • Nunca restaure um campo "<removido>". Ao usar um snapshot para desfazer, omita as chaves e os headers na escrita. Mandar o marcador grava o marcador.
  • Rascunho muda a revision. Alguém salvar o agente no painel sem publicar já troca a revision. Não é erro; registre como mudança externa.
  • Escrita recusada por revision velha. Se update_template responde que o projeto mudou desde a leitura, nada foi gravado. Trate como mudança externa: releia, faça o diff, conte para a pessoa e refaça o plano sobre o estado novo.
  • Snapshot antes da escrita não substitui o de depois. Sem o de depois, a próxima comparação acusa como “externa” a mudança que o próprio assistente fez.
  • O diff só vê o template. Lead movido, conversa encerrada, membro adicionado a departamento e campanha disparada não aparecem.

Para saber mais