I am currently working on an implementation that based on a set of user configurations should output a final decision. The multiple configurations are evaluated several times at different stages of the execution.
Example: Let's say I'm building a system that plans the perfect vacation for a user. The User object is the system's input and each user has several different properties, such as gender, location, height, age, etc. An initial set of user's properties are evaluated. For instance, I want to send a user on a vacation at least 100 miles away from where they live. After that condition has been evaluated, then I introduce the age variable and narrow the set of possible outcomes and so on...
Right now, the system is a very simple sequential set of conditions that are easy to understand and debug but the system is growing and so is the number of conditions. I would like to refactor it making it more testable and easier to add extra conditions without introducing any regressions.
I've been looking at different ways to achieve this, more specifically, at whether to solve it using a decision tree or a state machine but I'm still not convinced either one of those is the best solution.
What would you recommend in this case?