AutoUpdateAndLearn.update_data() now falls back to LottoWebUpdater
(lotto.de scraping) when the API chain (Lottoland/GitHub/lottoAPI)
returns no new data, matching the pattern already in production on
the Eurojackpot sibling project. Required installing beautifulsoup4
into the venv - its absence would have crashed the entire update
script the moment the fallback import was added, not just the
fallback path itself, so this needed verifying before wiring it in.
Also adds tests/test_popularity_score.py (pytest): regression coverage
for the popularity/EV score against known overplayed combinations
(1-2-3-4-5-6, 5-10-15-20-25-30) and the Superzahl EV ordering. Verified
against the pre-fix code (commit 8c2089d) that these tests would
actually have caught the sum-extremity bug fixed in e05f1f1 - this
had previously only been caught by manual spot-checking.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Same problem as Eurojackpot had: described the old 3-strategy system
(PURE-AI/PURE-PATTERN/ENSEMBLE) and crontab scheduling, neither of
which reflects what's actually running. Rewritten to describe the
current 4-strategy generator, the EV-optimized quality score, the
launchd schedule (update/weekly/watchdog), and the new backup
retention. Links to ARCHITECTURE.md for details.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This project includes multiple AI/ML-based lottery number generators for
German Lotto 6aus49, including pattern analysis, weighted predictions,
and hybrid approaches. Features automated weekly tip generation,
performance tracking, and Telegram bot integration.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>