Explorer
/proc/100/root/tmp/patch_cockpit_relevance.py
← Zurück ↓ Download
from pathlib import Path
p=Path('/opt/struktur/social-media-agent/templates/cockpit.html'); s=p.read_text()
# expose server-computed relevance fields
old='''  ps:         {{(s.publish_status or "")|tojson}}'''
new='''  ps:         {{(s.publish_status or "")|tojson}},
  mas_relevant: {{(s.mas_relevant or 0)|int}},
  mas_anchor: {{(s.mas_anchor or "")|tojson}},
  mas_reason: {{(s.mas_relevance_reason or "")|tojson}},
  content_blocked: {{(s.content_blocked or 0)|int}},
  content_block_reason: {{(s.content_block_reason or "")|tojson}}'''
assert s.count(old)==1; s=s.replace(old,new)
# Replace mal text function
old='''function malText(m) {
  const v = parseInt(m)||0;
  if (v>=25) return 'Direkter MAS-Bezug — hohes Content-Potential';
  if (v>=15) return 'Klarer Mallorca-Bezug für MAS nutzbar';
  if (v>=5)  return 'Schwacher Mallorca-Bezug vorhanden';
  return 'Geringer direkter Bezug zu MAS';
}'''
new='''function malText(m, s) {
  if (s && !s.mas_relevant) return s.content_blocked ? 'Nicht für MAS-Content geeignet: sensibles/fachfremdes Ereignis' : 'Kein fachlicher MAS-Bezug — nur allgemeines Mallorca-Radarsignal';
  const v = parseInt(m)||0;
  if (v>=25) return 'Direkter MAS-Bezug — hohes Content-Potential';
  if (v>=15) return 'Klarer Mallorca-Bezug für MAS nutzbar';
  if (v>=5)  return 'Schwacher Mallorca-Bezug vorhanden';
  return 'Geringer direkter Bezug zu MAS';
}'''
assert s.count(old)==1; s=s.replace(old,new)
# Gate client-generated helpers
s=s.replace('''function platReason(plat, s) {
  const reasons = {''','''function platReason(plat, s) {
  if (s && !s.mas_relevant) return '';
  const reasons = {''')
s=s.replace('''function hookSuggestions(s) {
  const hooks = {''','''function hookSuggestions(s) {
  if (s && !s.mas_relevant) return [];
  const hooks = {''')
s=s.replace('''function contentIdea(s) {
  const ideas = {''','''function contentIdea(s) {
  if (s && !s.mas_relevant) return [];
  const ideas = {''')
s=s.replace('''function ctaSuggestion(s) {
  const ctas = {''','''function ctaSuggestion(s) {
  if (s && !s.mas_relevant) return '';
  const ctas = {''')
# Director only for relevant
s=s.replace('''  if (s.dir_score > 0) {''','''  if (s.mas_relevant && s.dir_score > 0) {''')
# cases only relevant
s=s.replace('''  if (s.cases) {''','''  if (s.mas_relevant && s.cases) {''')
# actions: add irrelevant branch
old='''  const acts = s.comp ? `'''
new='''  const acts = !s.mas_relevant ? `<div style="background:rgba(100,116,139,.08);border-left:3px solid #64748b;border-radius:6px;padding:10px 12px;color:#94a3b8;">${s.content_blocked ? 'Nicht für MAS-Content geeignet: sensibles/fachfremdes Ereignis' : 'Kein fachlicher MAS-Bezug. Allgemeines Radarsignal — keine Content-Aktion.'}</div>` : s.comp ? `'''
assert s.count(old)==1; s=s.replace(old,new)
# recommended action has no false action when irrelevant because acts branch; warum reason call
s=s.replace('''${x(malText(s.mal))}''','''${x(malText(s.mal, s))}${s.mas_relevant && s.mas_reason ? `<div style="margin-top:4px;color:#8096a8;">${x(s.mas_reason)}</div>` : ''}''')
p.write_text(s); print('cockpit client relevance guards added')