Fix: usar fecha real de archivado (no created_at) para mostrar servicios finalizados 15 días

El filtro de /services/active usaba s.created_at (fecha de importación del aviso) para decidir si un servicio archivado sigue visible 15 días. Si el aviso se creó hace más de 15 días, al finalizarlo desaparecía de golpe de calendario.html aunque el frontend ya tenía preparado el efecto translucido/marca de agua. Ahora /services/set-appointment guarda archived_at dentro de raw_data en el momento real en que se archiva, y /services/active usa esa fecha (con fallback a created_at para registros antiguos sin archived_at).
This commit is contained in:
2026-08-17 22:31:54 +00:00
parent c3c28de347
commit 232e9ec436

View File

@@ -3406,7 +3406,7 @@ app.get("/services/active", authMiddleware, async (req, res) => {
// SI ES OPERARIO: Ve solo lo suyo. // SI ES OPERARIO: Ve solo lo suyo.
// 👻 FANTASMAS: Enviamos los archivados de los últimos 15 días para que salgan translúcidos // 👻 FANTASMAS: Enviamos los archivados de los últimos 15 días para que salgan translúcidos
if (req.user.role === 'operario' || req.user.role === 'operario_cerrado') { if (req.user.role === 'operario' || req.user.role === 'operario_cerrado') {
query += ` AND s.assigned_to = $2 AND (s.status != 'archived' OR (s.status = 'archived' AND s.created_at >= NOW() - INTERVAL '15 days'))`; query += ` AND s.assigned_to = $2 AND (s.status != 'archived' OR (s.status = 'archived' AND COALESCE((s.raw_data->>'archived_at')::timestamptz, s.created_at) >= NOW() - INTERVAL '15 days'))`;
params.push(req.user.sub); params.push(req.user.sub);
} }
@@ -3460,6 +3460,7 @@ app.put("/services/set-appointment/:id", authMiddleware, async (req, res) => {
// 🧹 AUTO-ARCHIVO DESDE LA APP: Si finaliza, lo quitamos del buzón de proveedores // 🧹 AUTO-ARCHIVO DESDE LA APP: Si finaliza, lo quitamos del buzón de proveedores
const isFinalApp = stName.includes('finalizado') || stName.includes('terminado') || stName.includes('anulado'); const isFinalApp = stName.includes('finalizado') || stName.includes('terminado') || stName.includes('anulado');
if (isFinalApp) updatedRawData.archived_at = new Date().toISOString();
const mainStatusApp = isFinalApp ? 'archived' : 'imported'; const mainStatusApp = isFinalApp ? 'archived' : 'imported';
await pool.query('UPDATE scraped_services SET raw_data = $1, assigned_to = $2, status = $5 WHERE id = $3 AND owner_id = $4', await pool.query('UPDATE scraped_services SET raw_data = $1, assigned_to = $2, status = $5 WHERE id = $3 AND owner_id = $4',