Actualizar server.js

This commit is contained in:
2026-03-14 12:56:38 +00:00
parent 1bef5959c4
commit ac47ad135d

View File

@@ -1597,6 +1597,63 @@ app.post("/providers/credentials", authMiddleware, async (req, res) => {
} catch (e) { res.status(500).json({ ok: false }); }
});
// ==========================================
// 📥 RECEPCIÓN DE SERVICIOS (EMBUDO DIRECTO)
// ==========================================
app.post("/providers/scraped", authMiddleware, async (req, res) => {
try {
const { provider, services } = req.body;
if (!provider || !Array.isArray(services)) {
return res.status(400).json({ ok: false, error: "Formato de datos inválido" });
}
let count = 0;
for (const svc of services) {
// 1. Extraer la referencia
const ref = svc['Referencia'] || svc['Nº Siniestro'] || svc['Expediente'] || svc['service_ref'];
if (!ref) continue;
// 🔥 2. DETECTOR DIRECTO DE URGENCIAS 🔥
let esUrgente = false;
// Leemos el estado venga en la columna que venga (HomeServe suele usar 'ACTUALMENTE EN' o 'Estado')
const estadoSvc = String(svc['ACTUALMENTE EN'] || svc['Estado'] || svc['ESTADO'] || "").toLowerCase();
// Si el estado contiene la frase exacta de HomeServe o la palabra urgencia
if (estadoSvc.includes('atencion presencial urgencias') || estadoSvc.includes('urgencia')) {
esUrgente = true;
}
// Por si acaso algún otro proveedor (como Multi) envía una columna literal llamada "Urgente"
if (String(svc['Urgente']).toLowerCase() === 'sí' || String(svc['URGENTE']).toLowerCase() === 'si' || String(svc['Urgente']).toLowerCase() === 'true') {
esUrgente = true;
}
// 3. Guardamos en la Base de Datos
await pool.query(`
INSERT INTO scraped_services (owner_id, provider, service_ref, raw_data, is_urgent)
VALUES ($1, $2, $3, $4, $5)
ON CONFLICT (owner_id, provider, service_ref)
DO UPDATE SET
raw_data = scraped_services.raw_data || EXCLUDED.raw_data,
is_urgent = EXCLUDED.is_urgent
`, [req.user.accountId, provider, ref, JSON.stringify(svc), esUrgente]);
count++;
}
console.log(`📥 [CAPTURA] Recibidos ${count} servicios de ${provider}.`);
res.json({ ok: true, inserted: count });
} catch (error) {
console.error("❌ Error recibiendo servicios:", error);
res.status(500).json({ ok: false, error: error.message });
}
});
app.get("/providers/scraped", authMiddleware, async (req, res) => {
try {
const q = await pool.query(`