Fix: captura de C.P. en el alta por WhatsApp (comando de admin) para que el aviso aparezca en la Bol

This commit is contained in:
2026-09-12 16:57:34 +00:00
parent a829f0fd09
commit ffe459f22f

View File

@@ -1983,6 +1983,17 @@ async function procesarConIA(ownerId, mensajeCliente, datosExpediente) {
const descripcionActual = patch["Descripción"] || datosExpediente.averia || ""; const descripcionActual = patch["Descripción"] || datosExpediente.averia || "";
const capturaCompleta = !!(nombreActual && direccionActual && descripcionActual); const capturaCompleta = !!(nombreActual && direccionActual && descripcionActual);
// 📮 FALLBACK CP: si la IA no separó el código postal como campo propio (p.ej.
// el cliente escribió "Calle Mayor 5, 28013 Madrid" todo junto), lo buscamos
// nosotros mismos en la dirección/población para no dejar el aviso sin CP —
// sin CP, el aviso NO aparece en "Solicitar Servicios" (Bolsa) para operarios
// con zonas configuradas, aunque esté correctamente sin gremio/operario.
if (!patch["Código Postal"] && !datosExpediente.cp) {
const poblacionActual = patch["Población"] || datosExpediente.poblacion || "";
const cpMatch = `${direccionActual} ${poblacionActual}`.match(/\b\d{5}\b/);
if (cpMatch) patch["Código Postal"] = cpMatch[0];
}
let workerAsignado = null; let workerAsignado = null;
let guildAsignado = null; let guildAsignado = null;
@@ -2128,7 +2139,7 @@ async function procesarConIA(ownerId, mensajeCliente, datosExpediente) {
if (datosExpediente.intake_mode) { if (datosExpediente.intake_mode) {
const faltantes = []; const faltantes = [];
if (!datosExpediente.nombre_cliente) faltantes.push("su nombre completo"); if (!datosExpediente.nombre_cliente) faltantes.push("su nombre completo");
if (!datosExpediente.direccion) faltantes.push("la dirección exacta de la visita"); if (!datosExpediente.direccion) faltantes.push("la dirección exacta de la visita (calle, número, código postal y población)");
if (!datosExpediente.averia) faltantes.push(`una breve descripción de lo que necesita${datosExpediente.intake_purpose ? ` (motivo indicado: ${datosExpediente.intake_purpose})` : ''}`); if (!datosExpediente.averia) faltantes.push(`una breve descripción de lo que necesita${datosExpediente.intake_purpose ? ` (motivo indicado: ${datosExpediente.intake_purpose})` : ''}`);
directivaEstricta = `🟡 ESTADO ACTUAL: RECOGIDA INICIAL DE DATOS. Esto es una primera toma de contacto (todavía no hay expediente completo), continúa la conversación ya iniciada. directivaEstricta = `🟡 ESTADO ACTUAL: RECOGIDA INICIAL DE DATOS. Esto es una primera toma de contacto (todavía no hay expediente completo), continúa la conversación ya iniciada.