fix suporte nomes

Signed-off-by: Rodrigo Bertoldo de Sousa Martins <rodrigo.sousa.577@gmail.com>
This commit is contained in:
rodrigo committed 2026-04-01 17:28:10 -03:00
1 parent 913df8c907
commit 5cea94a7a3
1 file changed
+8 -37
+8 -37
View File
@@ -6253,35 +6253,14 @@ Digite /help para ver todos os comandos disponíveis!
if (!session) return; if (!session) return;
if (!input) { 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...`); await this.bot.sendMessage(session.chatId, `🔍 Buscando técnicos disponíveis...`);
try { try {
const location = session.dados.location || ''; const location = session.dados.location || '';
// Buscar técnicos e funcionários em paralelo para comparar // ObterSuporteTiposAtendimento retorna os "técnicos" (equipes/times) do TopSapp
const [resultadoTecnicos, resultadoFuncionarios] = await Promise.all([ const resultado = await this.topsapp.obterSuporteTiposAtendimento(location);
this.topsapp.obterTecnicos(location),
this.topsapp.obterFuncionarios(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] ===== 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) { if (!resultado.success) {
await this.bot.sendMessage(session.chatId, await this.bot.sendMessage(session.chatId,
@@ -6297,18 +6276,17 @@ Digite /help para ver todos os comandos disponíveis!
if (tecnicosRaw.length === 0) { if (tecnicosRaw.length === 0) {
await this.bot.sendMessage(session.chatId, await this.bot.sendMessage(session.chatId,
`❌ **Nenhum técnico ativo encontrado**\n\n` + `❌ **Nenhum técnico encontrado**\n\n` +
`🔄 Reiniciando processo...` `🔄 Reiniciando processo...`
); );
this.suporteSessions.delete(sessionId); this.suporteSessions.delete(sessionId);
return; return;
} }
// Normalizar campos: a API retorna id_tecnico e tecnico (nome) // Tipos de atendimento usam campo "descricao" como nome
const tecnicos = tecnicosRaw.map(t => ({ const tecnicos = tecnicosRaw.map(t => ({
id: t.id ?? t.id_tecnico ?? t.codigo ?? null, id: t.id ?? null,
nome: t.nome || t.tecnico || t.descricao || t.name || `Técnico #${t.id ?? t.id_tecnico}`, nome: t.descricao || `Técnico #${t.id}`,
email: t.email || null,
_raw: t _raw: t
})).filter(t => t.id !== null); })).filter(t => t.id !== null);
@@ -6327,9 +6305,6 @@ Digite /help para ver todos os comandos disponíveis!
// Usuário selecionou um técnico // Usuário selecionou um técnico
const numero = parseInt(input.trim()); 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) { if (isNaN(numero) || numero < 1 || numero > session.dados.tecnicos.length) {
await this.bot.sendMessage(session.chatId, await this.bot.sendMessage(session.chatId,
`❌ **Número inválido**\n\n` + `❌ **Número inválido**\n\n` +
@@ -6339,8 +6314,6 @@ Digite /help para ver todos os comandos disponíveis!
} }
const tecnicoSelecionado = session.dados.tecnicos[numero - 1]; const tecnicoSelecionado = session.dados.tecnicos[numero - 1];
console.log(`🎯 Técnico selecionado - Índice: ${numero - 1}, Dados:`, tecnicoSelecionado);
session.dados.tecnicoSelecionado = tecnicoSelecionado; session.dados.tecnicoSelecionado = tecnicoSelecionado;
session.etapa = 'definir_data_hora'; session.etapa = 'definir_data_hora';
await this.processarEtapaDefinirDataHora(sessionId); await this.processarEtapaDefinirDataHora(sessionId);
@@ -6364,9 +6337,7 @@ Digite /help para ver todos os comandos disponíveis!
const buttons = []; const buttons = [];
session.dados.tecnicos.forEach((tecnico, index) => { session.dados.tecnicos.forEach((tecnico, index) => {
message += `**${index + 1}.** ${tecnico.nome}`; message += `**${index + 1}.** ${tecnico.nome}\n`;
if (tecnico.email) message += ` — ${tecnico.email}`;
message += `\n`;
buttons.push([{ text: `${index + 1}. ${tecnico.nome}`, callback_data: `suporte_tecnico_${index}` }]); buttons.push([{ text: `${index + 1}. ${tecnico.nome}`, callback_data: `suporte_tecnico_${index}` }]);
}); });