From d070586418152f44de9f41e0e73b492231587880 Mon Sep 17 00:00:00 2001 From: marsalva Date: Thu, 5 Mar 2026 22:33:24 +0000 Subject: [PATCH] Actualizar server.js --- server.js | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/server.js b/server.js index e10efdf..159e4b6 100644 --- a/server.js +++ b/server.js @@ -2705,6 +2705,55 @@ app.delete("/budgets/:id", authMiddleware, async (req, res) => { } }); +// ========================================== +// 🤖 API COLA DEL ROBOT (REEMPLAZO FIREBASE) +// ========================================== + +// 1. Enviar una orden al Robot +app.post("/robot/queue", authMiddleware, async (req, res) => { + try { + const { service_number, new_status, appointment_date, observation, inform_client } = req.body; + + const q = await pool.query(` + INSERT INTO robot_queue (owner_id, service_number, new_status, appointment_date, observation, inform_client) + VALUES ($1, $2, $3, $4, $5, $6) RETURNING id + `, [req.user.accountId, service_number, new_status, appointment_date || "", observation || "", inform_client || false]); + + res.json({ ok: true, jobId: q.rows[0].id }); + } catch (e) { + console.error("Error guardando en cola:", e); + res.status(500).json({ ok: false, error: e.message }); + } +}); + +// 2. Leer el estado de la cola (Monitor) +app.get("/robot/queue", authMiddleware, async (req, res) => { + try { + const q = await pool.query(` + SELECT id, service_number, status, error_msg, created_at + FROM robot_queue + WHERE owner_id = $1 + ORDER BY created_at DESC + LIMIT 20 + `, [req.user.accountId]); + + res.json({ ok: true, jobs: q.rows }); + } catch (e) { + res.status(500).json({ ok: false }); + } +}); + +// ========================================== +// 🔐 RECUPERAR CREDENCIALES +// ========================================== +app.get("/providers/credentials", authMiddleware, async (req, res) => { + try { + const q = await pool.query("SELECT provider, username, last_sync, status FROM provider_credentials WHERE owner_id=$1", [req.user.accountId]); + res.json({ ok: true, credentials: q.rows }); + } catch (e) { + res.status(500).json({ ok: false }); + } +});