From e2449c9f3cc418312e6afc00511eefa70849af22 Mon Sep 17 00:00:00 2001 From: Rodrigo Bertoldo de Sousa Martins Date: Wed, 1 Apr 2026 17:37:21 -0300 Subject: [PATCH] fix usuarios de suporte Signed-off-by: Rodrigo Bertoldo de Sousa Martins --- src/bot/handler.js | 65 +++++++++++++++++++++++++++------------------- 1 file changed, 38 insertions(+), 27 deletions(-) diff --git a/src/bot/handler.js b/src/bot/handler.js index 9e35ccb..676f67e 100644 --- a/src/bot/handler.js +++ b/src/bot/handler.js @@ -6166,15 +6166,6 @@ Digite /help para ver todos os comandos disponíveis! try { const resultado = await this.topsapp.obterSuporteCategorias(); - console.log(`🔍 Handler - Resultado categorias:`, { - success: resultado.success, - dataType: typeof resultado.data, - dataLength: resultado.data?.dados?.length, - error: resultado.error - }); - console.log(`🔍 [DEBUG] Itens de categorias:`); - (resultado.data?.dados || []).forEach((c, i) => console.log(` [${i}]`, JSON.stringify(c))); - if (!resultado.success) { await this.bot.sendMessage(session.chatId, `❌ **Erro ao buscar categorias**\n\n` + @@ -6255,34 +6246,54 @@ Digite /help para ver todos os comandos disponíveis! if (!session) return; if (!input) { - // Primeira vez nesta etapa - buscar tipos de atendimento + // Primeira vez nesta etapa - buscar equipes/técnicos via operadores await this.bot.sendMessage(session.chatId, `🔍 Buscando técnicos disponíveis...`); - // DEBUG: ver categorias já carregadas na sessão - console.log('🔍 [DEBUG] Categorias na sessão:', JSON.stringify(session.dados.categorias)); - try { const location = session.dados.location || ''; - // DEBUG: testar todos os candidatos em paralelo - const [resAtendimento, resCategorias, resOperadores] = await Promise.all([ - this.topsapp.obterSuporteTiposAtendimento(location), - this.topsapp.obterSuporteCategorias(location), - this.topsapp.obterOperadores(location) - ]); + // ObterOperadores traz o campo id_tecnico/tecnico que mapeia as equipes cadastradas + const resultado = await this.topsapp.obterOperadores(location); - console.log('🔍 [DEBUG] ObterSuporteTiposAtendimento:', JSON.stringify(resAtendimento?.data?.dados || resAtendimento?.error)); - console.log('🔍 [DEBUG] ObterSuporteCategorias(location):', JSON.stringify(resCategorias?.data?.dados || resCategorias?.error)); - console.log('🔍 [DEBUG] ObterOperadores:', JSON.stringify(resOperadores?.data?.dados || resOperadores?.error)); + if (!resultado.success) { + await this.bot.sendMessage(session.chatId, + `❌ **Erro ao buscar técnicos**\n\n` + + `⚠️ ${resultado.error}\n\n` + + `🔄 Reiniciando processo...` + ); + this.suporteSessions.delete(sessionId); + return; + } - // Placeholder: retorna vazio para não quebrar o fluxo - await this.bot.sendMessage(session.chatId, `⚠️ Veja o console para identificar o endpoint correto.`); - this.suporteSessions.delete(sessionId); - return; + const operadores = resultado.data?.dados || []; + + // Extrair técnicos únicos pelo id_tecnico (cada operador aponta para uma equipe) + const tecnicosMap = new Map(); + operadores.forEach(op => { + if (op.id_tecnico > 0 && op.tecnico && op.tecnico.trim() !== '') { + if (!tecnicosMap.has(op.id_tecnico)) { + tecnicosMap.set(op.id_tecnico, { id: op.id_tecnico, nome: op.tecnico }); + } + } + }); + + const tecnicos = Array.from(tecnicosMap.values()).sort((a, b) => a.nome.localeCompare(b.nome)); + + if (tecnicos.length === 0) { + await this.bot.sendMessage(session.chatId, + `❌ **Nenhum técnico encontrado**\n\n` + + `🔄 Reiniciando processo...` + ); + this.suporteSessions.delete(sessionId); + return; + } + + session.dados.tecnicos = tecnicos; + await this.mostrarOpcoesTecnicos(session); } catch (error) { await this.bot.sendMessage(session.chatId, - `❌ **Erro ao buscar tipos de atendimento**\n\n` + + `❌ **Erro ao buscar técnicos**\n\n` + `⚠️ ${error.message}\n\n` + `🔄 Reiniciando processo...` );