05/23 Add Pick 5, Millionair Balls, etc

This commit is contained in:
2026-05-23 17:04:40 -04:00
parent b5e03fbf10
commit c792d9878e
10 changed files with 302 additions and 50 deletions
+19
View File
@@ -341,6 +341,25 @@ All actions are logged to console and optionally to a log file:
---
### ✅ Phase 21 — Virginia Lottery Combo Games
- [x] Seed 3 new games in `db/database.py` `_seed_games()`
- Cash 5: `main_count=5, main_max=45, bonus_count=0`
- Millionaire for Life: `main_count=5, main_max=58, bonus_count=1, bonus_max=5`
- Bank a Million: `main_count=6, main_max=40, bonus_count=1, bonus_max=40`
- [x] Extend `_BUILTIN_GAMES` in `db/models.py` to include all 3 new games
- [x] Add `_fetch_va_lottery()` generic parser to `core/fetcher.py`
- Format: `M/D/YYYY; N1,N2,...[; Label: bonus]` — optional "Results for" header skipped
- API: `https://www.valottery.com/api/v1/downloadall?gameId=<id>`
- [x] Add `fetch_cash5_va()`, `fetch_millionaireforlife_va()`, `fetch_bankamillion_va()` to `core/fetcher.py`
- [x] Wire all 3 into `fetch_all()` (now 6 sources total)
- [x] Add 3 new source entries to `_ALL_SOURCES` / `_SOURCE_NAMES` in `ui/settings.py`
- [x] Update `tests/test_fetcher.py` — 16 new tests, fixed `fetch_all` count (2 → 6), 31 total
- [x] Fix pre-existing flaky Tkinter guard in `tests/test_dashboard.py`
- [x] Update hardcoded game-count assertions in `test_database.py` and `test_models.py`
- [x] 390/390 total tests passing
---
### ✅ Phase 20 — Number Wheeling System
- [x] Write `core/wheeling.py`
- [x] `wheel_count(numbers, k) -> int` — C(n, k) preview, deduplicates input