# Wirksame Kategorie- und Quellenfilter Diese Version korrigiert die Filtersemantik und ergänzt Quellenfilter für Lernen, Anzeige und Thinking. ## Zwei Ebenen Die Environment-Variablen sind administrative Obergrenzen: ```env BRAIN_LEARNING_CATEGORIES= BRAIN_DISPLAY_CATEGORIES= BRAIN_THINKING_CATEGORIES= BRAIN_LEARNING_SOURCES= BRAIN_DISPLAY_SOURCES= BRAIN_THINKING_SOURCES= ``` Die WebUI speichert zusätzliche Laufzeiteinschränkungen in `runtime-settings.json`. ```text wirksamer Filter = Environment ∩ WebUI ``` Eine leere Environment-Liste oder `*` ist unbegrenzt. Eine leere WebUI-Liste bedeutet „alle durch das Environment erlaubten Werte“. Sind Environment und WebUI disjunkt, ist der wirksame Filter absichtlich leer und nicht versehentlich „alle“. Die API liefert sowohl die veränderbaren Werte als auch die effektiven und administrativen Bereiche: ```json { "learning_categories": [], "learning_sources": ["internal-kb"], "effective_learning": { "categories": ["IT-Security"], "sources": ["internal-kb"], "categories_restricted": true, "sources_restricted": true, "matches_none": false }, "admin_learning": { "categories": ["IT-Security", "Netzwerk"], "sources": ["GLPI Knowledge Base", "internal-kb"], "categories_restricted": true, "sources_restricted": true, "matches_none": false } } ``` Ältere `runtime-settings.json`-Dateien werden feldweise eingelesen. Fehlende neue Felder setzen vorhandene Schalter, Ansicht oder Performancewerte nicht mehr auf Nullwerte zurück. ## Kombinationsregeln Innerhalb einer Dimension gilt ODER: ```text Kategorie = IT-Security ODER Netzwerk ``` Zwischen Kategorie und Quelle gilt UND: ```text (Kategorie = IT-Security ODER Netzwerk) UND (Quelle = GLPI Knowledge Base ODER internal-kb) ``` Verglichen wird exakt und ohne Beachtung der Groß-/Kleinschreibung. Die virtuellen Werte sind: ```text __uncategorized__ = ohne Kategorie __unsourced__ = ohne erkennbare Quelle ``` ## Welche Quelle wird verwendet? Die logische Quelle eines Wissensknotens wird in dieser Reihenfolge bestimmt: 1. `metadata.source` beziehungsweise das `source`-Feld des KB-Dokuments; 2. bei Webrecherche die Domain der URL, beispielsweise `learn.microsoft.com`; 3. als Rückfall der technische `origin`-Wert. Damit können produktive GLPI-Beiträge, lokale KB-Dateien, AI-Synthesis-Beiträge und einzelne Webdomains getrennt gesteuert werden. ## Lernen Der wirksame Lernfilter gilt jetzt für: - neue oder geänderte Embeddings; - lokale Fallback-Embeddings; - semantische Abfragen über `/api/query`; - sofortiges Lernen neuer AI-Synthesis-Artikel; - sofortiges Lernen akzeptierter Research-Evidence. Bereits vorhandene Vektoren außerhalb des Filters bleiben in SQLite gespeichert, werden aber bei Retrieval und neuem Lernen nicht verwendet. Eine spätere Filtererweiterung kann sie ohne erneute Berechnung wieder aktivieren. ## Anzeige Die Anzeige filtert zunächst ausschließlich `knowledge`, `ai-think` und `external`. Danach werden nur direkt angeschlossene Taxonomie-Nodes ergänzt: - `category`; - `source`; - `concept`. Semantische Kanten dürfen keine anders kategorisierten oder aus einer anderen Quelle stammenden Wissensartikel mehr in die Ansicht hineinziehen. Das gilt für Neural, Honeycomb und Constellation. Der Anzeige-Filter ist weiterhin eine Rendersteuerung und keine Zugriffskontrolle; `/api/graph` liefert den vollständigen Graphen. ## Thinking Der wirksame Thinking-Filter gilt jetzt für: - beide Nodes eines Relationskandidaten; - zusätzliche Quellen des Themenverbunds; - AI-Synthesis-Quellenauswahl; - wiederverwendete Research-Evidence; - SearXNG-Treffer der Relationsrecherche; - neu akzeptierte Volltextbelege der iterativen Artikelrecherche. Eine externe Quelle außerhalb des Thinking-Quellenfilters wird nicht als Beleg akzeptiert und nicht in die Artikelsynthese übernommen. ## WebUI Unter **FILTER** stehen nun sechs Listen zur Verfügung: - Kategorien: Lernen, Anzeige, Thinking; - Quellen: Lernen, Anzeige, Thinking. Die WebUI zeigt die wirksame Schnittmenge an. Optionen außerhalb der Environment-Obergrenze werden deaktiviert und als `durch ENV ausgeschlossen` markiert. ## APIs ```http GET /api/runtime-settings PUT /api/runtime-settings GET /api/categories GET /api/sources ```