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