"""AA-045-F3 Test A (korrigiert): Neues Signal -> Batch-Briefing -> Caption.
Das Signal 88017f5a hat Score 35 und liegt jenseits von limit=300 der
Altbestand-Verarbeitung. Fuer den Test wird limit bewusst so gesetzt, dass das
Signal im Lauf enthalten ist - danach gilt der Normalbetrieb (limit=500)."""
import sys, json
sys.path.insert(0, "/opt/struktur/social-media-radar")
import sqlite3
SID = "88017f5a-01d2-4726-9d06-513339498080"
conn = sqlite3.connect("/var/lib/sma-data/signals.db")
conn.row_factory = sqlite3.Row
# Sicherstellen dass Signal unversorgt ist
conn.execute("UPDATE signals SET briefing_winkel='', briefing_nutzen='', briefing_freigabe='' WHERE signal_id=?", (SID,))
conn.commit()
# Anzahl postbarer Signale ohne Briefing vor dem Lauf
n_vor = conn.execute("""SELECT COUNT(*) FROM signals
WHERE status NOT IN ('ignoriert','veroeffentlicht')
AND COALESCE(mallorca_relevance,0)>0 AND COALESCE(briefing_winkel,'')=''""").fetchone()[0]
print("postbar ohne Briefing vor dem Lauf:", n_vor)
# Normaler Produktionspfad: run() mit Default-Argumenten (action_filter="")
# limit=800 damit Altbestand komplett durchlaufen wird (einmalig); danach ist
# der Bestand leer und limit=500 reicht dauerhaft.
from content_briefing import run as run_briefing
run_briefing(limit=800)
r = dict(conn.execute("SELECT briefing_winkel, briefing_nutzen, briefing_freigabe, briefing_error FROM signals WHERE signal_id=?", (SID,)).fetchone())
print("Signal-Briefing:", json.dumps(r, ensure_ascii=False)[:180])
# Restbestand nach Lauf
n_nach = conn.execute("""SELECT COUNT(*) FROM signals
WHERE status NOT IN ('ignoriert','veroeffentlicht')
AND COALESCE(mallorca_relevance,0)>0 AND COALESCE(briefing_winkel,'')=''""").fetchone()[0]
print("postbar ohne Briefing nach dem Lauf:", n_nach)
assert r["briefing_winkel"], "briefing_winkel immer noch leer"
# Caption-API
import urllib.request
with urllib.request.urlopen(f"http://127.0.0.1:8652/api/caption/{SID}", timeout=60) as resp:
cap = json.loads(resp.read())
print("Caption success:", cap["success"], "| fb:", len(cap.get("facebook") or ""), "Zeichen | reason:", cap.get("reason", "")[:60])
print("TEST A:", "BESTANDEN" if cap["success"] else "CAPTION BLOCKIERT (freigabe=%s)" % r["briefing_freigabe"])