File size: 2,760 Bytes
aab1e67 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
import streamlit as st
from agent import Agent
from trigger_engine import TriggerEngine
from logbook import log_event
import json
# Initial State
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.")
|