From 66165ebb88fd8a1618808eab5ede57455f25c2e2 Mon Sep 17 00:00:00 2001 From: gahusb Date: Mon, 11 May 2026 08:25:23 +0900 Subject: [PATCH] =?UTF-8?q?feat(lotto):=20lotto=5Fbriefings.picks=204?= =?UTF-8?q?=EA=B3=84=EC=B8=B5=20=EA=B0=9D=EC=B2=B4=EB=A1=9C=20=EB=A7=88?= =?UTF-8?q?=EC=9D=B4=EA=B7=B8=EB=A0=88=EC=9D=B4=EC=85=98=20+=20tier=5Frati?= =?UTF-8?q?onale=20=EC=BB=AC=EB=9F=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lotto/app/db.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/lotto/app/db.py b/lotto/app/db.py index 0093ed5..eacd8d1 100644 --- a/lotto/app/db.py +++ b/lotto/app/db.py @@ -279,6 +279,25 @@ def init_db() -> None: """) conn.execute("CREATE INDEX IF NOT EXISTS idx_review_draw ON weekly_review(draw_no DESC)") + # ── lotto_briefings.picks 4계층 마이그레이션 (1회 변환) ─────────────── + # 기존: picks가 JSON 리스트 [{numbers,risk_tag,reason}] + # 신규: picks가 JSON 객체 {core:[...], bonus:[], extended:[], pool:[]} + rows = conn.execute("SELECT id, picks FROM lotto_briefings").fetchall() + for r in rows: + try: + p = json.loads(r["picks"]) + if isinstance(p, list): + new_picks = {"core": p, "bonus": [], "extended": [], "pool": []} + conn.execute( + "UPDATE lotto_briefings SET picks=? WHERE id=?", + (json.dumps(new_picks, ensure_ascii=False), r["id"]), + ) + except (json.JSONDecodeError, TypeError): + continue + + _ensure_column(conn, "lotto_briefings", "tier_rationale", + "ALTER TABLE lotto_briefings ADD COLUMN tier_rationale TEXT NOT NULL DEFAULT '{}'") +