docs: registra troca da memória da sessão para Postgres (Z-PRO)
Nova seção 16: node Memória da Sessão (RAM) trocado pelo Postgres Chat Memory oficial, tabela n8n_chat_histories criada automaticamente. Container Postgres com um banco por cliente, credencial por workflow. Testado de ponta a ponta em produção: duas mensagens em sequência confirmam que o contexto persiste entre execuções separadas do workflow. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
8c01daba18
commit
46f77cadca
@@ -508,3 +508,54 @@ já externalizada para o Google Doc de teste
|
|||||||
real de produção da clínica exemplo quando o gestor tiver o conteúdo
|
real de produção da clínica exemplo quando o gestor tiver o conteúdo
|
||||||
definitivo. Padrão pronto pra replicar em Klingo/SysLife/ClinicAll
|
definitivo. Padrão pronto pra replicar em Klingo/SysLife/ClinicAll
|
||||||
quando esses tiverem workflow de agente.
|
quando esses tiverem workflow de agente.
|
||||||
|
|
||||||
|
## 16. Memória da sessão via Postgres (substitui o buffer em RAM, só Z-PRO)
|
||||||
|
|
||||||
|
**Data:** 11/08/2026. Ver design completo em
|
||||||
|
`docs/superpowers/specs/2026-08-11-memoria-sessao-postgres-design.md` e
|
||||||
|
plano em `docs/superpowers/plans/2026-08-11-memoria-sessao-postgres.md`.
|
||||||
|
|
||||||
|
**Motivação**: o node `Memória da Sessão` (`memoryBufferWindow`/"Simple
|
||||||
|
Memory") guardava o histórico da conversa só em RAM do processo do
|
||||||
|
n8n — não sobrevive a um reinício (deploy, crash, atualização) e não
|
||||||
|
funcionaria em setups com múltiplos workers (queue mode). Trocado pelo
|
||||||
|
node oficial `Postgres Chat Memory`, que persiste o histórico num banco.
|
||||||
|
|
||||||
|
**Infraestrutura**: o usuário provisionou um **container Postgres**, com
|
||||||
|
**um banco por cliente/clínica** dentro dele (mesma filosofia de
|
||||||
|
isolamento já usada pra `docId`, `baseUrl`/`apiId` dos MCP Servers).
|
||||||
|
Credencial no n8n: `Postgres Agendamento - (clínica exemplo)`
|
||||||
|
(`xq3QAN3MZSOCVgdY`), apontando pro banco do Z-PRO. Cada cliente futuro
|
||||||
|
terá sua própria credencial, apontando pro banco dele no mesmo
|
||||||
|
container.
|
||||||
|
|
||||||
|
**Troca implementada** (operação atômica — adicionar + conectar +
|
||||||
|
remover, mesma lição da seção 15 sobre nós desconectados): saiu
|
||||||
|
`Memória da Sessão` (`memoryBufferWindow`), entrou `Memória da Sessão
|
||||||
|
(Postgres)` (`@n8n/n8n-nodes-langchain.memoryPostgresChat`, v1.4), com
|
||||||
|
os mesmos parâmetros de sessão de sempre (`sessionKey: ={{
|
||||||
|
$json.sessionId }}`, `contextWindowLength: 20`). A tabela
|
||||||
|
`n8n_chat_histories` foi criada **automaticamente pelo node** na
|
||||||
|
primeira execução — sem setup manual de schema.
|
||||||
|
|
||||||
|
**Sem migração de histórico**: o histórico anterior só existia em RAM,
|
||||||
|
não havia nada a migrar — mesmo efeito que já acontecia a cada reinício
|
||||||
|
do n8n, só que agora deixa de acontecer daqui pra frente.
|
||||||
|
|
||||||
|
**Teste real de validação (11/08/2026)**: duas mensagens enviadas em
|
||||||
|
sequência ao webhook de produção, mesmo `protocol`
|
||||||
|
(`teste-memoria-postgres-01`) — primeira mensagem informando um nome
|
||||||
|
fictício, segunda perguntando "qual nome você anotou". O agente
|
||||||
|
respondeu corretamente com o nome da primeira mensagem, confirmando que
|
||||||
|
o contexto persistiu **entre duas execuções separadas do workflow**
|
||||||
|
(prova de que não é mais RAM do processo, já que cada chamada webhook é
|
||||||
|
uma execução isolada). Confirmação direta via `SELECT` na tabela
|
||||||
|
`n8n_chat_histories` não foi feita (sem necessidade de dar acesso ao
|
||||||
|
banco pra automação — a prova conversacional já foi considerada
|
||||||
|
suficiente).
|
||||||
|
|
||||||
|
**Resultado**: workflow ativo em produção com memória de sessão
|
||||||
|
persistida em Postgres. Padrão pronto pra replicar em
|
||||||
|
Klingo/SysLife/ClinicAll quando esses tiverem workflow de agente — cada
|
||||||
|
um com seu próprio banco dentro do mesmo container e sua própria
|
||||||
|
credencial.
|
||||||
|
|||||||
Reference in New Issue
Block a user