- Remove all print statements from planning engine, data providers, and PDF generation - Fix deprecated CLGeocoder usage with MKLocalSearch for iOS 26 - Fix Swift 6 actor isolation by converting PDFGenerator/ExportService to @MainActor - Add @retroactive to CLLocationCoordinate2D protocol conformances - Fix unused variable warnings in GameDAGRouter and scenario planners - Remove unreachable catch blocks in SettingsViewModel 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
28 lines
903 B
Swift
28 lines
903 B
Swift
//
|
|
// 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)
|
|
}
|
|
}
|