"""AA-045-F3 Test A: Neues Signal -> Briefing (normaler Pfad) -> Caption."""
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
# 1. Ein frisches, noch nie gebrieftes Signal waehlen (postbar, Relevanz>0)
row = conn.execute("""
SELECT signal_id, topic FROM signals
WHERE COALESCE(briefing_winkel,'')=''
AND status NOT IN ('ignoriert','veroeffentlicht')
AND COALESCE(mallorca_relevance,0) > 0
AND radar_score >= 31
ORDER BY created_at DESC LIMIT 1""").fetchone()
sid = row["signal_id"]
print("TEST A Signal:", sid[:12], "|", (row["topic"] or "")[:60])
# 2. Normalen Produktionspfad ausfuehren: content_briefing.run() (Default: neue Auswahl)
from content_briefing import run as run_briefing
run_briefing(limit=50)
# 3. Pruefen
r = dict(conn.execute("SELECT briefing_winkel, briefing_nutzen, briefing_freigabe, briefing_error FROM signals WHERE signal_id=?", (sid,)).fetchone())
print("Briefing:", json.dumps(r, ensure_ascii=False)[:200])
assert r["briefing_winkel"], "briefing_winkel leer!"
assert r["briefing_nutzen"], "briefing_nutzen leer!"
# 4. Caption-API (echter Produktionsendpunkt)
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")
if not cap["success"]:
print("reason:", cap.get("reason"))
sys.exit(1)
print("TEST A BESTANDEN")