Cron 生命週期與 replacement update
Cron job statuses 是 active、paused、firing、completed、cancelled、expired、failed。set_enabled(false) 會暫停仍符合條件的工作並保留歷史;set_enabled(true) 會恢復 eligible paused job、清除連續 failure/skip counters 與 first-loss timestamp、移除 cancellation reason,並重新計算 next fire time。completed、cancelled、expired、failed 是 terminal outcomes,必須依目前 action result 解釋。
update_job 是 replacement,不是原 row in-place mutation。成功後應從 response 讀取新的 cronJobId,所有後續操作都改用新 ID;replacesCronJobId 指向舊工作,舊工作會以 system:replaced 原因取消。dry-run 不代表 replacement 已寫入。
run_now 需要使用者確認,只接受 active 或 paused job。它會建立 manual fire,但不改動 nextFireAt、runCount、排程或 skip counters。第一次呼叫後即使 job 變成 terminal,使用相同 idempotency key 重試仍會回傳原結果。
Web/API 的 duplicate 會建立 active 但停用的草稿、清空 dedupe key,且除了正常 floor 以外不複製 Agent grants。已 completed 的 once job 與已 expired 的 recurring job 也可複製;歷史 runAt、endAt、expiresAt 會保留供編輯,但在排程有未來 occurrence 前不可啟用。
cancel_job 需要使用者確認,之後會停止未來正常 fires,但保留歷史與 telemetry,並不是刪除。terminal completed、expired、failed、cancelled job 不可恢復或取消。update、cancel、run-now 都使用 strict drift;update 採用 ConfirmationPolicy::None,cancel 與 run-now 採用 ConfirmationPolicy::UserConfirm。
Related actions
Section titled “Related actions”arinova.cron.get_job, arinova.cron.update_job, arinova.cron.set_enabled, arinova.cron.cancel_job, arinova.cron.run_now
Also known as
暫停 Cron, 恢復排程, 取代工作, 新 cronJobId, 取消排程, system replaced
Build a7f47a5ca54ddcf7806cd48b81ce1b9827042766