Carlos Alcaraz is through to the final of the China Open after beating Daniil Medvedev, and will face world No.1 Jannik Sinner.