Operazioni
Cron job
Endpoint cron e schedulazione
Stato
I cron job applicativi sono attualmente in pausa.
Esistono endpoint HTTP /api/cron/... in alcune app, ma nessuno schedulatore li
chiama automaticamente. Il nuovo control plane Rust centralizza pero' la lista e
l'esecuzione manuale dei job:
/opt/obelica/infra/bin/obelica cron list
/opt/obelica/infra/bin/obelica cron run <job>Il crontab attivo oggi esegue solo il backup automatico quotidiano:
0 4 * * * /opt/obelica/infra/bin/obelica backup run >> /opt/obelica/backups/backup-cron.log 2>&1Endpoint cron presenti
Job esposti dal framework:
tulpa.contacts-cleanup
sonja.report
washdog.dispatch
washdog.birthday
washdog.followup
washdog.recurringWash Dog Ferrara
Route in apps/admin/app/api/cron/:
/api/cron/recurring/generate- altri endpoint di gestione appuntamenti/notifiche
Sonja Trekking
/api/cron/report— invio report giornaliero escursioni.
Tulpa Studio
/api/cron/contacts-cleanup— pulizia contatti.
Protezione
Gli endpoint sono protetti da CRON_SECRET letto dagli env:
wash-dog-ferrara: secret configurato da file in/opt/obelica/secrets/apps;sonja-trekking: secret configurato in env app, job marcatoallow-failurefinche' il flusso SMTP non e' chiuso;tulpa-studio: secret configurato in env app.
Problema noto
Next.js con Turbopack tende a inline-are le variabili d'ambiente a build time. Se process.env.CRON_SECRET viene sostituito con undefined nel bundle, l'endpoint ritorna errore anche se il secret e' configurato a runtime.
Possibili soluzioni future:
- leggere il secret da un file Docker secret a runtime, evitando
process.env.CRON_SECRET; - usare una variabile build-time per il secret;
- cambiare approccio di autenticazione (es. firma con chiave privata).
Piani
- Riattivare cron app per app solo dopo test manuale del singolo job.
- Sostituire le righe commentate che puntano agli script shell con
/opt/obelica/infra/bin/obelica cron run <job>. - Decidere se mantenere il modello HTTP endpoint o spostare alcuni job in worker interni.
- Aggiungere notifiche email o altro canale di alert in una fase successiva.