"""AA-045-F5: Watch-Signale nachfuellen (robust gegen String-Breakdown)."""
import sys, json
sys.path.insert(0, "/opt/struktur/social-media-radar")
import sqlite3
conn = sqlite3.connect("/var/lib/sma-data/signals.db")
conn.row_factory = sqlite3.Row
rows = conn.execute("""SELECT signal_id, score_breakdown FROM signals
WHERE source_type='watch_entity' AND COALESCE(watch_entity_id,'')=''""").fetchall()
n = 0
for r in rows:
raw = r["score_breakdown"]
bd = None
try:
parsed = json.loads(raw or "{}")
if isinstance(parsed, dict):
bd = parsed
except Exception:
pass
if not bd:
continue
if bd.get("watch_entity"):
conn.execute("UPDATE signals SET watch_entity_id=?, watch_sector=?, watch_priority=? WHERE signal_id=?",
(bd["watch_entity"], str(bd.get("sector","")), str(bd.get("priority","")), r["signal_id"]))
n += 1
conn.commit()
print("nachgefuellt:", n)
for r in conn.execute("SELECT watch_entity_id, watch_sector FROM signals WHERE source_type='watch_entity' LIMIT 5"):
print(dict(r))