Explorer
/tmp/aa045f5_fix_watchfields.py
← Zurück ↓ Download
"""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