Vai al contenuto

Console e attività pianificate

I comandi stanno in console/controllers/ e si lanciano con php yii <comando> (yii.bat su Windows).

Comandi

Comando Cosa fa
migrate Applica le migrazioni di console/migrations/.
task/send-notifications Invia i promemoria delle task arrivati all'ora fissata.
task/process-due-tasks Avvisa delle task in scadenza entro un'ora o scadute negli ultimi 7 giorni.
task/send-due-reminders Avvisi di scadenza secondo i giorni scelti da ogni utente.
task/generate-recurring Genera le occorrenze delle task ricorrenti.
task/cleanup-notifications Elimina le notifiche in-app lette da oltre 30 giorni.
meeting/send-reminders Promemoria delle riunioni che iniziano entro un'ora.
digest/send daily\|weekly Riepiloghi via email; idempotente. digest/pending mostra chi lo riceverebbe.
webhook/retry Riprova le consegne dei webhook fallite e scadute.
webhook/prune Elimina le consegne più vecchie della conservazione.
admin-report/daily, admin-report/weekly Riepiloghi per gli amministratori.
trash/purge [--days=N] Elimina definitivamente dal cestino come lo svuotamento (purged_at, nessuna riga cancellata). Senza conservazione configurata e senza --days non fa nulla.
audit, audit/prune [--days=N] Statistiche e potatura del registro operazioni; stessa regola di trash/purge.
timer/rollover Divide a mezzanotte i tratti del conteggio ore in corso, così le ore del giorno prima diventano registrazioni.
account/protect Riallinea gli account protetti (super amministratori attivi).
account/reset-two-factor <email> Disattiva la verifica in due passaggi di un account: l'uscita di emergenza per chi ha perso telefono e codici di recupero.
vapid/generate Genera le chiavi VAPID per le notifiche push.
mail/test Prova la configurazione SMTP inviando un'email in modo sincrono.
mcp/tools Rigenera api/mcp/tools.php, il catalogo dei tool del connettore MCP, da openapi-v1.yaml e routes-v1.php. Va lanciato dopo ogni modifica dello spec o delle rotte; usa symfony/yaml, presente solo in sviluppo.
fixture/* Fixture di Yii; l'unica è common/fixtures/UserFixture.

Pianificazione

In Docker il servizio worker esegue cron e la coda con supervisord (docker/worker/supervisord.conf). Il crontab è docker/worker/crontab:

Quando Comandi
ogni 5 minuti task/process-due-tasks, task/send-notifications, meeting/send-reminders, webhook/retry
ogni 15 minuti task/generate-recurring
ogni ora (al minuto 7) task/send-due-reminders
ogni giorno 00:05 timer/rollover, 03:00 task/cleanup-notifications, 03:15 webhook/prune, 03:30 trash/purge, 03:45 audit/prune, 06:45 admin-report/daily, 07:00 digest/send daily
il lunedì 07:15 digest/send weekly, 07:30 admin-report/weekly

I log finiscono in /var/log/gestask/. Ogni riga del crontab carica /etc/environment, dove l'entrypoint ha copiato le variabili d'ambiente.

trash/purge elimina definitivamente ciò che è nel cestino da più di params['trash']['retentionDays'] (30 giorni): valorizza purged_at, le righe restano. audit/prune cancella invece davvero le righe del registro più vecchie di params['audit']['retentionDays'] (365 giorni). Con null non fanno nulla.

In XAMPP non c'è nulla di pianificato: i comandi si lanciano a mano o con l'Utilità di pianificazione di Windows.

Coda

Il worker esegue anche php yii queue/listen, che consuma i job accodati in Redis (email, notifiche esterne, webhook). Senza componente queue i job girano subito nella richiesta che li crea (vedi Architettura).

Migrazioni

  • Nomi mAAMMGG_HHMMSS_descrizione.php; le migrazioni di GesTask partono da m260703_…. Le più vecchie vengono dal template Yii.
  • Le nuove sono final class … extends Migration con declare(strict_types=1), safeUp() e safeDown(), e usano {{%tabella}}.
  • Ogni migrazione deve essere reversibile; quando un down perderebbe dati (come per l'hash dei token API) lo dice nel commento.
  • Il database di test si aggiorna con php yii_test migrate.