Actualizar server.js
This commit is contained in:
57
server.js
57
server.js
@@ -1597,6 +1597,63 @@ app.post("/providers/credentials", authMiddleware, async (req, res) => {
|
|||||||
} catch (e) { res.status(500).json({ ok: false }); }
|
} 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) => {
|
app.get("/providers/scraped", authMiddleware, async (req, res) => {
|
||||||
try {
|
try {
|
||||||
const q = await pool.query(`
|
const q = await pool.query(`
|
||||||
|
|||||||
Reference in New Issue
Block a user