Elffuss Elffuss CodeProyecto del día
Proyecto del día · 21 de octubre de 2026

La copia de las 2:30 iba a ejecutarse dos veces este domingo

Elena cambió el cron de la gestoría por una utilidad en JavaScript y la primera versión aguantaba bien hasta el cambio de hora. Con el asistente local encontró los dos agujeros de esa noche: una hora que se repite y otra que no existe.

El IDE con IA local en el navegadorlocal · en el navegador

Elena lleva la informática de una gestoría de seis personas, aparte de su trabajo de verdad. Cada noche, a las 2:30, un script copia las carpetas de clientes del NAS a un disco externo. Esta semana quiso sustituir el cron heredado por una utilidad pequeña en JavaScript que, además, enseñara en el panel cuándo toca la próxima copia. La escribió en Elffuss Code, con el asistente al lado.

Primer intento: sumar 24 horas

La primera versión guardaba el momento exacto de la última copia y le sumaba 24 horas. Quedaba limpia, pero estaba mal. Le preguntó al asistente qué fechas merecía la pena probar y la respuesta fue directa: el último domingo de octubre. El 25, cuando son las 3:00, los relojes vuelven a las 2:00 y ese día dura 25 horas. Si a la copia del sábado le sumas 24 horas, la del domingo cae a la 1:30, encima del proceso de indexado que arranca a la 1:00.

Segundo intento: mirar el reloj

Así que cambió de enfoque: cada minuto, si en Europe/Madrid son las 2:30, se lanza la copia. Eso arreglaba lo anterior, pero abría dos agujeros nuevos. Se los señaló el asistente cuando le pidió una tabla con las próximas ejecuciones:

Decidir, no solo programar

Lo primero que propuso el asistente fue lo cómodo: programarlo todo en UTC. Elena lo descartó, porque en invierno la copia volvería a caer a la 1:30. También le habló de Temporal y de su opción disambiguation, que resuelve justo este problema, pero ella no quería depender de qué entornos la traen ya. Así que fijó la regla ella misma y le pidió al modelo que la escribiera con Intl.DateTimeFormat:

Si la hora se repite, solo vale la primera. Si no existe, la copia se hace en el primer minuto que sí exista.

La clave fue dejar de guardar el momento exacto de la última copia y guardar solo su fecha en el calendario local. La condición pasó a ser: «son las 2:30 o más tarde, y hoy todavía no ha habido copia». Si ya hay copia del 25 de octubre, la segunda vez que el reloj marque las 2:30 no pasa nada. Y en marzo la copia sale a las 3:00. Añadió un tope: si son más de las 6:00, la utilidad avisa en vez de copiar en horario de oficina. Después pidió los tests: un martes cualquiera, el 25 de octubre, el 28 de marzo y el día siguiente a cada uno. Se quedan en el repositorio para la próxima vez que alguien toque esa función.

Por qué en local

Para que el asistente entendiera el problema, Elena pegó el script entero. Ahí estaban los nombres de las carpetas, que son los nombres de los clientes de la gestoría, y la configuración del NAS. No es algo que quisiera dejar en el historial de un servicio ajeno. Con el modelo corriendo en su propio navegador ni se lo tuvo que plantear: el prompt y el código no salieron de su ordenador. Este domingo, a las 2:30, la copia se hará una vez. Cuando el reloj vuelva a marcar las 2:30, ya no.

Abre Elffuss Code y pon a prueba tu código con fechas como la de este domingo: el modelo corre en tu navegador y ni tu código ni tus prompts se suben a ningún sitio.

Abrir Code →
nada de esto se sube a ningún sitio