Actualizar server.js
This commit is contained in:
37
server.js
37
server.js
@@ -853,8 +853,37 @@ async function procesarConIA(ownerId, mensajeCliente, datosExpediente) {
|
||||
tramoConfirmado = 'una hora por confirmar';
|
||||
}
|
||||
|
||||
// 🛑 NUEVO: MÁQUINA DEL TIEMPO (Saber si la cita ya pasó)
|
||||
let citaYaPaso = false;
|
||||
if (tieneCitaConfirmada && datosExpediente.cita) {
|
||||
const hoyTime = new Date().setHours(0,0,0,0);
|
||||
const [y, m, d] = datosExpediente.cita.split('-');
|
||||
const citaTime = new Date(y, m - 1, d).setHours(0,0,0,0);
|
||||
if (citaTime < hoyTime) citaYaPaso = true;
|
||||
}
|
||||
|
||||
// 🛑 NUEVO: DETECTOR DE ESTADO FINALIZADO
|
||||
const esEstadoFinal = datosExpediente.estado && (datosExpediente.estado.toLowerCase().includes('finalizado') || datosExpediente.estado.toLowerCase().includes('terminado') || datosExpediente.estado.toLowerCase().includes('anulado'));
|
||||
|
||||
// 🛑 NUEVO: DETECTOR DE SEGURO VS PARTICULAR
|
||||
const nombreCia = datosExpediente.compania || "su Aseguradora";
|
||||
const esSeguro = !nombreCia.toLowerCase().includes('particular');
|
||||
|
||||
let directivaEstricta = "";
|
||||
if (esUrgencia) {
|
||||
|
||||
if (esEstadoFinal) {
|
||||
if (esSeguro) {
|
||||
directivaEstricta = `🛑 ESTADO ACTUAL: SERVICIO CERRADO POR EL TÉCNICO.\nTU ÚNICO OBJETIVO: Informar al cliente que el informe ya ha sido enviado a ${nombreCia} y que estamos a la espera de que ellos nos den respuesta o autorización para continuar los trabajos.\nPROHIBICIÓN ABSOLUTA: NO intentes agendar cita ni dar horas. No asumas que la reparación está 100% terminada.`;
|
||||
} else {
|
||||
directivaEstricta = `🛑 ESTADO ACTUAL: SERVICIO FINALIZADO O ANULADO.\nTU ÚNICO OBJETIVO: Despedirte amablemente o dar soporte post-servicio si el cliente particular tiene alguna duda.\nPROHIBICIÓN ABSOLUTA: NO intentes agendar cita ni dar horas. El trabajo ya se ha terminado.`;
|
||||
}
|
||||
} else if (citaYaPaso) {
|
||||
if (esSeguro) {
|
||||
directivaEstricta = `🛑 ESTADO ACTUAL: LA CITA YA HA PASADO.\n📅 La cita fue el día: ${datosExpediente.cita}.\nTU ÚNICO OBJETIVO: Informar que el técnico ya acudió a la visita y que actualmente estamos tramitando el informe con ${nombreCia}, a la espera de sus instrucciones.\nPROHIBICIÓN ABSOLUTA: No hables en futuro ni propongas más citas.`;
|
||||
} else {
|
||||
directivaEstricta = `🛑 ESTADO ACTUAL: LA CITA YA HA PASADO.\n📅 La cita fue el día: ${datosExpediente.cita}.\nTU ÚNICO OBJETIVO: Preguntar amablemente al cliente particular si el técnico acudió y si el problema quedó resuelto o si estamos elaborando su presupuesto.\nPROHIBICIÓN ABSOLUTA: No hables en futuro ni agendes.`;
|
||||
}
|
||||
} else if (esUrgencia) {
|
||||
directivaEstricta = `🛑 ESTADO ACTUAL: SERVICIO DE URGENCIA.\nTU ÚNICO OBJETIVO: Tranquilizar al cliente. Dile que al ser urgencia el técnico está avisado.\nPROHIBICIÓN ABSOLUTA: No des cita ni propongas horas.`;
|
||||
} else if (hayCitaPendiente) {
|
||||
directivaEstricta = `🛑 ESTADO ACTUAL: CITA PENDIENTE DE APROBACIÓN POR TÉCNICO.\n📅 Propuesta actual: El día ${datosExpediente.cita_pendiente_fecha} ${tramoPendiente}.\nTU ÚNICO OBJETIVO: Informar al cliente que estamos esperando confirmación del técnico.\n⚠️ REGLA CRÍTICA: Ignora el historial si no coincide con esta propuesta.\nPROHIBICIÓN ABSOLUTA: No agendes de nuevo.`;
|
||||
@@ -3768,7 +3797,8 @@ app.post("/webhook/evolution", async (req, res) => {
|
||||
s.raw_data->>'Población' as poblacion,
|
||||
s.raw_data->>'appointment_status' as appointment_status,
|
||||
s.raw_data->>'requested_date' as cita_pendiente_fecha,
|
||||
s.raw_data->>'requested_time' as cita_pendiente_hora
|
||||
s.raw_data->>'requested_time' as cita_pendiente_hora,
|
||||
s.raw_data->>'Compañía' as compania
|
||||
FROM scraped_services s
|
||||
LEFT JOIN users u ON s.assigned_to = u.id
|
||||
LEFT JOIN service_statuses st ON (s.raw_data->>'status_operativo')::text = st.id::text
|
||||
@@ -3825,7 +3855,8 @@ app.post("/webhook/evolution", async (req, res) => {
|
||||
is_urgent: service.is_urgent,
|
||||
appointment_status: service.appointment_status,
|
||||
cita_pendiente_fecha: service.cita_pendiente_fecha,
|
||||
cita_pendiente_hora: service.cita_pendiente_hora
|
||||
cita_pendiente_hora: service.cita_pendiente_hora,
|
||||
compania: service.compania // 👈 NUEVO: PASAMOS LA COMPAÑÍA
|
||||
});
|
||||
|
||||
if (respuestaIA) {
|
||||
|
||||
Reference in New Issue
Block a user