diff --git a/src/bot/handler.js b/src/bot/handler.js index 6204483..9e35ccb 100644 --- a/src/bot/handler.js +++ b/src/bot/handler.js @@ -6172,6 +6172,8 @@ Digite /help para ver todos os comandos disponíveis! 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, @@ -6253,67 +6255,30 @@ Digite /help para ver todos os comandos disponíveis! if (!session) return; if (!input) { - // Primeira vez nesta etapa - buscar funcionários ativos + // Primeira vez nesta etapa - buscar tipos de atendimento 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 || ''; - // Buscar técnicos e funcionários em paralelo para comparar - const [resultadoTecnicos, resultadoFuncionarios] = await Promise.all([ - this.topsapp.obterTecnicos(location), - this.topsapp.obterFuncionarios(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) ]); - // DEBUG: log comparativo para identificar qual endpoint bate com o sistema - const rawTecnicos = resultadoTecnicos?.data?.dados || []; - const rawFuncionarios = resultadoFuncionarios?.data?.dados || []; + 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)); - console.log('🔍 [DEBUG] ===== ObterTecnicos ====='); - console.log('Total:', rawTecnicos.length); - rawTecnicos.forEach((t, i) => console.log(` [${i}]`, JSON.stringify(t))); - - console.log('🔍 [DEBUG] ===== ObterFuncionarios ====='); - console.log('Total:', rawFuncionarios.length); - rawFuncionarios.forEach((t, i) => console.log(` [${i}]`, JSON.stringify(t))); - - // Usar a lista que contiver os nomes esperados pelo sistema - // A lista de ObterTecnicos tem times/equipes (ex: INSTALAÇÃO-GUARAI), - // enquanto ObterFuncionarios tem pessoas (ex: MARCELA SOUSA SOARES). - // Se ObterTecnicos retornar nomes individuais, provavelmente é ObterFuncionarios que temos que usar. - const resultado = resultadoTecnicos; - - 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; - } - - const tecnicosRaw = resultado.data?.dados || resultado.dados || []; - - if (tecnicosRaw.length === 0) { - await this.bot.sendMessage(session.chatId, - `❌ **Nenhum técnico ativo encontrado**\n\n` + - `🔄 Reiniciando processo...` - ); - this.suporteSessions.delete(sessionId); - return; - } - - // Normalizar campos: a API retorna id_tecnico e tecnico (nome) - const tecnicos = tecnicosRaw.map(t => ({ - id: t.id ?? t.id_tecnico ?? t.codigo ?? null, - nome: t.nome || t.tecnico || t.descricao || t.name || `Técnico #${t.id ?? t.id_tecnico}`, - email: t.email || null, - _raw: t - })).filter(t => t.id !== null); - - session.dados.tecnicos = tecnicos; - await this.mostrarOpcoesTecnicos(session); + // 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; } catch (error) { await this.bot.sendMessage(session.chatId, @@ -6327,9 +6292,6 @@ Digite /help para ver todos os comandos disponíveis! // Usuário selecionou um técnico const numero = parseInt(input.trim()); - console.log(`🔍 Técnico - Input do usuário: "${input}", Número convertido: ${numero}`); - console.log(`🔍 Técnico - Lista completa de técnicos:`, session.dados.tecnicos); - if (isNaN(numero) || numero < 1 || numero > session.dados.tecnicos.length) { await this.bot.sendMessage(session.chatId, `❌ **Número inválido**\n\n` + @@ -6339,8 +6301,6 @@ Digite /help para ver todos os comandos disponíveis! } const tecnicoSelecionado = session.dados.tecnicos[numero - 1]; - console.log(`🎯 Técnico selecionado - Índice: ${numero - 1}, Dados:`, tecnicoSelecionado); - session.dados.tecnicoSelecionado = tecnicoSelecionado; session.etapa = 'definir_data_hora'; await this.processarEtapaDefinirDataHora(sessionId); @@ -6364,9 +6324,7 @@ Digite /help para ver todos os comandos disponíveis! const buttons = []; session.dados.tecnicos.forEach((tecnico, index) => { - message += `**${index + 1}.** ${tecnico.nome}`; - if (tecnico.email) message += ` — ${tecnico.email}`; - message += `\n`; + message += `**${index + 1}.** ${tecnico.nome}\n`; buttons.push([{ text: `${index + 1}. ${tecnico.nome}`, callback_data: `suporte_tecnico_${index}` }]); });