"""AA-045-F5: insert_signal kennt watch-Felder nicht -> nachtraeglich befuellen
und signal_db um die Felder erweitern."""
import sys
sys.path.insert(0, "/opt/struktur/social-media-radar")
import sqlite3, json, re
# 1. signal_db: watch-Felder aus score_breakdown in Spalten spiegeln (bei Insert)
p = "/opt/struktur/social-media-radar/signal_db.py"
s = open(p).read()
old = """ # AA-045: Felder des einheitlichen Signalmodells befuellen
aa045_enrich.enrich_signal_row(conn, signal_id, data)"""
new = old + """
# AA-045-F5: Watch-Entity-Felder
if data.get("watch_entity_id"):
conn.execute(
"UPDATE signals SET watch_entity_id=?, watch_sector=?, watch_priority=? WHERE signal_id=?",
(data["watch_entity_id"], data.get("watch_sector", ""),
data.get("watch_priority", ""), signal_id))"""
assert old in s, "signal_db anchor fehlt"
s = s.replace(old, new)
open(p, "w").write(s)
print("signal_db gepatcht")
# 2. Bestehende 24 Watch-Signale aus score_breakdown nachfuellen
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:
try:
bd = json.loads(r["score_breakdown"] or "{}")
except Exception:
continue
if bd.get("watch_entity"):
conn.execute("UPDATE signals SET watch_entity_id=?, watch_sector=?, watch_priority=? WHERE signal_id=?",
(bd["watch_entity"], bd.get("sector",""), bd.get("priority",""), r["signal_id"]))
n += 1
conn.commit()
print("nachgefuellt:", n)
PYEOF_MARKER_NOT_USED = None