18 Commits
Author SHA1 Message Date
EricandClaude Sonnet 5 a367637606 feat(n8n): adiciona suporte a audio (transcricao via Whisper)
Baixa o audio (mesma autenticacao Bearer usada pra imagem/PDF), transcreve
com o node OpenAI (resource audio, operation transcribe, modelo whisper-1)
e trata o texto transcrito exatamente como uma mensagem digitada pelo
cliente. Erro no download ou na transcricao cai na mensagem padrao de
fallback. AI Agent agora le entrada do item atual ($json.entrada) em vez
de referenciar sempre o node original, para funcionar nos tres caminhos
(texto direto, imagem/PDF, audio transcrito).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-21 11:36:52 -03:00
EricandClaude Sonnet 5 ed1d154b95 feat(n8n): aceita PDF do pedido medico, alem de foto e texto
Extrai a URL do documento (msg.document.url) do mesmo jeito que a imagem,
baixa com a mesma autenticacao, e habilita passthroughBinaryPdfs no AI
Agent para o modelo ler o PDF diretamente. Prompt atualizado pra mencionar
PDF como formato aceito.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-21 11:30:56 -03:00
EricandClaude Sonnet 5 c37ea1189e feat(n8n): trata formularios com checkbox, orca so exames marcados
Adiciona instrucao no prompt: quando o pedido medico vier como formulario
pre-impresso com caixinhas de selecao, orcar apenas os exames com a
caixinha marcada, ignorando os listados mas nao marcados. Se nao houver
duvida clara sobre a marcacao, trata como nao identificado.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-21 11:07:25 -03:00
EricandClaude Sonnet 5 294a8923f3 feat(n8n): adiciona lista real de 44 exames e valores no prompt
Substitui a tabela de exemplo pela lista real fornecida pelo usuario. Item
'Sorologia para outras doencas' tratado como sob consulta (nao entra no
total automatico, sempre avisa que um atendente confirma o valor).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-21 11:05:15 -03:00
EricandClaude Sonnet 5 091878d484 fix(n8n): so processa mensagens quando o ticket esta no fluxo de Orcamento
O Webhook do Canal dispara pra toda mensagem do numero, entao o bot estava
respondendo (pedindo exames) pra qualquer coisa -- CPF, agendamento,
resultado de exame etc. Filtra por ticket.stepChatFlow, so seguindo quando
o ticket esta parado no passo Menu Orcamento ou Menu Orcamento 2; qualquer
outra coisa e ignorada sem resposta.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-21 10:50:13 -03:00
EricandClaude Sonnet 5 2322940264 fix(n8n): usa canal/API dedicados deste projeto para o envio (nao mais compartilhado)
O envio estava saindo pelo canal do bot de agendamento (sub-workflow
enviar_texto, projeto diferente) -- por isso recebia num numero e
respondia por outro. Cria credencial httpHeaderAuth propria ('ZPRO API
Token - Orcamento de Exames') e troca o envio para uma chamada HTTP direta
dentro deste workflow, isolada do projeto de agendamento.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-21 10:40:16 -03:00
EricandClaude Sonnet 5 deeefe2b40 feat(n8n): reconstroi o fluxo em cima do Webhook do Canal (resolve imagem)
O 'Webhook do Canal' do Z-PRO (fora do ChatFlow, opcao 'Mensagens
recebidas') manda o payload completo da mensagem, incluindo msg.image.url
para fotos -- resolve a limitacao que bloqueava imagem. Novo endpoint
orcamento-exames-canal-zpro substitui o antigo orcamento-exames-zpro
(removido). Download da imagem autenticado com Bearer usando o bmToken do
proprio payload. Volta ao envio assincrono via sub-workflow enviar_texto,
ja que esse webhook e uma notificacao (nao e capturado/reenviado pelo
Z-PRO como no ChatFlow). Prompt volta a aceitar foto normalmente.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-21 10:16:09 -03:00
EricandClaude Sonnet 5 fd77afad61 feat(n8n): adiciona webhook diagnostico para o 'Webhook do Canal' do Z-PRO
Descoberta: existe um mecanismo de webhook por canal (fora do ChatFlow),
com opcao 'Mensagens recebidas' que dispara a cada mensagem -- possivel
caminho pra receber midia, ja que o ChatFlow nao oferece isso. Endpoint
separado (orcamento-exames-canal-zpro) so pra inspecionar o payload real
antes de integrar ao fluxo principal.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-21 10:10:15 -03:00
EricandClaude Sonnet 5 c1aa7b7978 fix(n8n): para de prometer suporte a foto no prompt (imagem nao chega, hoje)
Investigacao exaustiva no ChatFlow do Z-PRO (seletor de variaveis, passo
n8n, passo Midia, tipo de variavel na captura) confirma que nao ha, hoje,
nenhum mecanismo pra repassar imagem recebida pro webhook. O agente agora
pede pro cliente digitar os exames em vez de pedir foto -- workflow funciona
100% via texto; imagem fica documentada como limitacao em aberto na spec.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-21 10:07:27 -03:00
EricandClaude Sonnet 5 95687b19ae revert(n8n): remove consulta de ticket inutil (retornava ticket antigo/errado)
showticketchatbot nao busca o ticket/mensagem da sessao atual de forma
confiavel -- no teste retornou um ticket fechado de mais de um mes atras,
sobre assunto nao relacionado. Volta ao fluxo direto sem essa consulta.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-21 09:58:43 -03:00
EricandClaude Sonnet 5 095a80edc5 feat(n8n): consulta ticket via API do Z-PRO para tentar obter midia (fase diagnostica)
O ChatFlow do Z-PRO nao expoe nenhuma variavel de imagem/anexo no seletor
(confirmado pelo usuario) -- so metadados de contato/sessao. Adiciona
chamada a showticketchatbot logo apos extrair os campos do webhook, guardando
a resposta crua em 'ticketApiRaw' para inspecionar o formato real antes de
extrair a URL da midia definitivamente.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-21 09:55:01 -03:00
EricandClaude Sonnet 5 314ccf5cdf fix(n8n): responde de forma sincrona (texto puro) e usa memoria simples
O Z-PRO captura a resposta HTTP do webhook e reenvia direto ao cliente
(variavel n8n1 -> passo Mensagem), entao o envio assincrono via API duplicava
a mensagem. Troca para responseMode: responseNode + Respond to Webhook em
texto puro, remove o node de envio assincrono, e troca a memoria de sessao
de Postgres (reservado para outro fluxo) para o node Simple Memory nativo.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-21 09:13:27 -03:00
EricandClaude Sonnet 5 772747d74e fix(n8n): torna o fluxo conversacional (texto e/ou imagem, com memoria de sessao)
O fluxo anterior encerrava sem responder quando a mensagem nao tinha imagem,
o que nao reflete um atendimento real (cliente manda texto antes/depois, ou
digita os exames em vez de mandar foto). Agora toda mensagem chega ao AI
Agent (com ou sem imagem), com memoria de conversa via Postgres, seguindo o
mesmo padrao do bot de agendamento ja usado nessa conta.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-21 09:03:16 -03:00
EricandClaude Sonnet 5 e1ea3dee53 feat(n8n): monta resposta com fallback de erro e envia via sub-workflow Z-PRO
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-20 22:12:52 -03:00
EricandClaude Sonnet 5 82101e8980 feat(n8n): adiciona AI Agent com visao e tabela de precos no prompt
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-20 22:10:30 -03:00
EricandClaude Sonnet 5 55a90b8104 feat(n8n): baixa a imagem recebida do cliente
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-20 22:07:40 -03:00
EricandClaude Sonnet 5 e61d8895ff feat(n8n): extrai campos do webhook e filtra mensagens de imagem
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-20 22:06:29 -03:00
EricandClaude Sonnet 5 fb336d4278 feat(n8n): cria esqueleto do workflow de orçamento de exames (webhook)
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-20 22:05:14 -03:00