topsapp: fix suporte

Signed-off-by: Rodrigo B. de Sousa Martins <rodrigo.sousa.577@gmail.com>
This commit is contained in:
rodrigo committed 2025-08-13 14:03:52 -03:00
1 parent 3d35fc24cc
commit 9d092a349f
3 files changed
+132 -35

No files matched your search

+52 -29
View File
@@ -5183,31 +5183,32 @@ Digite /help para ver todos os comandos disponíveis!
if (!session) return;
if (!input) {
// Primeira vez nesta etapa - buscar técnicos
await this.bot.sendMessage(session.chatId, `🔍 Buscando técnicos disponíveis...`);
// Primeira vez nesta etapa - buscar tipos de atendimento
await this.bot.sendMessage(session.chatId, `🔍 Buscando tipos de atendimento disponíveis...`);
try {
// Tentar obter técnicos primeiro, se falhar, usar operadores
let resultado = await this.topsapp.obterTecnicos();
// Usar tipos de atendimento ao invés de técnicos
let resultado = await this.topsapp.obterSuporteTiposAtendimento();
if (!resultado.success || !resultado.data || resultado.data.length === 0) {
// Fallback para operadores
resultado = await this.topsapp.obterOperadores();
}
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;
if (!resultado.success || !resultado.data?.dados || resultado.data.dados.length === 0) {
// Fallback para técnicos se tipos de atendimento não funcionarem
console.log('🔄 Fallback para técnicos...');
resultado = await this.topsapp.obterTecnicos();
if (!resultado.success) {
await this.bot.sendMessage(session.chatId,
`❌ **Erro ao buscar tipos de atendimento**\n\n` +
`⚠️ ${resultado.error}\n\n` +
`🔄 Reiniciando processo...`
);
this.suporteSessions.delete(sessionId);
return;
}
}
if (!resultado.data?.dados || resultado.data.dados.length === 0) {
await this.bot.sendMessage(session.chatId,
`❌ **Nenhum técnico encontrado**\n\n` +
`❌ **Nenhum tipo de atendimento encontrado**\n\n` +
`🔄 Reiniciando processo...`
);
this.suporteSessions.delete(sessionId);
@@ -5219,7 +5220,7 @@ Digite /help para ver todos os comandos disponíveis!
} catch (error) {
await this.bot.sendMessage(session.chatId,
`❌ **Erro ao buscar técnicos**\n\n` +
`❌ **Erro ao buscar tipos de atendimento**\n\n` +
`⚠️ ${error.message}\n\n` +
`🔄 Reiniciando processo...`
);
@@ -5229,6 +5230,9 @@ 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` +
@@ -5237,17 +5241,20 @@ Digite /help para ver todos os comandos disponíveis!
return;
}
session.dados.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.etapa = 'definir_data_hora';
await this.processarEtapaDefinirDataHora(sessionId);
}
}
/**
* Mostrar opções de técnicos
* Mostrar opções de técnicos/tipos de atendimento
*/
async mostrarOpcoesTecnicos(session) {
let message = `👨‍🔧 **Técnicos disponíveis:**\n\n`;
let message = `👨‍🔧 **Tipos de atendimento disponíveis:**\n\n`;
// Validar se técnicos é um array
if (!Array.isArray(session.dados.tecnicos)) {
@@ -5255,16 +5262,18 @@ Digite /help para ver todos os comandos disponíveis!
type: typeof session.dados.tecnicos,
value: session.dados.tecnicos
});
throw new Error(`Dados de técnicos inválidos: ${typeof session.dados.tecnicos}`);
throw new Error(`Dados de tipos de atendimento inválidos: ${typeof session.dados.tecnicos}`);
}
session.dados.tecnicos.forEach((tecnico, index) => {
message += `**${index + 1}.** ${tecnico.nome || tecnico.tecnico}\n`;
// Mostrar nome ou descrição do tipo de atendimento
const nome = tecnico.nome || tecnico.descricao || tecnico.tipo || tecnico.tecnico;
message += `**${index + 1}.** ${nome}\n`;
if (tecnico.email) message += ` 📧 ${tecnico.email}\n`;
message += `\n`;
});
message += `Digite o **número** do técnico responsável (1-${session.dados.tecnicos.length}):`;
message += `Digite o **número** do tipo de atendimento (1-${session.dados.tecnicos.length}):`;
await this.bot.sendMessage(session.chatId, message, { parse_mode: 'Markdown' });
}
@@ -5399,12 +5408,26 @@ Digite /help para ver todos os comandos disponíveis!
idCliente: dados.clienteSelecionado.id,
idServico: dados.servicoSelecionado.id,
idCategoria: dados.categoriaSelecionada.id,
contato: dados.clienteSelecionado.nome,
contatoTelefone: dados.clienteSelecionado.telefone || '',
descricao: `${dados.descricao}\n\nData/Hora agendada: ${this.dateProcessor.formatarData(dados.dataHora)}\nTécnico: ${dados.tecnicoSelecionado.nome || dados.tecnicoSelecionado.tecnico}`,
outrasInformacoes: `Criado via Bot Telegram\nData original: ${dados.dataHoraTexto}`
descricao: `${dados.descricao}\n\nData/Hora agendada: ${this.dateProcessor.formatarData(dados.dataHora)}\nTécnico: ${dados.tecnicoSelecionado.nome || dados.tecnicoSelecionado.tecnico}`
};
// Adicionar campos opcionais se existirem
if (dados.tecnicoSelecionado?.id) {
dadosSuporte.idTecnico = dados.tecnicoSelecionado.id;
}
if (dados.clienteSelecionado?.nome) {
dadosSuporte.contato = dados.clienteSelecionado.nome;
}
if (dados.clienteSelecionado?.telefone) {
dadosSuporte.contatoTelefone = dados.clienteSelecionado.telefone;
}
dadosSuporte.outrasInformacoes = `Criado via Bot Telegram\nData original: ${dados.dataHoraTexto}`;
console.log('🎫 Dados finais para criação do suporte:', dadosSuporte);
const resultado = await this.topsapp.adicionarSuporte(dadosSuporte);
if (resultado.success) {