diff --git a/worker-multi-estado.js b/worker-multi-estado.js index 6defecd..38464f3 100644 --- a/worker-multi-estado.js +++ b/worker-multi-estado.js @@ -92,7 +92,7 @@ async function processChangeState(page, db, jobData) { // 2. IR AL SERVICIO const targetUrl = `${CONFIG.MULTI_ACTION_BASE}?reparacion=${serviceNumber}&modo=0&navid=%2Fw3multi%2Ffrepasos_new.php%FDGET%FDrefresh%3D1%FC`; - console.log(`📂 Abriendo servicio 27867185...`); // Log limpio para depurar + console.log(`📂 Abriendo servicio ${serviceNumber}...`); await page.goto(targetUrl, { waitUntil: 'domcontentloaded', timeout: 60000 }); // Esperar formulario @@ -101,7 +101,7 @@ async function processChangeState(page, db, jobData) { console.log('📝 Rellenando formulario (Modo Preciso)...'); - // 3. MOTIVO (Primer select de la página suele ser el motivo) + // 3. MOTIVO (Primer select de la página) const reasonSel = page.locator('select.answer-select').first(); await reasonSel.selectOption(String(reasonValue)); await forceUpdate(await reasonSel.elementHandle()); @@ -113,22 +113,22 @@ async function processChangeState(page, db, jobData) { await forceUpdate(await commentBox.elementHandle()); } - // 5. FECHA + // 5. FECHA (AQUÍ ESTABA EL ERROR: AHORA USAMOS .first()) if (dateStr) { - const dateInput = page.locator('input[type="date"]'); + // Había 2 inputs de fecha, cogemos el primero que es el de "Siguiente Acción" + const dateInput = page.locator('input[type="date"]').first(); await dateInput.fill(dateStr); await forceUpdate(await dateInput.elementHandle()); - // Click fuera para asegurar validación de fecha + // Click fuera para asegurar validación await page.click('body'); } - // 6. HORA (El punto crítico) + // 6. HORA if (timeStr) { const secondsValue = timeToMultiValue(timeStr); // ej: "28800" para 08:00 console.log(`🕒 Intentando poner hora: ${timeStr} (Valor interno: ${secondsValue})`); - // ESTRATEGIA INFALIBLE: Buscar el select que contiene esa opción específica usando XPath - // "Búscame un