Files
help_desk/scripts/test_visita_flow.js
T

111 lines
4.4 KiB
JavaScript

const db = require('../config/db');
const Ticket = require('../models/Ticket');
const TicketVisita = require('../models/TicketVisita');
const TareasHubService = require('../config/tareasHubService');
async function run() {
console.log('--- 1. Probando obtenerTecnicos() ---');
const tecnicos = await TareasHubService.obtenerTecnicos();
console.log(`Técnicos obtenidos (${tecnicos.length}):`, tecnicos.map(t => `${t.nombre || t.email} <${t.email}>`));
const emailTecnico = tecnicos.length > 0 ? tecnicos[0].email : 'pablinux@hotmail.es';
const nombreTecnico = tecnicos.length > 0 ? (tecnicos[0].nombre || tecnicos[0].email) : 'Jefferson';
console.log('\n--- 2. Creando Visita Técnica en Hub (tareas.telcotronics.com) ---');
const hubRes = await TareasHubService.crearVisita({
ticketId: 1,
titulo: 'Visita de Prueba Automatizada - Help Desk',
descripcion: 'Verificación de conectividad de fibra óptica en cliente de prueba.',
emailTecnico: emailTecnico,
fechaVisita: new Date(),
ubicacion: 'Av. 10 de Agosto y Colón, Quito',
coordenadas: '-0.198321, -78.490123',
referencia: 'Edificio Plaza Piso 2',
prioridad: 'Alta',
checklist: [
'Revisión física de acometida y ONT',
'Medición de potencia en splitter (-19dBm esperado)',
'Prueba de velocidad LAN y firma de acta'
]
});
console.log('Respuesta de Hub:', hubRes);
console.log('\n--- 3. Guardando en ticket_visitas (MariaDB) ---');
const visitaId = await TicketVisita.create({
company_id: 3,
ticket_id: 1,
external_id: hubRes.tareaId,
tecnico_email: emailTecnico,
tecnico_nombre: nombreTecnico,
titulo: 'Visita de Prueba Automatizada - Help Desk',
descripcion: 'Verificación de conectividad de fibra óptica en cliente de prueba.',
ubicacion: 'Av. 10 de Agosto y Colón, Quito',
fecha_visita: new Date(),
estado: 'programada',
checklist_json: [
'Revisión física de acometida y ONT',
'Medición de potencia en splitter (-19dBm esperado)',
'Prueba de velocidad LAN y firma de acta'
],
historial_json: hubRes.tarea
});
console.log('Visita creada en MariaDB con ID:', visitaId);
console.log('\n--- 4. Consultando Visita creada en MariaDB ---');
const visitaEnDb = await TicketVisita.findByTicket(3, 1);
console.log('Registro en DB:', {
id: visitaEnDb.id,
ticket_id: visitaEnDb.ticket_id,
external_id: visitaEnDb.external_id,
tecnico: visitaEnDb.tecnico_nombre,
estado: visitaEnDb.estado,
fecha_visita: visitaEnDb.fecha_visita
});
console.log('\n--- 5. Probando sincronización con Hub (consultarEstadoVisita) ---');
const syncRes = await TareasHubService.consultarEstadoVisita(hubRes.tareaId);
console.log('Estado sincronizado desde Hub:', {
tareaId: syncRes.tarea._id,
estado: syncRes.tarea.estado,
checklistTotal: syncRes.tarea.checklist ? syncRes.tarea.checklist.length : 0,
progreso: syncRes.tarea.progreso_checklist
});
console.log('\n--- 6. Limpieza de prueba ---');
// Limpiar en MariaDB
await db.query('DELETE FROM ticket_visitas WHERE id = ?', [visitaId]);
console.log('Registro eliminado de MariaDB');
// Limpiar tarea en CT 132
try {
const http = require('http');
await new Promise((resolve, reject) => {
const req = http.request({
hostname: '192.168.10.160',
port: 3000,
path: `/api/external/tareas/${hubRes.tareaId}`,
method: 'DELETE',
headers: { 'x-api-key': 'sigma_crm_test_key_123' }
}, (res) => {
res.on('data', () => {});
res.on('end', () => {
console.log(`Tarea ${hubRes.tareaId} eliminada de tareas.telcotronics.com (Status: ${res.statusCode})`);
resolve();
});
});
req.on('error', reject);
req.end();
});
} catch (e) {
console.warn('Advertencia al eliminar tarea de prueba en Hub:', e.message);
}
console.log('\n✅ ¡FLUJO COMPLETO DE VISITAS TÉCNICAS (FSM) VERIFICADO SATISFACTORIAMENTE!');
process.exit(0);
}
run().catch(err => {
console.error('❌ Error durante la prueba:', err);
process.exit(1);
});