"""AA-045-F4: Cockpit-Links nutzbar machen.
- Titel wird klickbarer 'Quelle oeffnen'-Link (bevorzugt final_article_url).
- 'N Quellen'-Badge zeigt die Primärquelle als Link, wenn extra_sources fehlen.
"""
p = "/opt/struktur/social-media-agent/templates/cockpit.html"
s = open(p).read()
# 1. Link-URL je Karte bestimmen (final_article_url bevorzugt)
old_title = ''' <div class="sig-title">{{s.topic or s.extracted_hook or '(kein Titel)'}}</div>'''
new_title = ''' {% set _src_link = s.final_article_url if s.final_article_url else s.source_url %}
{% if _src_link %}<a class="sig-title" href="{{ _src_link }}" target="_blank" rel="noopener" onclick="event.stopPropagation()" title="Quelle öffnen" style="color:var(--text);text-decoration:none;">{{s.topic or s.extracted_hook or '(kein Titel)'}}</a>
{% else %}<div class="sig-title">{{s.topic or s.extracted_hook or '(kein Titel)'}}</div>{% endif %}'''
assert old_title in s, "title-anchor fehlt"
s = s.replace(old_title, new_title)
# 2. Quellen-Badge: auch ohne extra_sources klickbar (oeffnet Primärquelle)
old_badge = ''' {% if s.source_count > 1 %}<span class="qbadge" onclick="event.stopPropagation();tglSrc('{{sid}}')">{{s.source_count}} Quellen ▾</span>{% endif %}'''
new_badge = ''' {% if s.source_count > 1 and s.extra_sources %}<span class="qbadge" onclick="event.stopPropagation();tglSrc('{{sid}}')">{{s.source_count}} Quellen ▾</span>
{% elif s.source_count > 1 and _src_link %}<a class="qbadge" href="{{ _src_link }}" target="_blank" rel="noopener" onclick="event.stopPropagation()" title="Quelle öffnen">{{s.source_count}} Quellen ↗</a>{% endif %}'''
assert old_badge in s, "badge-anchor fehlt"
s = s.replace(old_badge, new_badge)
open(p, "w").write(s)
print("cockpit.html gepatcht")