Admin-Dashboard: Azure-Infrastrukturkosten
Neuer kleiner Kostenblock im Dashboard, direkt bei den (geschätzten) Token-Kosten: zeigt die echten Azure-Subscription-Ist-Kosten (Monat bis heute, EUR) der Subscription FrAIraum-Prod + Deep-Link in die Azure- Kostenanalyse. Quelle ist die Azure Cost Management API (management.azure.com) - NICHT Microsoft Graph, sondern eine eigene App „FrAIa - Kosten lesen" mit Azure-RBAC-Rolle „Kostenverwaltung: Leser" auf der Subscription (kein Graph-Consent). Neuer Dashboard-Node „Azure-Kosten holen" (neverError, graceful -> bei Fehler „nicht abrufbar"). Hinweis im Block: Azure-Kostendaten hinken ~24 h. Verifiziert (~1 € MTD).
Login-Callback gehärtet + SharePoint-Gruppen-Dropdown repariert
Ein wiederholter/abgelaufener Login-Callback (z.B. neu geladene Callback-URL) crashte vorher am Token-Exchange („URL parameter must be a string, got undefined"). Jetzt fangen zwei IF-Guards (State-Fehler? / Token-Fehler?) die Fehler- und Reuse-Fälle ab und leiten sauber per 302 zur Login-Seite; das Frontend zeigt dann „Der Anmelde-Link ist abgelaufen oder wurde bereits verwendet. Bitte melde dich erneut an." statt einer kryptischen Meldung. Außerdem repariert: das „Sichtbar für"-Dropdown im SharePoint-Quellen-Panel war nach dem Entschlacken der SharePoint-Sync-App leer (der Gruppen-Lese-Node im Admin-SharePoint-Workflow lief noch auf der alten Credential) - jetzt auf die read-only App „Gruppen und Nutzer lesen" umgebogen, Dropdown listet die Entra-Gruppen wieder.
Front-End-Zugriff: Personen ohne Zugriff ausgeblendet
Das Panel listet nur noch Personen MIT Rolle (Admins/Benutzer); "Kein Zugriff" wird nicht mehr angezeigt - kompaktere, relevante Liste.
Front-End-Zugriff jetzt read-only + eigene Lese-App
Das Verwalten der Rollen aus dem Frontend ist wieder raus: die Gruppen- Mitgliedschaft (Admins/Benutzer) ändert ausschließlich der Entra-Admin in Microsoft Entra - das Panel zeigt Personen + Rolle nur noch an (Badge), konsistent zur SharePoint-Logik (Frontend schreibt nie Entra). Der Schreib-Pfad (group-add/remove samt Auswertung) ist aus dem Workflow Webseiten-Verwaltung entfernt (25 statt 33 Nodes). Das Gruppen-/Nutzer- Lesen läuft jetzt über eine eigene, read-only Entra-App „FrAIa - Gruppen und Nutzer lesen" (GroupMember.Read.All + User.Read.All); die SharePoint-Sync-App wurde im Gegenzug auf Sites.Read.All entschlackt (Prinzip: eine App pro Zweck). Verifiziert: Admins/Benutzer + Klarnamen werden korrekt gelesen.
Chat-Stabilität: Retry am Azure-Embedding der Frage
Der RAG-Chat brach bei einem kurzen Azure-OpenAI-Aussetzer sofort mit „Verbindungsfehler" ab, weil der Node „Embed Query (Azure)" kein Retry hatte (anders als der Sync-Embed). Jetzt 3 Versuche mit 2 s Abstand - transiente Azure-Fehler (z.B. „The service was not able to process your request") werden abgefangen, statt die ganze Anfrage zu killen. Ursache des akuten Chat-Ausfalls am 29.05. war ein bestätigter Microsoft-Incident („Azure OpenAI Service Elevated Error Rates in multiple regions", via Azure Service Health) - der Embedding-Aufruf in Sweden Central lief in HTTP 500. Kein Defekt auf unserer Seite; bei längerer Azure-Störung helfen auch Retries nicht (offen: freundlicher Ausfall-Hinweis im Chat statt rohem „Verbindungsfehler").
Front-End-Zugriff: Rollen je Person verwalten
Das Panel „Front-End-Zugriff" (Admin-Einstellungen) listet jetzt - analog zu „SharePoint-Quellen & Zugriff" - alle Personen aus Microsoft Entra. Rechts je Person ein Rollen-Dropdown: Admin, Benutzer oder Kein Zugriff. Die Rolle entspricht der exklusiven Gruppenmitgliedschaft (Admin nur in der Admins-Gruppe, Benutzer nur in der Benutzer-Gruppe) und wird direkt in Microsoft Entra gesetzt; das Umsetzen ist idempotent (bereits gesetzt bzw. bereits entfernt gilt als Erfolg). Backend: drei neue Aktionen am Workflow Webseiten-Verwaltung (Nutzerliste lesen, Mitglied hinzufügen, Mitglied entfernen). Der Endpunkt kann ausschließlich die zwei bekannten Frontend-Gruppen ändern (Gruppen-ID-Whitelist im Code) und bleibt admin-only. Voraussetzung fürs Schreiben ist die Microsoft-Berechtigung GroupMember.ReadWrite.All - bis sie erteilt ist, zeigt die UI einen klaren Hinweis statt eines Fehlers. Lesen (Nutzerliste, Mitglieder) funktioniert bereits.
Admin-Oberfläche umstrukturiert (Benennung + Anordnung)
Panel „Funktionen" in „Features" und „Wissensbasis-Webseiten" in „Website-Quellen" umbenannt. Der Block „Microsoft-Gruppen & Zugriff" wandert vom Dashboard in die Einstellungen und heißt dort jetzt „Front-End-Zugriff" - er zeigt die beiden Microsoft-Sicherheitsgruppen samt Mitgliedern. Panel-Reihenfolge in den Einstellungen: Features, Front-End-Zugriff, SharePoint-Quellen & Zugriff, Website-Quellen. (Die Möglichkeit, Personen direkt aus diesem Panel einer Gruppe zuzuordnen oder zu entfernen, folgt separat - sie braucht eine neue Microsoft-Schreibberechtigung.)
Admin-Dashboard (neuer Tab, nur für Admins)
Das Web-Frontend hat einen neuen Tab "Dashboard" mit einer Live-Statusübersicht von Atlas-001: eine Gesamt-Ampel (grün / neutral-grau / rot), Kennzahl-Kacheln (indexierte Chunks, Fehler der letzten 24 Stunden und 7 Tage, letzter Sync) und ein Komponenten-Status für Qdrant, SharePoint-Sync und Webseiten-Sync. Aus dem E-Mail-Briefing führt der Klick auf die Atlas-001-Karte direkt ins Frontend.
Zentrale Fehlererfassung mit Beschreibung
Alle Atlas-Workflows melden ihre automatischen Fehler jetzt an einen gemeinsamen Fehler-Log. Das Dashboard zeigt sie mit Klartext-Meldung, betroffenem Node und einem Direktlink in die jeweilige n8n-Ausführung - vorher war ein Fehler nur eine nackte Zahl im Briefing.
Antwort-Qualität sichtbar gemacht
Jede Chat-Antwort protokolliert ab sofort ihre Kennzahlen (Trefferqualität, Latenz, Tokens) - ohne Fragetexte zu speichern. Das Dashboard zeigt daraus einen Konfidenz-Donut (hoch / mittel / niedrig), die durchschnittliche Trefferqualität und einen Wissenslücken-Zähler: Fragen mit schwacher Trefferlage sind das Signal, welche Dokumente in der Wissensbasis noch fehlen.
Daumen-Feedback im Chat
Unter jeder Fraia-Antwort stehen jetzt zwei Daumen (hilfreich / nicht hilfreich). Das direkte Nutzerurteil fließt als Zufriedenheitsquote ins Dashboard - das ehrlichste Signal für die Antwortqualität.
Token-Kostenindikator
Das Dashboard rechnet den Token-Verbrauch grob in Euro um (gpt-4.1-mini, input-lastige RAG-Nutzung), damit der laufende Aufwand auf einen Blick greifbar ist.
Gruppengesteuerter Zugang über Microsoft-Sicherheitsgruppen
Wer sich am Frontend anmelden darf und ob als Admin oder normaler Nutzer, wird jetzt über zwei Entra-Sicherheitsgruppen gesteuert (Admins-Gruppe und Benutzer-Gruppe). Die Rolle wird aus der Gruppenmitgliedschaft im Microsoft-Token abgeleitet. Neue Personen werden einfach der passenden Gruppe hinzugefügt, ohne Code-Änderung. Die alte fest verdrahtete Mitgründer-Liste bleibt nur als Fallback.
Microsoft-Gruppen und Mitglieder im Dashboard sichtbar
Neuer Dashboard-Block "Microsoft-Gruppen & Zugriff" zeigt die beiden Zugriffs-Gruppen und ihre Mitglieder (Name, E-Mail, aktiv/deaktiviert) direkt aus Microsoft Graph. So ist auf einen Blick klar, wer Zugriff hat und mit welcher Rolle.
Daumen-Feedback an- und abschaltbar (Chat und Teams getrennt)
In den Admin-Einstellungen lassen sich die "War das hilfreich?"-Daumen jetzt für den Web-Chat und für Teams getrennt ein- und ausschalten. Die Schalter wirken serverseitig (Feature-Flags), also für alle Nutzer und beide Kanäle zugleich.
Selbst verwaltbare Webseiten in der Wissensbasis
Admins können in den Admin-Einstellungen öffentliche Webseiten hinterlegen, die der Webseiten-Sync zusätzlich ohne Login crawlt und indexiert - parallel zu den beiden internen FrAIraum-Seiten, die weiterhin mit Zugangsdaten abgeglichen werden.
Sync direkt aus dem Dashboard und Feinschliff
Die Buttons "SharePoint synchronisieren" und "Webseiten synchronisieren" sitzen jetzt direkt in den jeweiligen Status-Kacheln des Dashboards (Status und Auslöser an einem Ort). Die beiden Admin-Menüpunkte tragen ein Schild-Symbol statt des Wortes "Admin-". Der Komponenten-Status nutzt klare Häkchen/Kreuz-Symbole statt farbiger Punkte, die Konfidenz-Palette wurde kontrastreicher gemacht, ein 30-Tage-Qualitätsblock und ein dezenter Link zur echten OpenAI-Nutzung kamen hinzu.
Dokumente ohne eigenen Menüpunkt
Der Menüpunkt "Dokumente in der Wissensbasis" entfällt. Die Dokumentenliste ist jetzt über einen Button in der Qdrant-Kachel des Dashboards erreichbar; von dort führt ein Zurück-Button wieder ins Admin-Dashboard. Die Admin-Einstellungen sind in "Funktionen" und "Wissensbasis-Webseiten" gegliedert.
SharePoint-Sync voll tabellengetrieben (hartgecodeten internen Ordner entfernt)
Der bisher fest im Workflow eingebaute Teams-Ordner ist raus - der Sync liest nur noch die Quellen aus der Tabelle. Der interne Ordner „Daten der Wissensbasis" läuft jetzt als normale, verwaltbare Quelle (in der UI sicht- und in der Sichtbarkeit steuerbar). Umstellung ohne Re-Index und ohne Datenverlust (Bestand per SharePoint-Datei-ID als unverändert erkannt); die Altlast „Kundenunterlagen-Test" wurde dabei aufgeräumt. Für Kundenstacks heißt das: keine festen Pfade im Code, alles über die Oberfläche konfigurierbar.
SharePoint-Quellen + Ordner-Zugriff zu einem Panel „SharePoint-Quellen & Zugriff" konsolidiert: die Gruppe wird per „Sichtbar für"-Dropdown direkt an jeder Quelle gesetzt (auch am festen internen Ordner als erster Zeile), „Keine Gruppe" = nur Admin. Kein getrenntes Zuordnungs-Panel und kein fehleranfälliges Abtippen von Ordnernamen mehr; eine wirkungslose (URL statt Label) Alt-Zuordnung wurde entfernt.
Dashboard: „(< 40 %)" in der Wissenslücken-Kachel auf eine eigene Zeile (Zeilenumbruch). Einstellungen: Ordner-Zugriff steht jetzt direkt unter SharePoint-Quellen (Webseiten danach).
Dashboard-Fehlerliste: einheitliche Abstände zwischen den Einträgen (alle als direkte Listen-Kinder, kein Wrapper-Container mehr).
Admin-Einstellungen: SharePoint-Quellen stehen jetzt vor den Wissensbasis-Webseiten.
Webseiten-Panel zeigt die zwei festen internen Seiten (fraia.de, frairaum-management.de) read-only mit Hinweis „im Aufbau · passwortgeschützt"; darunter die selbst hinterlegten Zusatz-Seiten.
Zufriedenheits-Kachel: Eyebrow-Wort „Antwortqualität" entfernt - einheitlich ohne Überschrift wie die übrigen Kennzahlen.
Microsoft-Gruppen-Block: ein Button klappt die Mitgliederlisten beider Gruppen (Admins + Benutzer) gemeinsam auf/zu.
Fehlerliste + Changelog im Dashboard zeigen standardmäßig nur die ersten 3 Einträge, mit Knopf zum Erweitern.
Daumen-Feedback: Chat- und Teams-Schalter zu einem Schalter zusammengefasst (steuert beide Kanäle gemeinsam).
Admin-Einstellungen in Karten-Panels gegliedert
Die vier Verwaltungs-Bereiche (Funktionen, Wissensbasis-Webseiten, SharePoint-Quellen, Ordner-Zugriff) sitzen jetzt in klar abgegrenzten Karten mit eigener Kopfzeile (Emerald-Akzentbalken) statt flach untereinander - übersichtlicher und konsistent mit dem CI.
Microsoft-Gruppen-Block: Mitgliederzahl statt Fehlermeldung
Der Dashboard-Block zeigte „Insufficient privileges", weil die Abfrage Mitglieder-Profilfelder (u.a. accountEnabled) per $expand verlangte. Umgestellt auf den direkten /members-Endpunkt - der Block zeigt jetzt die Mitgliederzahl je Gruppe. Die Klarnamen der Mitglieder bleiben noch verborgen: dafür braucht die Graph-App zusätzlich die Berechtigung User.Read.All (GroupMember.Read.All allein gibt nur die Mitgliedschaft als IDs frei, Graph maskiert Name/E-Mail).
Admin-Oberfläche für SharePoint-Quellen und Ordner-Zugriff
Die Admin-Einstellungen haben zwei neue Bereiche: (1) "SharePoint-Quellen" - zusätzliche SharePoint-Ordner per URL hinzufügen, deaktivieren oder entfernen; (2) "Ordner-Zugriff" - per Klick festlegen, welche Microsoft- Gruppe welchen Ordner bzw. welche Quelle sehen darf (Gruppen-Auswahl als Dropdown direkt aus Entra, Ordner-Vorschläge aus den vorhandenen Quellen). Damit ist die komplette Wissensbasis-Verwaltung (Quellen + Berechtigungen) ohne Workflow-Eingriff über die Oberfläche pflegbar - ein eigenes Admin-Backend steht dahinter, nur für Admins.
Mehrere SharePoint-Quellen + rekursive Ordner (Multi-Source-Sync)
Der SharePoint-Sync kann jetzt beliebig viele SharePoint-Verzeichnisse einlesen - nicht mehr nur den einen Teams-Ordner. Quellen werden in der neuen Tabelle "SharePoint-Quellen" per SharePoint-URL hinterlegt (intern über Microsoft Graph zu Laufwerk-/Ordner-ID aufgelöst) und vollständig rekursiv durchsucht (auch tief verschachtelte Unterordner). Jede Quelle bekommt ihr eigenes Label, das direkt in die Zugriffssteuerung (Ordner -> Gruppe) einfließt. Sicherheitsnetz: Schlägt das Auflisten einer Quelle fehl oder werden 0 Dateien gefunden, bricht der Lauf ab, BEVOR der Aufräumschritt etwas löschen kann - so kann ein Verbindungsfehler nie versehentlich die Wissensbasis leeren. Die internen Teams-Inhalte laufen unverändert als feste Quelle weiter.
Permission-aware Wissensbasis (Ordner-Zugriff über Microsoft-Gruppen)
Der RAG-Chat filtert die SharePoint-Inhalte jetzt pro Nutzer: Wer einen Ordner nicht sehen darf, bekommt auch keine Antworten daraus - die betreffenden Stellen erreichen das Sprachmodell gar nicht erst. Steuerung über die Microsoft-Sicherheitsgruppen des Nutzers: in der neuen Tabelle "SharePoint-Zugriff" wird je Ordner eine Gruppe hinterlegt; nur Mitglieder dieser Gruppe sehen den Ordner. Defaults: nicht zugeordnete Ordner sind nur für Admins sichtbar, Admins sehen alles, Webseiten-Inhalte bleiben für alle offen. Der Filter wirkt direkt in der Vektorsuche (Qdrant), die Gruppen kommen aus dem Microsoft-Login-Token. Greift zunächst im Web-Chat; Teams folgt später. Ordner-Zuordnung wirkt sofort, ohne Neu-Indexierung.
Antwort-Auswertung ehrlicher dargestellt
Der frühere Block "Antwort-Qualität" hieß irreführend: der Donut misst die Retrieval-Konfidenz (wie gut die Suche in der Wissensbasis getroffen hat), nicht die Güte der Antwort selbst. Bei text-embedding-3-large liegen schon sehr gute Treffer real bei 40-68 %, die alte "hoch"-Schwelle (70 %) war praktisch unerreichbar - deshalb sah alles nur "mittel" aus. Geändert: Block heißt jetzt "Antwort-Auswertung", der Donut ist klar als "Retrieval-Konfidenz" benannt, die Nutzer-Zufriedenheit (Daumen-Feedback) steht als eigentliches Qualitätssignal als Headline-Kachel vorn. Die Konfidenz-Schwellen wurden an die reale Verteilung kalibriert: hoch ab 55 %, mittel ab 40 %, niedrig darunter.
Dashboard-Layout aufgeräumt
"Aktive Nutzer" steht jetzt bei den Kennzahl-Kacheln oben (neben Chunks, Fehlern und letztem Sync) statt im Qualitätsblock. Tokens und Kosten sind in den Qualitätsblöcken zu einer Kachel zusammengefasst (erst Tokens, darunter die geschätzten Kosten). Der 30-Tage-Block ist standardmäßig eingeklappt und lässt sich per Knopf "Historische Daten anzeigen" aufklappen. Die Unterzeile unter der Überschrift ist entfallen.
Fraia kennt ihre Atlas-Identität (keine Aurora-Vermischung)
Wird Fraia nach sich selbst gefragt (Workflows, Architektur, Stack, Modelle), antwortet sie jetzt ausschließlich über Atlas-001 und blendet Aurora-001-Quellen aus - auch wenn die Aurora-Architektur-Doku in der Wissensbasis liegt. Nur auf ausdrückliche Nachfrage geht sie auf Aurora-001 ein. Vorher vermischte sie bei Selbstauskünften beide Stacks.
Teams-Bot ohne Gesprächsgedächtnis (sauber getrennt)
Der Teams-Bot nutzt das server-seitige Gesprächsgedächtnis des RAG-Chats bewusst nicht mehr: jede Teams-Anfrage steht für sich. Vorher teilten sich alle Teams-Nachrichten (und der Web-Login) denselben Verlauf - das ist jetzt entkoppelt.
Azure-Embedding-Quota stark erhöht (kein 429 mehr bei großen Syncs)
Microsoft hat das Kontingent für das Embedding-Modell text-embedding-3-large in Sweden Central von anfangs 10K auf 410K Tokens/Minute (und 1230 Requests/Minute) angehoben. Die frühere Drosselung (HTTP 429) bei großen Sync-Läufen, etwa umfangreichen Compliance-PDFs, ist damit aufgehoben.
Quellen in Antworten sind jetzt anklickbar (Web + Teams)
Die in einer Antwort genannten Quellen sind jetzt klickbare Links - sowohl im Web-Chat als auch im Microsoft-Teams-Bot. Ein Klick öffnet das Dokument direkt in SharePoint. Damit die Dokumente dabei inline angezeigt werden statt heruntergeladen, liegen die Wissensbasis-Dokumente jetzt als PDF in SharePoint.
Nur noch Microsoft-Login
Die lokale Anmeldung (Benutzername/Passwort) samt lokaler Benutzerverwaltung wurde komplett aus dem Atlas-Auth-Workflow entfernt. Die Anmeldung läuft jetzt ausschließlich über das Microsoft-Konto (Entra ID).
Eigener Health-Check mit täglicher Status-Mail
Atlas-001 hat einen eigenständigen Health-Check (täglich 08:00 Uhr): prüft Erreichbarkeit, gefüllte Wissensbasis und ob der nächtliche Sync jünger als 26 Stunden ist. Verschickt ab sofort nach jedem Lauf eine Status-Mail (OK oder ALERT), nicht mehr nur im Fehlerfall.