Actualizar server.js
This commit is contained in:
46
server.js
46
server.js
@@ -1979,6 +1979,52 @@ app.post("/public/assignment/:token/reject", async (req, res) => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
// ==========================================
|
||||||
|
// 📖 MOTOR DE TRAZABILIDAD (LOGS)
|
||||||
|
// ==========================================
|
||||||
|
// Creamos la tabla automáticamente si no existe
|
||||||
|
pool.query(`
|
||||||
|
CREATE TABLE IF NOT EXISTS scraped_service_logs (
|
||||||
|
id SERIAL PRIMARY KEY,
|
||||||
|
scraped_id INT REFERENCES scraped_services(id) ON DELETE CASCADE,
|
||||||
|
user_name TEXT,
|
||||||
|
action TEXT NOT NULL,
|
||||||
|
details TEXT,
|
||||||
|
created_at TIMESTAMP DEFAULT NOW()
|
||||||
|
);
|
||||||
|
`).catch(console.error);
|
||||||
|
|
||||||
|
// Ruta para GUARDAR un evento en el log
|
||||||
|
app.post("/services/:id/log", authMiddleware, async (req, res) => {
|
||||||
|
try {
|
||||||
|
const { action, details } = req.body;
|
||||||
|
// Buscamos el nombre de quien hace la acción
|
||||||
|
const userQ = await pool.query("SELECT full_name FROM users WHERE id=$1", [req.user.sub]);
|
||||||
|
const userName = userQ.rows[0]?.full_name || "Sistema";
|
||||||
|
|
||||||
|
await pool.query(
|
||||||
|
"INSERT INTO scraped_service_logs (scraped_id, user_name, action, details) VALUES ($1, $2, $3, $4)",
|
||||||
|
[req.params.id, userName, action, details || ""]
|
||||||
|
);
|
||||||
|
res.json({ ok: true });
|
||||||
|
} catch(e) {
|
||||||
|
console.error("Error Log:", e);
|
||||||
|
res.status(500).json({ ok: false });
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// Ruta para LEER el historial de un servicio
|
||||||
|
app.get("/services/:id/logs", authMiddleware, async (req, res) => {
|
||||||
|
try {
|
||||||
|
const q = await pool.query(
|
||||||
|
"SELECT * FROM scraped_service_logs WHERE scraped_id = $1 ORDER BY created_at DESC",
|
||||||
|
[req.params.id]
|
||||||
|
);
|
||||||
|
res.json({ ok: true, logs: q.rows });
|
||||||
|
} catch(e) { res.status(500).json({ ok: false }); }
|
||||||
|
});
|
||||||
|
|
||||||
// ==========================================
|
// ==========================================
|
||||||
// 🕒 EL RELOJ DEL SISTEMA (Ejecutar cada minuto)
|
// 🕒 EL RELOJ DEL SISTEMA (Ejecutar cada minuto)
|
||||||
// ==========================================
|
// ==========================================
|
||||||
|
|||||||
Reference in New Issue
Block a user