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 dam260703_…. Le più vecchie vengono dal template Yii. - Le nuove sono
final class … extends Migrationcondeclare(strict_types=1),safeUp()esafeDown(), e usano{{%tabella}}. - Ogni migrazione deve essere reversibile; quando un
downperderebbe dati (come per l'hash dei token API) lo dice nel commento. - Il database di test si aggiorna con
php yii_test migrate.