Task ricorrenti

Pianifica esecuzioni di workflow affinché vengano eseguite automaticamente in modo ricorrente - giornaliera, settimanale, bisettimanale o mensile - con i Recurring Task di CodeCourier.

8 min letto
workflowsrecurring tasksscheduled runs

I Recurring Task ti permettono di pianificare un workflow affinché venga eseguito automaticamente secondo un planning ripetuto. Invece di avviare manualmente un run ogni mattina per un controllo di qualità del codice notturno o ogni lunedì per un aggiornamento di dipendenze, definisci un task ricorrente una volta e CodeCourier lo avvia automaticamente alla frequenza configurata. Ogni avvio crea un workflow run standard con sourcescheduled, che appare nella cronologia dei run del tuo progetto come qualsiasi altro run.

Modello dati dei task ricorrenti

Un record di task ricorrente contiene tutte le informazioni necessarie a pianificare e configurare ogni run che avvia:

Campi del task ricorrente
{
  title: string,                        // Human-readable name for the task
  description: string,                  // Optional longer description
  prompt: string,                       // The prompt sent to the workflow each firing
  frequency: "daily"                    // How often the task fires
            | "every_other_day"
            | "weekly"
            | "biweekly"
            | "monthly",
  targetWorkflowId: string,             // Workflow blueprint to execute
  projectId: string,                    // Owning project
  createdBy: string,                    // User who created the task
  isActive: boolean,                    // Whether the task is currently enabled
  timezone: string,                     // IANA timezone (e.g., "America/New_York")
  scheduledHour: number,               // Hour to fire (0-23, in the given timezone)
  scheduledMinute: number,             // Minute to fire (0-59)
  nextRunAt: number,                    // Unix timestamp of next scheduled execution
}

Opzioni di frequenza

CodeCourier supporta cinque frequenze di ricorrenza:

  • daily - Si avvia una volta ogni giorno di calendario all’ora e al minuto configurati. Usa per controlli di qualità notturni, run di test giornalieri o scansione continua delle dipendenze.
  • every_other_day - Si avvia ogni due giorni. Una cadenza più leggera di quella giornaliera - utile per task importanti ma che non devono girare ogni singolo giorno.
  • weekly - Si avvia una volta a settimana nello stesso giorno e ora della creazione originale. Usa per aggiornamenti di dipendenze settimanali, passaggi di refactoring settimanali o report di copertura settimanali.
  • biweekly - Si avvia ogni due settimane. Adatto a task con una cadenza di sprint, come audit di sicurezza o aggiornamenti di documentazione allineati ai cicli di sviluppo.
  • monthly - Si avvia una volta al mese di calendario. Ideale per automazione poco frequente e ad alto impatto, come aggiornamenti importanti di dipendenze o controlli di conformità.

Creare un task ricorrente

I task ricorrenti vengono creati dalla sezione dei task ricorrenti del progetto, accessibile a /p/[id]/recurring. Ogni task può anche essere visualizzato e modificato individualmente a /p/[id]/recurring/[taskId].

1

Apri la pagina dei task ricorrenti

Naviga al tuo progetto e apri la sezione « Recurring Tasks » dalla sidebar. Clicca « New Recurring Task » per aprire il form di creazione.

2

Dai un nome e descrivi il task

Fornisci un titoloche identifichi il task a colpo d’occhio (ad esempio, « Nightly TypeScript Audit »). Aggiungi una descrizione opzionale che spieghi lo scopo del task ed eventuale contesto di cui un membro del team avrebbe bisogno per capire perché viene eseguito.

3

Scrivi il prompt

Il promptè la descrizione del task inviata al workflow a ogni avvio. Scrivilo come faresti per un prompt di workflow standard - specifico, attuabile e completo. Lo stesso prompt viene riutilizzato a ogni ciclo, quindi formulalo in modo appropriato a un’esecuzione ripetuta (ad esempio, « Audita tutti i file TypeScript per errori di tipo e correggi quelli trovati. Concentrati sulla directory src/. »).

Prompt idempotenti

Scrivi prompt sicuri da ripetere. Un prompt come « Aggiungi l’autenticazione all’app » non è sicuro da far ricorrere mensilmente - produrrà lavoro duplicato. Un prompt come « Esegui un audit delle dipendenze e aggiorna qualsiasi pacchetto con vulnerabilità note » è appropriato perché è idempotente nell’intento.
4

Seleziona un workflow

Scegli il blueprint di workflow che verrà eseguito quando il task si avvia. L’intera pipeline del workflow selezionato - step di persona, loop e configurazione di sandbox - viene eseguita a ogni esecuzione pianificata. Puoi cambiare il workflow di destinazione in seguito dalla pagina di modifica del task.

5

Configura il planning

Imposta i parametri di ricorrenza:

  • Frequenza - Seleziona con quale frequenza il task si avvia (giornaliera, a giorni alterni, settimanale, bisettimanale o mensile).
  • Timezone - Scegli il timezone IANA per il planning (ad esempio, America/New_York, Europe/London,Asia/Tokyo). L’ora e il minuto pianificati vengono interpretati in questo timezone.
  • Ora e minuto - L’ora del giorno (in formato 24 ore) a cui il task si avvia. Ad esempio, 02:00 in America/Chicago si avvia alle 2:00 ora del Centro.

Dopo che salvi, CodeCourier calcola il timestamp nextRunAt in base alla frequenza, al timezone e all’ora attuale. Questo timestamp è mostrato nella pagina di dettaglio del task così puoi confermare quando avverrà la prima esecuzione.

6

Salva e attiva

Salva il task. I nuovi task vengono creati con isActive = true di default e iniziano a pianificare immediatamente. Il primo run si avvierà alla prossima occorrenza dell’orario configurato.

Come funzionano i run pianificati

Quando un task ricorrente si avvia, lo scheduler di CodeCourier crea un workflow run con metadati di pianificazione aggiuntivi:

Campi di run impostati dallo scheduler dei task ricorrenti
{
  source: "scheduled",                  // Identifies the run as scheduler-originated
  workflowId: task.targetWorkflowId,
  prompt: task.prompt,
  scheduledFor: timestamp,              // When the task was scheduled to fire
  timezone: task.timezone,              // Timezone from the recurring task
  recurrencePattern: task.frequency,    // e.g., "daily", "weekly"
  recurringTaskId: task._id,            // Reference back to the recurring task
  // ... standard run configuration
}

Questi campi appaiono nella vista di dettaglio del run, collegando ogni esecuzione al task ricorrente che l’ha avviata. Il timestamp scheduledFor riflette l’orario di avvio previsto, che può differire leggermente dall’orario startedAt effettivo a causa della latenza della coda dello scheduler.

Integrazione con la lista dei run

I run pianificati appaiono nella lista dei Runs del progetto con:

  • Un badge di source che mostra scheduled (distinto da workflow, sprint o sandbox).
  • Il titolo del task ricorrente come parte del nome del run, rendendo i run pianificati facili da identificare a colpo d’occhio.
  • Un tracciamento di status standard - i run pianificati attraversano lo stesso ciclo di vita pendingrunning completed/failed di tutti gli altri run.

Status Scheduled

Prima che un task ricorrente si avvii, qualsiasi run in coda che non è ancora partito appare con status scheduled. È uno stato di pre-esecuzione che indica che il run esiste nella coda ma non è ancora stato preso in carico dall’orchestratore. Passa a pending e poi a running quando l’esecuzione comincia.

Gestire i task ricorrenti

Attivare e disattivare

Ogni task ricorrente ha un toggle isActive. Disattivare un task sospende tutti gli avvii futuri senza eliminare il task. Il campo nextRunAt viene azzerato quando un task viene disattivato. Riattivare il task ricalcola nextRunAt dall’ora attuale in avanti in base alla frequenza e al planning.

Dalla pagina di dettaglio del task (/p/[id]/recurring/[taskId]), sposta lo switch « Active » in posizione on. Il task diventa immediatamente idoneo ad avviarsi al prossimo orario pianificato. CodeCourier ricalcola nextRunAt e mostra il timestamp della prossima esecuzione.

Modificare un task ricorrente

Tutti i campi di un task ricorrente possono essere modificati dalla sua pagina di dettaglio. Le modifiche hanno effetto dal prossimo avvio - qualsiasi run attualmente in corso usa la configurazione di quando è stato avviato, non i valori aggiornati. Modificare il planning (frequenza, timezone, ora o minuto) fa sì che CodeCourier ricalcoli nextRunAt immediatamente.

Puoi cambiare:

  • Titolo e descrizione.
  • Prompt - il prompt aggiornato viene usato dal prossimo avvio in poi.
  • Workflow di destinazione - sostituire con una pipeline diversa per i run futuri.
  • Frequenza, timezone, ora e minuto.

Eliminare un task ricorrente

Eliminare un task ricorrente lo rimuove definitivamente e ferma tutti gli avvii futuri. I run che sono stati creati dal task rimangono nella cronologia dei run e non sono influenzati. Per preservare la configurazione del task in vista di un potenziale uso futuro, valuta di disattivarlo anziché eliminarlo.

Gestione dei timezone

I task ricorrenti memorizzano un timezone IANA esplicito così che i planning si comportino intuitivamente indipendentemente da dove si trovano i membri del team o dal timezone del server su cui CodeCourier viene eseguito. Il timezone viene applicato sia al calcolo iniziale di nextRunAt sia a ogni successivo calcolo di ricorrenza dopo che un task si avvia.

Le transizioni dell’ora legale vengono gestite automaticamente. Un task configurato per avviarsi alle 09:00 America/New_York si avvia alle 9:00 ora dell’Est tutto l’anno, adattandosi alle transizioni EST/EDT senza intervento manuale.

Orari ambigui

Quando l’ora legale termina e gli orologi « tornano indietro », l’ora dall’1:00 alle 2:00 si verifica due volte. Se il tuo task è pianificato durante quest’ora, potrebbe avviarsi una o due volte a seconda del comportamento dello scheduler. Pianifica i task fuori da questa finestra (ad esempio, alle 2:00 o più tardi) per evitare ambiguità durante le transizioni all’indietro.

Visualizzare la cronologia dei run di un task

La pagina di dettaglio del task ricorrente (/p/[id]/recurring/[taskId]) mostra la cronologia dei run di quello specifico task - tutti i run con un recurringTaskId corrispondente. Questo ti dà una vista mirata di come il workflow pianificato si è comportato nel tempo: quanti run sono riusciti, quanti sono falliti e qualsiasi pattern nella durata di esecuzione o nei punteggi di qualità.

Da ogni voce di run nella cronologia del task, puoi navigare alla pagina di dettaglio completa del run per ispezionare l’output della sandbox, i verdetti degli step, gli URL di PR e i punteggi di qualità.

Casi d’uso

  • Controlli di qualità del codice notturni - Un task giornaliero esegue un workflow di qualità ogni notte alle 2:00, catturando errori di tipo, violazioni di lint e fallimenti di test introdotti durante il giorno.
  • Aggiornamenti di dipendenze settimanali - Un task settimanale si avvia ogni lunedì ed esegue un workflow che audita le dipendenze npm, aggiorna i pacchetti obsoleti e apre una PR con le modifiche.
  • Run di test giornalieri - Un task giornaliero esegue un workflow che compila il progetto ed esegue l’intera suite di test, riportando i fallimenti tramite il sistema di notifica dei run.
  • Audit di sicurezza bisettimanali - Un task bisettimanale avvia un workflow deep-dive che scansiona le vulnerabilità comuni nelle dipendenze, nella configurazione e nei pattern di codice.
  • Sincronizzazione mensile della documentazione - Un task mensile esegue un workflow designer che legge la codebase e aggiorna la documentazione dell’API per riflettere le modifiche del mese trascorso.
  • Baseline di performance continua - Un task a giorni alterni esegue un workflow che lancia benchmark di performance e commita i risultati, costruendo una baseline a lungo termine per il rilevamento delle regressioni.