refactor(lotto): Phase 1 코드리뷰 반영 (로컬 RNG·write-once·가드·테스트 보강)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1501,10 +1501,10 @@ def save_backtest_run(draw_no, strategy, weight_label, weight_json, trial_id,
|
||||
weight_json=excluded.weight_json, trial_id=excluded.trial_id,
|
||||
n_tickets=excluded.n_tickets, m3=excluded.m3, m4=excluded.m4,
|
||||
m5=excluded.m5, m6=excluded.m6, bonus_hits=excluded.bonus_hits,
|
||||
best_match=excluded.best_match, avg_meta_score=excluded.avg_meta_score,
|
||||
created_at=datetime('now')
|
||||
best_match=excluded.best_match, avg_meta_score=excluded.avg_meta_score
|
||||
""",
|
||||
(draw_no, strategy, weight_label,
|
||||
# weight_json must be a dict/list (not a pre-serialized string) to avoid double-encoding
|
||||
json.dumps(weight_json) if weight_json is not None else None,
|
||||
trial_id, n_tickets,
|
||||
hist.get("m3",0), hist.get("m4",0), hist.get("m5",0), hist.get("m6",0),
|
||||
@@ -1536,8 +1536,7 @@ def save_winner_calibration(draw_no, winning, scores, percentile,
|
||||
score_frequency=excluded.score_frequency, score_fingerprint=excluded.score_fingerprint,
|
||||
score_gap=excluded.score_gap, score_cooccur=excluded.score_cooccur,
|
||||
score_diversity=excluded.score_diversity, percentile=excluded.percentile,
|
||||
my_pick_avg=excluded.my_pick_avg, cache_draws=excluded.cache_draws,
|
||||
created_at=datetime('now')
|
||||
my_pick_avg=excluded.my_pick_avg, cache_draws=excluded.cache_draws
|
||||
""",
|
||||
(draw_no, json.dumps(winning), scores["score_total"], scores["score_frequency"],
|
||||
scores["score_fingerprint"], scores["score_gap"], scores["score_cooccur"],
|
||||
@@ -1557,7 +1556,7 @@ def get_calibration_history(limit: int = 52) -> List[Dict[str, Any]]:
|
||||
(limit,)).fetchall()
|
||||
return [dict(r) for r in rows]
|
||||
|
||||
def get_calibrated_draw_nos() -> set:
|
||||
def get_calibrated_draw_nos() -> set[int]:
|
||||
with _conn() as conn:
|
||||
return {r["draw_no"] for r in
|
||||
conn.execute("SELECT draw_no FROM winner_calibration").fetchall()}
|
||||
|
||||
Reference in New Issue
Block a user