TopSapp: tentativa de fix no nome do técnico

Signed-off-by: Rodrigo Bertoldo de Sousa Martins <rodrigo.sousa.577@gmail.com>
This commit is contained in:
rodrigo committed 2026-04-01 17:12:54 -03:00
1 parent 1ab39c20bb
commit ff61085a29
1 file changed
+60 -13
+60 -13
View File
@@ -2047,6 +2047,9 @@ Digite /help para ver todos os comandos disponíveis!
} else if (data.startsWith('suporte_servico_')) {
console.log(`🔍 Condição suporte_servico_ atendida`);
await this.handleSuporteServicoCallback(callbackQuery, data);
} else if (data.startsWith('suporte_tecnico_')) {
await this.bot.answerCallbackQuery(callbackQuery.id);
await this.handleSuporteTecnicoCallback(callbackQuery, data);
} else if (data.startsWith('fechar_suporte_cli_')) {
await this.bot.answerCallbackQuery(callbackQuery.id);
await this.handleFecharSuporteClienteCallback(callbackQuery, data);
@@ -6266,9 +6269,9 @@ Digite /help para ver todos os comandos disponíveis!
return;
}
const tecnicos = resultado.data?.dados || resultado.dados || [];
const tecnicosRaw = resultado.data?.dados || resultado.dados || [];
if (tecnicos.length === 0) {
if (tecnicosRaw.length === 0) {
await this.bot.sendMessage(session.chatId,
`❌ **Nenhum técnico ativo encontrado**\n\n` +
`🔄 Reiniciando processo...`
@@ -6277,6 +6280,14 @@ Digite /help para ver todos os comandos disponíveis!
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);
@@ -6327,17 +6338,20 @@ Digite /help para ver todos os comandos disponíveis!
throw new Error(`Dados de técnicos inválidos: ${typeof session.dados.tecnicos}`);
}
const buttons = [];
session.dados.tecnicos.forEach((tecnico, index) => {
// Mostrar nome do técnico
const nome = tecnico.nome || tecnico.descricao || tecnico.tipo || tecnico.tecnico;
message += `**${index + 1}.** ${nome}\n`;
if (tecnico.email) message += ` 📧 ${tecnico.email}\n`;
message += `**${index + 1}.** ${tecnico.nome}`;
if (tecnico.email) message += ` — ${tecnico.email}`;
message += `\n`;
buttons.push([{ text: `${index + 1}. ${tecnico.nome}`, callback_data: `suporte_tecnico_${index}` }]);
});
message += `Digite o **número** do técnico (1-${session.dados.tecnicos.length}):`;
message += `\nSelecione o técnico clicando no botão ou digitando o número (1-${session.dados.tecnicos.length}):`;
await this.bot.sendMessage(session.chatId, message, { parse_mode: 'Markdown' });
await this.bot.sendMessage(session.chatId, message, {
parse_mode: 'Markdown',
reply_markup: { inline_keyboard: buttons }
});
}
/**
@@ -6434,7 +6448,7 @@ Digite /help para ver todos os comandos disponíveis!
resumo += `📋 **Serviço:** ${dados.servicoSelecionado.descricao || dados.servicoSelecionado.plano}\n`;
resumo += `🆔 **ID Serviço:** ${dados.servicoSelecionado.id}\n`;
resumo += `📁 **Categoria:** ${dados.categoriaSelecionada.descricao}\n`;
resumo += `👨‍🔧 **Técnico:** ${dados.tecnicoSelecionado.nome || dados.tecnicoSelecionado.tecnico}\n`;
resumo += `👨‍🔧 **Técnico:** ${dados.tecnicoSelecionado.nome}\n`;
resumo += `📅 **Data/Hora:** ${this.dateProcessor.formatarData(dados.dataHora)}\n`;
resumo += `📝 **Descrição:** ${dados.descricao}\n\n`;
resumo += `Confirma a abertura do suporte? (sim/não)`;
@@ -6470,12 +6484,13 @@ Digite /help para ver todos os comandos disponíveis!
idCliente: dados.clienteSelecionado.id,
idServico: dados.servicoSelecionado.id,
idCategoria: dados.categoriaSelecionada.id,
descricao: `${dados.descricao}\n\nData/Hora agendada: ${this.dateProcessor.formatarData(dados.dataHora)}\nTécnico: ${dados.tecnicoSelecionado.nome || dados.tecnicoSelecionado.tecnico}`
descricao: `${dados.descricao}\n\nData/Hora agendada: ${this.dateProcessor.formatarData(dados.dataHora)}\nTécnico: ${dados.tecnicoSelecionado.nome}`
};
// Adicionar campos opcionais se existirem
if (dados.tecnicoSelecionado?.id) {
dadosSuporte.idAtendimento = dados.tecnicoSelecionado.id;
const idTecnico = dados.tecnicoSelecionado?.id;
if (idTecnico) {
dadosSuporte.idAtendimento = parseInt(idTecnico, 10);
}
if (dados.clienteSelecionado?.nome) {
@@ -6501,7 +6516,7 @@ Digite /help para ver todos os comandos disponíveis!
`👤 **Cliente:** ${dados.clienteSelecionado.nome}\n` +
`📋 **Serviço:** ${dados.servicoSelecionado.descricao || dados.servicoSelecionado.plano}\n` +
`📁 **Categoria:** ${dados.categoriaSelecionada.descricao}\n` +
`👨‍🔧 **Técnico:** ${dados.tecnicoSelecionado.nome || dados.tecnicoSelecionado.tecnico}\n` +
`👨‍🔧 **Técnico:** ${dados.tecnicoSelecionado.nome}\n` +
`📅 **Data/Hora:** ${this.dateProcessor.formatarData(dados.dataHora)}\n\n` +
`🎯 O suporte foi registrado no sistema!`,
{ parse_mode: 'Markdown' }
@@ -7235,6 +7250,38 @@ Digite /help para ver todos os comandos disponíveis!
await this.processarEtapaSelecionarCategoria(sessaoAtiva.id);
}
/**
* Callback: Seleção de técnico via botão inline no fluxo de suporte
*/
async handleSuporteTecnicoCallback(callbackQuery, data) {
const chatId = callbackQuery.message.chat.id;
const userId = callbackQuery.from.id;
const index = parseInt(data.replace('suporte_tecnico_', ''));
const sessaoAtiva = Array.from(this.suporteSessions.values()).find(
session => session.chatId === chatId && session.userId === userId
);
if (!sessaoAtiva) {
await this.bot.sendMessage(chatId,
`❌ **Sessão expirada**\n\nUse o comando "abrir suporte" para iniciar novamente.`,
{ parse_mode: 'Markdown' }
);
return;
}
const tecnicos = sessaoAtiva.dados.tecnicos;
if (!tecnicos || index < 0 || index >= tecnicos.length) {
await this.bot.sendMessage(chatId, `❌ **Técnico inválido.** Por favor, tente novamente.`, { parse_mode: 'Markdown' });
return;
}
sessaoAtiva.dados.tecnicoSelecionado = tecnicos[index];
sessaoAtiva.etapa = 'definir_data_hora';
await this.processarEtapaDefinirDataHora(sessaoAtiva.id);
}
/**
* Callback: seleção de cliente no fluxo de fechar suporte
* formato: fechar_suporte_cli_<sessionId>_<index>