where('status', Status::Waiting) ->where('next_action_at', '<=', now()) ->where(fn ($query) => $query ->where('is_manual', true) ->orWhereHas('automation', fn ($inner) => $inner->where('status', AutomationStatus::Active))) ->lockForUpdate() ->chunkById(50, function ($runs) use ($advance) { DB::transaction(function () use ($runs, $advance) { foreach ($runs as $run) { $run->update([ 'status' => Status::Running, 'next_action_at' => null, ]); $advance($run, $run->current_node_id); } }); }); return self::SUCCESS; } }