Probably the easiest way to implement your problem would be by using OR-Tools CP-SAT solver. I wouldn't worry about amount of constrains. This solver handles large-scale problems with ease.