fix: resolve specificStadium achievement ID mismatch

The Green Monster (Fenway) and Ivy League (Wrigley) achievements
weren't working because:
1. Symbolic IDs use lowercase sport (stadium_mlb_bos)
2. Sport enum uses uppercase raw values (MLB)
3. Visits store stadium UUIDs, not symbolic IDs

Added resolveSymbolicStadiumId() helper that:
- Uppercases the sport string before Sport(rawValue:)
- Looks up team by abbreviation and sport
- Returns the team's stadiumId as UUID string

Also fixed:
- getStadiumIdsForLeague returns UUID strings (not symbolic IDs)
- AchievementProgress.isEarned computed from progress OR stored record
- getStadiumIdsForDivision queries CanonicalTeam properly

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Trey t
2026-01-11 22:22:29 -06:00
parent dcd5edb229
commit 5c13650742
20 changed files with 1619 additions and 141 deletions

View File

@@ -11,7 +11,11 @@
"Bash(xcrun simctl install:*)",
"Skill(frontend-design:frontend-design)",
"Bash(xcrun simctl io:*)",
"Bash(python cloudkit_import.py:*)"
"Bash(python cloudkit_import.py:*)",
"Bash(python -m sportstime_parser scrape:*)",
"Bash(pip install:*)",
"Bash(python -m pytest:*)",
"Skill(superpowers:brainstorming)"
]
}
}