From 7e3393f5e4d9afc9e886316aed2496d462866e3b Mon Sep 17 00:00:00 2001 From: marsalva Date: Thu, 5 Mar 2026 22:22:08 +0000 Subject: [PATCH] Actualizar worker-homeserve.js --- worker-homeserve.js | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/worker-homeserve.js b/worker-homeserve.js index c19b540..8b774e7 100644 --- a/worker-homeserve.js +++ b/worker-homeserve.js @@ -1,8 +1,8 @@ -// worker-homeserve.js (Versión PostgreSQL - MULTI-EMPRESA SAAS) -'use strict'; +// worker-homeserve.js (Versión PostgreSQL - MULTI-EMPRESA SAAS - ES Modules) +import { chromium } from 'playwright'; +import pg from 'pg'; -const { chromium } = require('playwright'); -const { Pool } = require('pg'); +const { Pool } = pg; // --- CONFIGURACIÓN --- const CONFIG = { @@ -51,7 +51,7 @@ async function getHomeServeCreds(ownerId) { } const user = q.rows[0].username; - // Convierte el Base64 (ej: UGFqYXJpdG8xNCQ=) a texto normal + // Convierte el Base64 a texto normal const pass = Buffer.from(q.rows[0].password_hash, 'base64').toString('utf-8'); return { user, pass }; @@ -177,7 +177,6 @@ async function loginAndProcess(page, creds, jobData) { // --- EL CEREBRO: LECTURA DE LA COLA EN POSTGRESQL --- async function pollQueue() { try { - // Buscamos 1 solo trabajo pendiente y lo bloqueamos para que no lo cojan otros robots si abres varios const res = await pool.query(` UPDATE robot_queue SET status = 'RUNNING', updated_at = NOW() @@ -199,27 +198,22 @@ async function pollQueue() { console.log(`========================================`); try { - // 🔴 PASAMOS EL OWNER_ID PARA SACAR LAS CREDENCIALES CORRECTAS const creds = await getHomeServeCreds(job.owner_id); await withBrowser(async (page) => { await loginAndProcess(page, creds, job); }); - // Si va bien, marcamos como DONE en la BD await pool.query("UPDATE robot_queue SET status = 'DONE', updated_at = NOW() WHERE id = $1", [job.id]); console.log(`✅ TRABAJO #${job.id} COMPLETADO CON ÉXITO.\n`); } catch (err) { - // Si falla, guardamos el error en la BD para que el HTML lo muestre console.error(`❌ ERROR EN TRABAJO #${job.id}:`, err.message); await pool.query("UPDATE robot_queue SET status = 'FAILED', error_msg = $1, updated_at = NOW() WHERE id = $2", [err.message, job.id]); } - // Buscar el siguiente inmediatamente setTimeout(pollQueue, 1000); } else { - // Dormimos y volvemos a mirar setTimeout(pollQueue, CONFIG.POLL_INTERVAL_MS); } } catch (e) {