fix(itinerary): add city to game items for proper constraint validation
Travel constraint validation was not working because ItineraryConstraints had no game items to validate against - games came from RichGame objects but were never converted to ItineraryItem for constraint checking. Changes: - Add city parameter to ItemKind.game enum case - Create game ItineraryItems from RichGame data in buildItineraryData() - Update isValidTravelPosition to compare against actual game sortOrders - Fix tests to use appropriate game sortOrder conventions Now travel is properly constrained to appear before arrival city games and after departure city games. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -145,8 +145,9 @@ extension ItineraryItem {
|
||||
// Parse kind
|
||||
switch kindString {
|
||||
case "game":
|
||||
guard let gameId = record["gameId"] as? String else { return nil }
|
||||
self.kind = .game(gameId: gameId)
|
||||
guard let gameId = record["gameId"] as? String,
|
||||
let gameCity = record["gameCity"] as? String else { return nil }
|
||||
self.kind = .game(gameId: gameId, city: gameCity)
|
||||
|
||||
case "travel":
|
||||
guard let fromCity = record["travelFromCity"] as? String,
|
||||
@@ -188,9 +189,10 @@ extension ItineraryItem {
|
||||
record["modifiedAt"] = modifiedAt
|
||||
|
||||
switch kind {
|
||||
case .game(let gameId):
|
||||
case .game(let gameId, let city):
|
||||
record["kind"] = "game"
|
||||
record["gameId"] = gameId
|
||||
record["gameCity"] = city
|
||||
|
||||
case .travel(let info):
|
||||
record["kind"] = "travel"
|
||||
|
||||
Reference in New Issue
Block a user