Actualizar server.js

This commit is contained in:
2026-02-16 07:49:35 +00:00
parent 572a7c7c72
commit 9ac5a78bfd

View File

@@ -496,23 +496,21 @@ const token = crypto.randomBytes(16).toString('hex');
// A) Delegamos la inserción y el cálculo del tiempo a PostgreSQL // A) Delegamos la inserción y el cálculo del tiempo a PostgreSQL
// Usamos NOW() de la base de datos + 5 minutos y devolvemos la hora exacta calculada // Usamos NOW() de la base de datos + 5 minutos y devolvemos la hora exacta calculada
const insertPing = await pool.query(` // Calculamos la caducidad puramente en Node (+5 min)
const expiresAt = new Date(Date.now() + 5 * 60 * 1000);
// Insertamos el valor exacto de Node en la DB
await pool.query(`
INSERT INTO assignment_pings (scraped_id, user_id, token, expires_at) INSERT INTO assignment_pings (scraped_id, user_id, token, expires_at)
VALUES ($1, $2, $3, NOW() + INTERVAL '5 minutes') VALUES ($1, $2, $3, $4)
RETURNING expires_at `, [id, worker.id, token, expiresAt]);
`, [id, worker.id, token]);
// B) Extraemos la hora exacta que la DB considerará como límite // Formateamos para WhatsApp forzando la hora de España
const dbExpiresAt = insertPing.rows[0].expires_at; const horaCaducidad = expiresAt.toLocaleTimeString('es-ES', {
// C) Formateamos esa hora para el WhatsApp, forzando la zona horaria de España (Europa/Madrid)
// Así nos aseguramos de que el mensaje de WhatsApp siempre cuadre con el reloj local del operario,
// sin importar en qué zona horaria esté alojado el servidor Node.js
const horaCaducidad = new Date(dbExpiresAt).toLocaleTimeString('es-ES', {
hour: '2-digit', hour: '2-digit',
minute: '2-digit', minute: '2-digit',
timeZone: 'Europe/Madrid' // Forzamos la zona horaria española timeZone: 'Europe/Madrid'
}); });
// 3. Construir mensaje de WhatsApp con toda la información solicitada // 3. Construir mensaje de WhatsApp con toda la información solicitada
const link = `https://web.integrarepara.es/aceptar.html?t=${token}`; const link = `https://web.integrarepara.es/aceptar.html?t=${token}`;