Wiki¶
Das Wiki ist die zentrale Ablage für „wie wir Dinge tun", Runbooks, Service-Dokumentation, Notiz-Sammlungen.
Konzept¶
- Ordner (Kategorien) gruppieren Artikel — jeder Mandant hat seine eigenen. Wer Zugriff auf mehrere Mandanten hat, schaltet im Wiki zwischen ihnen um; ein Artikel lässt sich nur in einen Ordner des eigenen Mandanten legen.
- Artikel in Markdown, pro Artikel eine Sprache (Default Deutsch) — mit Volltext-Index + Vector-Embeddings
- Service-Linking — ein Artikel kann an konkrete Profile-Checks, einen Check-Typ oder einzelne Hosts hängen
- AI-RAG-Quelle — der AI-Chat zieht als erste Quelle aus dem Wiki
Artikel anlegen¶
/wiki → Neuer Artikel.
| Feld | Bedeutung |
|---|---|
| Titel | Pflicht |
| Kategorie | aus Liste oder neu anlegen |
| Tags | optional |
| Inhalt | Markdown, mit Toolbar und Live-Preview |
| Service-Verknüpfungen | n:m mit Profile-Checks / Check-Typen / Hosts |
Editor-Toolbar: H1/H2/H3, Bold, Italic, Code, Link, Listen, Tabelle, Code-Block.
Service-Linking¶
Ein Artikel lässt sich verknüpfen mit:
- einem konkreten Profile-Check (z. B. genau dieser SNMP-Check auf diesem Profil)
- einem Check-Typ generell (z. B. alle
agent_disk-Checks, egal auf welchem Profil) - einem einzelnen Host (für Eigenheiten, die nur für eine bestimmte Maschine gelten)
Wirkung: Auf der Host-Detail-Seite bekommt der betroffene Check über den Quick-Lookup Zugriff auf die verknüpften Artikel; die AI-Service-Analyse priorisiert verknüpfte Artikel im RAG-Kontext.
Beispiel: Ein Artikel „Disk-Voll-Lauf-Run-Book" wird an den Check-Typ agent_disk gebunden — sobald ein Disk-Voll-Alert kommt, ist das Run-Book direkt erreichbar, unabhängig vom konkreten Host.
Suche¶
/wiki durchsucht Titel + Inhalt über drei kombinierte Methoden:
- Volltext-Suche (deutscher FTS-Index)
- ILIKE-Fallback für partielle Strings (z. B. „backup" findet auch „backup-script")
- Vector-Suche (pgvector + Embeddings) für semantisch ähnliche Inhalte
Embeddings¶
Beim Speichern eines Artikels wird im Hintergrund ein Embedding berechnet (asynchron, blockiert das Speichern nicht):
- Modell: das unter AI-Provider konfigurierte Embedding-Modell (z. B.
nomic-embed-textüber Ollama) - Speicherung:
wiki_articles.embedding, als unbeschränktervector-Spaltentyp — passt sich der Dimension des jeweils konfigurierten Embedding-Modells an (verschiedene Modelle liefern unterschiedliche Vektorlängen, z. B. 768 beinomic-embed-text)
Fehlende Embeddings (z. B. nach einem Bulk-Import oder wenn beim Speichern kein Provider konfiguriert war) werden von einem Hintergrund-Job periodisch nachgeholt.
asyncpg-Cast für Vector
Bei eigenen SQL-Queries mit pgvector: CAST(:emb AS vector) statt ::vector benutzen — asyncpg interpretiert :: als Bind-Parameter und macht den Cast unmöglich.
Quick-Lookup auf Service-Detail¶
Auf der Service-Zeile eines Hosts steht ein schneller Wiki-Vorschlag zur Verfügung — ohne LLM-Aufruf, rein deterministisch und in der Regel unter 100 ms:
- Direkter Treffer über verknüpfte Artikel (Check-Typ, Profile-Check oder Host)
- Fallback: Volltext-Suche über den Service-Namen
Die Vorschläge lassen sich pro User über die Einstellungen ausblenden, falls sie im Weg sind.
Soft-Delete¶
Artikel werden soft-deleted (siehe Papierkorb) — gelöscht heißt erstmal versteckt, nach 30 Tagen physisch weg. Service-Verknüpfungen bleiben beim Soft-Delete erhalten und sind nach einem Restore wieder vollständig da.
Deep-Links¶
| URL | Wirkung |
|---|---|
/wiki |
Übersicht |
/wiki?article=<id> |
Artikel direkt öffnen |
/wiki?new=1 |
Neuer Artikel mit leerem Modal |
Permissions¶
| Permission | Wirkung |
|---|---|
wiki.view |
Artikel sehen |
wiki.edit |
Bearbeiten |
wiki.create |
Neue anlegen |
wiki.delete |
Soft-Delete |
Endgültiges Löschen aus dem Papierkorb läuft über die allgemeinen Papierkorb-Permissions, nicht über eine eigene Wiki-Permission.
Anschluss¶
- AI-Chat & Analyse — Wiki als RAG-Quelle
- AI-Provider einrichten — wofür das Embedding-Modell gebraucht wird