Actualizar server.js

This commit is contained in:
2026-03-05 21:45:38 +00:00
parent 921cff73d2
commit c0f87443f0

View File

@@ -79,6 +79,23 @@ async function autoUpdateDB() {
status TEXT DEFAULT 'active', status TEXT DEFAULT 'active',
created_at TIMESTAMP DEFAULT NOW() created_at TIMESTAMP DEFAULT NOW()
); );
-- COLA DEL ROBOT
CREATE TABLE IF NOT EXISTS robot_queue (
id SERIAL PRIMARY KEY,
owner_id INT REFERENCES users(id) ON DELETE CASCADE,
provider TEXT DEFAULT 'homeserve',
service_number TEXT NOT NULL,
new_status TEXT NOT NULL,
appointment_date TEXT,
observation TEXT,
inform_client BOOLEAN DEFAULT FALSE,
status TEXT DEFAULT 'PENDING', -- PENDING, RUNNING, DONE, FAILED
error_msg TEXT,
created_at TIMESTAMP DEFAULT NOW(),
updated_at TIMESTAMP DEFAULT NOW()
);
CREATE TABLE IF NOT EXISTS login_codes ( CREATE TABLE IF NOT EXISTS login_codes (
id SERIAL PRIMARY KEY, id SERIAL PRIMARY KEY,
user_id INT REFERENCES users(id) ON DELETE CASCADE, user_id INT REFERENCES users(id) ON DELETE CASCADE,
@@ -2688,6 +2705,44 @@ 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 });
}
});
// ========================================== // ==========================================
// 🕒 EL RELOJ DEL SISTEMA (Ejecutar cada minuto) // 🕒 EL RELOJ DEL SISTEMA (Ejecutar cada minuto)