Download streamlit_app.py from beermen/ProArch2: direct link, hf CLI and curl.
- Browser
- Download file 2.76 kB
-
https://huggingface.co/spaces/beermen/ProArch2/resolve/main/streamlit_app.py
- Command line
-
hf download hf://spaces/beermen/ProArch2/streamlit_app.py
-
curl -L -o streamlit_app.py https://huggingface.co/spaces/beermen/ProArch2/resolve/main/streamlit_app.py
2.76 kB
| 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.") | |