-- 用户定义的定时任务表 -- 前端 SchedulerPanel 通过此表持久化定时任务配置 CREATE TABLE IF NOT EXISTS scheduled_tasks ( id TEXT PRIMARY KEY, account_id TEXT NOT NULL REFERENCES accounts(id) ON DELETE CASCADE, name TEXT NOT NULL, description TEXT, schedule TEXT NOT NULL, -- cron 表达式 / interval / ISO timestamp schedule_type TEXT NOT NULL DEFAULT 'cron' CHECK (schedule_type IN ('cron', 'interval', 'once')), target_type TEXT NOT NULL CHECK (target_type IN ('agent', 'hand', 'workflow')), target_id TEXT NOT NULL, enabled BOOLEAN NOT NULL DEFAULT TRUE, input_payload JSONB, -- 执行时的输入参数 last_run_at TIMESTAMPTZ, next_run_at TIMESTAMPTZ, run_count INTEGER NOT NULL DEFAULT 0, last_error TEXT, created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(), updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW() ); CREATE INDEX IF NOT EXISTS idx_scheduled_tasks_account ON scheduled_tasks(account_id); CREATE INDEX IF NOT EXISTS idx_scheduled_tasks_enabled_next ON scheduled_tasks(enabled, next_run_at) WHERE enabled = TRUE;