05/23 Phase 5

This commit is contained in:
2026-05-23 11:32:54 -04:00
parent 0931cdcd8e
commit cf574455d7
7 changed files with 586 additions and 15 deletions
+15 -14
View File
@@ -276,20 +276,21 @@ All actions are logged to console and optionally to a log file:
---
### 🔲 Phase 5 — Prediction Engine
- [ ] Write `core/predictor.py`
- [ ] `hot_numbers(game_id, last_n)`
- [ ] `due_numbers(game_id)`
- [ ] `weighted_random(game_id)`
- [ ] `monte_carlo(game_id, simulations=10000)`
- [ ] `positional_pick(game_id)`
- [ ] Write `ui/predictor_ui.py`
- [ ] Strategy selector dropdown
- [ ] Number of tickets input
- [ ] Generate button
- [ ] Results display (generated tickets)
- [ ] Save prediction to DB
- [ ] Test all 5 strategies produce valid number sets
### Phase 5 — Prediction Engine
- [x] Write `core/predictor.py`
- [x] `hot_numbers(game_id, last_n=100)` — top-frequency + most-frequent bonus
- [x] `due_numbers(game_id)` — highest gap numbers from pool
- [x] `weighted_random(game_id)` — numpy weighted choice (min weight 1 for unseen)
- [x] `monte_carlo(game_id, simulations=10000)` — tally-based selection
- [x] `positional_pick(game_id)` — per-position best with dedup
- [x] All strategies: random fallback on empty DB
- [x] Write `ui/predictor_ui.py`
- [x] Game + strategy + ticket count dropdowns
- [x] Generate button (disables during generation)
- [x] Treeview results: #, zero-padded numbers, bonus
- [x] Save to DB (insert_prediction per ticket) + Clear
- [x] Strategy description label
- [x] 18 tests — all 5 strategies × validity + empty DB + edge cases (124/124 total)
---