05/23 Phase 5
This commit is contained in:
@@ -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)
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user