// // TripPlanningEngine.swift // SportsTime // // Thin orchestrator that delegates to scenario-specific planners. // import Foundation /// Main entry point for trip planning. /// Delegates to scenario-specific planners via the ScenarioPlanner protocol. final class TripPlanningEngine { /// Plans itineraries based on the request inputs. /// Automatically detects which scenario applies and delegates to the appropriate planner. /// /// - Parameter request: The planning request containing all inputs /// - Returns: Ranked itineraries on success, or explicit failure with reason func planItineraries(request: PlanningRequest) -> ItineraryResult { // Detect scenario and get the appropriate planner let planner = ScenarioPlannerFactory.planner(for: request) // Delegate to the scenario planner return planner.plan(request: request) } }