WOTD: one-off polish backfill script (migrate + gloss/usage for existing pool)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
"""One-off: migrate the WOTD tables (gloss/usage) and backfill LLM polish for every
|
||||
pooled word that lacks it, then refresh today's pick from the now-polished pool.
|
||||
Run on the host with the LLM env sourced. Idempotent — safe to re-run."""
|
||||
import json
|
||||
import os
|
||||
|
||||
from goodnews import wotd
|
||||
from goodnews.db import connect, init_db
|
||||
from goodnews.llm import LocalModelClient
|
||||
|
||||
conn = connect(os.environ.get("GOODNEWS_DB", "data/goodnews.sqlite3"))
|
||||
init_db(conn) # idempotent migration: adds gloss/usage columns
|
||||
client = LocalModelClient.from_env()
|
||||
|
||||
rows = conn.execute(
|
||||
"SELECT id, word, part_of_speech, definition FROM wotd_pool WHERE gloss IS NULL OR gloss=''"
|
||||
).fetchall()
|
||||
print(f"pool words to polish: {len(rows)}")
|
||||
for r in rows:
|
||||
p = wotd._polish(client, r["word"], r["part_of_speech"], r["definition"])
|
||||
if p:
|
||||
conn.execute("UPDATE wotd_pool SET gloss=?, usage=? WHERE id=?",
|
||||
(p["gloss"], json.dumps(p["examples"]), r["id"]))
|
||||
print(f" ✓ {r['word']}: {p['gloss']}")
|
||||
else:
|
||||
print(f" – {r['word']}: polish unavailable, raw kept")
|
||||
conn.commit()
|
||||
|
||||
picked = wotd.pick_daily(conn, force=True, client=client) # today, from the polished pool
|
||||
print(f"\ntoday → {picked.get('word')}")
|
||||
print(f" gloss: {picked.get('gloss')}")
|
||||
print(f" usage: {picked.get('usage')}")
|
||||
conn.close()
|
||||
Reference in New Issue
Block a user