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.")