import { schedule_task } from '../models/index.js'; import { safe_json_parse } from './json_utils.js'; import { execute_action_and_record } from './task_executor.js'; import { remove_cron_job, upsert_cron_job } from './cron_manager.js'; export async function reload_all_schedules() { const rows = await schedule_task.findAll(); for (const row of rows) { if (!row.enabled) { remove_cron_job(row.id); continue; } upsert_cron_job(row.id, row.cron_expression, async () => { try { await schedule_task.update( { last_run_at: new Date() }, { where: { id: row.id } } ); await execute_action_and_record({ action_name: row.action_name, action_payload: safe_json_parse(row.payload_json) || {}, source: 'cron', schedule_task_id: row.id }); } catch (err) { // cron 执行失败已在 crawl_run_record 落库,避免重复抛出影响其它任务 } }); } }