From 1ab39c20bbe3440971564793a39bff85a73fa947 Mon Sep 17 00:00:00 2001 From: Rodrigo Bertoldo de Sousa Martins Date: Wed, 1 Apr 2026 17:04:57 -0300 Subject: [PATCH] nlp: fix abrir e fechar suporte Signed-off-by: Rodrigo Bertoldo de Sousa Martins --- src/nlp/processor.js | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/src/nlp/processor.js b/src/nlp/processor.js index 9106c6e..4b3531d 100644 --- a/src/nlp/processor.js +++ b/src/nlp/processor.js @@ -52,7 +52,9 @@ class NLPProcessor { /^(status|verificar)\s+(topsapp)$/i, /^(dados|cadastro|informações|info)\s+(cliente|cadastrais?)\s+(.+)$/i, /^(listar|ver)\s+(serviços?|servicos|planos|contratos)\s+(.+)$/i, - // Padrões específicos para suporte + // Padrões específicos para fechar suporte (deve vir ANTES de abrir) + /^(fechar|finalizar|encerrar|concluir)\s+(suporte|chamado|ticket|atendimento)(?:\s+(.+))?$/i, + // Padrões específicos para abrir suporte /^(abrir|criar|adicionar|novo)\s+(suporte|chamado|ticket|atendimento)(?:\s+(.+))?$/i, /^(suporte|chamado|ticket|atendimento)(?:\s+(.+))?$/i, // Padrões específicos para Fiberhome @@ -289,7 +291,19 @@ class NLPProcessor { }; } - // Detectar comandos de suporte + // Detectar comandos de fechar suporte + if (/fechar|finalizar|encerrar|concluir/i.test(action) && + /suporte|chamado|ticket|atendimento/i.test(fullMatch)) { + let query = match[3] || null; + return { + action: 'fechar_suporte', + target: query ? query.trim() : null, + confidence: 0.95, + type: 'fechar_suporte_pattern' + }; + } + + // Detectar comandos de abrir suporte if (/abrir|criar|adicionar|novo|suporte|chamado|ticket|atendimento/i.test(action) && /suporte|chamado|ticket|atendimento/i.test(fullMatch)) { let query = match[3] || match[2] || ''; // Nome/CPF do cliente (opcional) @@ -706,6 +720,17 @@ class NLPProcessor { } } + // Detectar fechar / finalizar / encerrar suporte → fechar_suporte (antes do loop de synonyms) + if (/fechar|finalizar|encerrar|concluir/i.test(text) && /suporte|chamado|ticket|atendimento/i.test(text)) { + const fmatch = text.match(/(?:fechar|finalizar|encerrar|concluir)\s+(?:suporte|chamado|ticket|atendimento)\s*(.*)/i); + return { + action: 'fechar_suporte', + target: fmatch && fmatch[1] ? fmatch[1].trim() : null, + confidence: 0.95, + type: 'keyword_fechar_suporte' + }; + } + // Detectar reativar / religar / desbloquear → liberar_cliente if (/reativar|religar|desbloquear|tirar\s+bloqueio/i.test(text)) { const rlMatch = text.match(/(?:reativar|religar|desbloquear)\s+(.+)/i);