|
|
| import streamlit as st
|
| from agent import Agent
|
| from trigger_engine import TriggerEngine
|
| from logbook import log_event
|
| import json
|
|
|
|
|
| if 'rules' not in st.session_state:
|
| st.session_state.rules = [
|
| {"id": "R-001", "verbot": {"von": "analytisch", "an": "operativ"}},
|
| {"id": "R-002", "verbot": {"von": "narrativ", "an": "analytisch"}},
|
| {"id": "R-003", "verbot": {"von": "@Eva", "an": "meta"}}
|
| ]
|
|
|
| rollen = ["narrativ", "analytisch", "operativ", "meta"]
|
|
|
| def simuliere_konflikte(rules, rollen):
|
| konflikte = []
|
| blockiert = 0
|
| gesamt = 0
|
| for sender in rollen:
|
| for empfaenger in rollen:
|
| if sender == empfaenger:
|
| continue
|
| gesamt += 1
|
| geblockt = False
|
| for regel in rules:
|
| if regel["verbot"]["von"] == sender and regel["verbot"]["an"] == empfaenger:
|
| konflikte.append(f"❌ BLOCKIERT: {sender} → {empfaenger}")
|
| blockiert += 1
|
| geblockt = True
|
| break
|
| if not geblockt:
|
| konflikte.append(f"✅ {sender} → {empfaenger}")
|
| quote = round((blockiert / gesamt) * 100, 2)
|
| return konflikte, quote
|
|
|
| def empfehle_regeln(konflikte):
|
| statistik = {}
|
| for eintrag in konflikte:
|
| if "❌" in eintrag:
|
| continue
|
| paar = eintrag.split("✅ ")[-1]
|
| statistik[paar] = statistik.get(paar, 0) + 1
|
|
|
| empfehlungen = []
|
| for paar, anzahl in statistik.items():
|
| if anzahl > 1:
|
| von, an_ = paar.split(" → ")
|
| empfehlungen.append({
|
| "empfohlen": f"{von} → {an_}",
|
| "regelvorschlag": f"BLOCK {von} → {an_}"
|
| })
|
| return empfehlungen
|
|
|
| tab1, tab2, tab3 = st.tabs(["📜 Regelliste", "🔧 Empfehlungen", "➕ Neue Regel"])
|
|
|
| with tab1:
|
| st.subheader("📜 Aktive Regeln")
|
| for regel in st.session_state.rules:
|
| st.json(regel)
|
|
|
| with tab2:
|
| st.subheader("🔧 Regel-Empfehlungen")
|
| konflikte, quote = simuliere_konflikte(st.session_state.rules, rollen)
|
| empfohlene = empfehle_regeln(konflikte)
|
| for vorschlag in empfohlene:
|
| st.warning(f"🔧 {vorschlag['regelvorschlag']} bei {vorschlag['empfohlen']}")
|
|
|
| with tab3:
|
| st.subheader("➕ Regel hinzufügen")
|
| von = st.text_input("Von (Rolle oder @Instanz)")
|
| an = st.text_input("An (Rolle oder @Instanz)")
|
| regel_id = st.text_input("Regel-ID")
|
| if st.button("✅ Regel speichern"):
|
| neue_regel = {"id": regel_id, "verbot": {"von": von, "an": an}}
|
| st.session_state.rules.append(neue_regel)
|
| st.success("Regel hinzugefügt.")
|
|
|