230 lines
10 KiB
HTML
230 lines
10 KiB
HTML
{{template "kopf" .}}
|
||
|
||
{{$slug := .Project.Slug}}
|
||
{{$u := .Data.Summary}}
|
||
{{$gesamt := $u.Total}}
|
||
|
||
<div class="seitenkopf">
|
||
<div class="seitenkopf-titel">
|
||
<h1>Nutzung {{template "hilfelink" "mit-agenten-arbeiten#pruefen-ob-es-wirkt"}}</h1>
|
||
<span class="hilfe">Wird Munin in diesem Projekt benutzt — und schreiben die Agenten
|
||
vorhandenes Wissen fort, statt Neues daneben zu legen?</span>
|
||
</div>
|
||
</div>
|
||
|
||
{{/* ── Bestand ─────────────────────────────────────────────────────────── */}}
|
||
<div class="kennzahlen">
|
||
<div class="kennzahl">
|
||
<span class="kennzahl-wert">{{$u.Entries}}</span>
|
||
<span class="kennzahl-name">Einträge</span>
|
||
</div>
|
||
<div class="kennzahl">
|
||
<span class="kennzahl-wert">{{$u.CuratedPercent}} %</span>
|
||
<span class="kennzahl-name">kuratiert ({{$u.Curated}})</span>
|
||
</div>
|
||
<div class="kennzahl">
|
||
<span class="kennzahl-wert">{{$u.Untagged}}</span>
|
||
<span class="kennzahl-name">ohne Schlagwort</span>
|
||
</div>
|
||
<div class="kennzahl">
|
||
<span class="kennzahl-wert">{{if $u.LastUpdatedAt.IsZero}}—{{else}}{{datum $u.LastUpdatedAt}}{{end}}</span>
|
||
<span class="kennzahl-name">zuletzt geändert</span>
|
||
</div>
|
||
</div>
|
||
|
||
{{/* ── Zur Prüfung ─────────────────────────────────────────────────────── */}}
|
||
{{/* Steht oben, weil hier etwas zu tun ist. Ein Eintrag verschwindet von
|
||
selbst aus der Liste, sobald ihn jemand wieder als kuratiert markiert. */}}
|
||
{{if .Data.CuratedOverrides}}
|
||
<section class="abschnitt">
|
||
<h2>Zur Prüfung: kuratiert, dann von Agenten geändert</h2>
|
||
<span class="hilfe">Diese Einträge hatte ein Mensch geprüft. Danach hat ein Agent sie
|
||
mit Begründung geändert, dabei fiel die Markierung „kuratiert“ weg. Im Verlauf lässt
|
||
sich die Änderung mit dem geprüften Stand vergleichen. Stimmt sie, den Haken
|
||
„Kuratiert“ wieder setzen; sonst die alte Fassung wiederherstellen.</span>
|
||
<ul class="kompakt-liste">
|
||
{{range .Data.CuratedOverrides}}
|
||
<li>
|
||
<a href="/p/{{$slug}}/e/{{.Slug}}/versions">{{.Title}}</a>
|
||
<span class="hilfe">· {{.Actor}} · {{datum .At}}</span>
|
||
{{if .Reason}}<br><span class="hilfe">„{{.Reason}}“</span>{{end}}
|
||
</li>
|
||
{{end}}
|
||
</ul>
|
||
</section>
|
||
{{end}}
|
||
|
||
{{/* ── Schreibvorgänge ─────────────────────────────────────────────────── */}}
|
||
<section class="abschnitt">
|
||
<h2>Schreibvorgänge der letzten {{.Data.WindowDays}} Tage</h2>
|
||
<span class="hilfe">Menschen schreiben über die Weboberfläche, Agenten über MCP.
|
||
Wiederherstellen und Sammelbearbeitung zählen als Aktualisierung.</span>
|
||
|
||
{{if or $gesamt.Writes $gesamt.Deleted}}
|
||
<div class="tabelle-huelle">
|
||
<table class="tabelle">
|
||
<thead>
|
||
<tr>
|
||
<th>Wer</th>
|
||
<th class="zahl">neu angelegt</th>
|
||
<th class="zahl">aktualisiert</th>
|
||
<th class="zahl">gelöscht</th>
|
||
{{if $gesamt.Unknown}}<th class="zahl">ohne Angabe</th>{{end}}
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr>
|
||
<td>Agenten</td>
|
||
<td class="zahl">{{$u.Agent.Created}}</td>
|
||
<td class="zahl">{{$u.Agent.Updated}}</td>
|
||
<td class="zahl">{{$u.Agent.Deleted}}</td>
|
||
{{if $gesamt.Unknown}}<td class="zahl">{{$u.Agent.Unknown}}</td>{{end}}
|
||
</tr>
|
||
<tr>
|
||
<td>Menschen</td>
|
||
<td class="zahl">{{$u.Human.Created}}</td>
|
||
<td class="zahl">{{$u.Human.Updated}}</td>
|
||
<td class="zahl">{{$u.Human.Deleted}}</td>
|
||
{{if $gesamt.Unknown}}<td class="zahl">{{$u.Human.Unknown}}</td>{{end}}
|
||
</tr>
|
||
<tr class="summe">
|
||
<td>Zusammen</td>
|
||
<td class="zahl">{{$gesamt.Created}}</td>
|
||
<td class="zahl">{{$gesamt.Updated}}</td>
|
||
<td class="zahl">{{$gesamt.Deleted}}</td>
|
||
{{if $gesamt.Unknown}}<td class="zahl">{{$gesamt.Unknown}}</td>{{end}}
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
|
||
{{/* Der eine Wert, auf den es ankommt. Keine feste Schwelle "gut/schlecht":
|
||
Ein junges Projekt legt naturgemäß vor allem an. Wichtig ist, dass der
|
||
Anteil mit der Zeit steigt. */}}
|
||
{{if ge $u.UpdatePercent 0}}
|
||
<p><strong>{{$u.UpdatePercent}} %</strong> der Schreibvorgänge haben einen vorhandenen
|
||
Eintrag fortgeschrieben.
|
||
<span class="hilfe">Am Anfang legen Teams vor allem an. Steigt der Anteil mit der Zeit,
|
||
finden die Agenten vorhandenes Wissen. Bleibt er dauerhaft niedrig, lohnt ein Blick
|
||
auf die Einträge: Entstehen Dubletten unter leicht anderem Bezeichner?</span></p>
|
||
{{end}}
|
||
{{if $gesamt.Unknown}}
|
||
<p class="hilfe">„Ohne Angabe“ sind Schreibvorgänge aus der Zeit, bevor das Protokoll
|
||
zwischen Anlegen und Aktualisieren unterschied. Sie fallen nach und nach aus dem Zeitraum.</p>
|
||
{{end}}
|
||
{{else}}
|
||
<div class="leer">
|
||
<p>In den letzten {{.Data.WindowDays}} Tagen wurde nichts geschrieben.</p>
|
||
<p><a href="/hilfe/mcp-einrichten">Einen Agenten anbinden</a> ·
|
||
<a href="/hilfe/mit-agenten-arbeiten">So nutzen Agenten das Gedächtnis wirklich</a></p>
|
||
</div>
|
||
{{end}}
|
||
</section>
|
||
|
||
{{/* ── Suchen der Agenten ─────────────────────────────────────────────── */}}
|
||
{{$s := .Data.Searches}}
|
||
<section class="abschnitt">
|
||
<h2>Suchen der Agenten in den letzten {{.Data.WindowDays}} Tagen</h2>
|
||
<span class="hilfe">Was Agenten mit <code>recall</code> gesucht haben. Suchen ohne Treffer
|
||
zeigen entweder Wissen, das fehlt, oder Wissen, das unter anderen Wörtern dasteht.</span>
|
||
|
||
{{if $s.Total}}
|
||
<div class="kennzahlen">
|
||
<div class="kennzahl">
|
||
<span class="kennzahl-wert">{{$s.Total}}</span>
|
||
<span class="kennzahl-name">Suchen</span>
|
||
</div>
|
||
<div class="kennzahl">
|
||
<span class="kennzahl-wert">{{$s.EmptyPercent}} %</span>
|
||
<span class="kennzahl-name">ohne Treffer ({{$s.Empty}})</span>
|
||
</div>
|
||
<div class="kennzahl">
|
||
<span class="kennzahl-wert">{{$s.SynonymPercent}} %</span>
|
||
<span class="kennzahl-name">mit Synonymen</span>
|
||
</div>
|
||
</div>
|
||
|
||
{{if .Data.EmptySearches}}
|
||
<p><strong>Ohne Treffer</strong>, häufigste zuerst.
|
||
<span class="hilfe">Steht das Gesuchte unter anderen Wörtern da, hilft eine Zeile
|
||
„Auch gesucht als: …“ im Eintrag. Fehlt es, ist das ein Kandidat für einen
|
||
neuen Eintrag.</span></p>
|
||
<ul class="kompakt-liste">
|
||
{{range .Data.EmptySearches}}
|
||
<li>
|
||
„{{.Query}}“
|
||
{{if .Synonyms}}<span class="hilfe">(auch: {{.Synonyms}})</span>{{end}}
|
||
<span class="hilfe">· {{.Count}}× · zuletzt {{datum .Last}}</span>
|
||
</li>
|
||
{{end}}
|
||
</ul>
|
||
{{end}}
|
||
{{else}}
|
||
<p class="hilfe">In den letzten {{.Data.WindowDays}} Tagen hat kein Agent gesucht.</p>
|
||
{{end}}
|
||
</section>
|
||
|
||
{{/* ── Verweise ins Leere ─────────────────────────────────────────────── */}}
|
||
{{if .Data.Missing}}
|
||
<section class="abschnitt">
|
||
<h2>Verweise ins Leere</h2>
|
||
<span class="hilfe">Bezeichner, auf die mit <code>[[…]]</code> verwiesen wird, zu denen es
|
||
aber keinen Eintrag gibt. Oft Wissen, das jemand für wichtig hielt, aber noch niemand
|
||
aufgeschrieben hat — die meistgenannten zuerst.</span>
|
||
<ul class="kompakt-liste">
|
||
{{range .Data.Missing}}
|
||
<li>
|
||
<code>{{.Slug}}</code>
|
||
<span class="hilfe">· {{.Count}}×</span>
|
||
{{if $.Session.CanWrite}}· <a href="/p/{{$slug}}/new?slug={{.Slug}}">anlegen</a>{{end}}
|
||
</li>
|
||
{{end}}
|
||
</ul>
|
||
{{if .Data.MissingMore}}<p class="hilfe">… und {{.Data.MissingMore}} weitere. Der
|
||
<a href="/p/{{$slug}}/graph">Graph</a> zeigt sie alle gestrichelt.</p>{{end}}
|
||
</section>
|
||
{{end}}
|
||
|
||
{{/* ── Ohne Schlagwort ─────────────────────────────────────────────────── */}}
|
||
{{if .Data.Untagged}}
|
||
<section class="abschnitt">
|
||
<h2>Einträge ohne Schlagwort</h2>
|
||
<span class="hilfe">Schlagworte helfen beim Filtern, Menschen wie Agenten.
|
||
Mit der Sammelbearbeitung in der Eintragsliste lassen sie sich schnell nachtragen.</span>
|
||
<ul class="kompakt-liste">
|
||
{{range .Data.Untagged}}
|
||
<li><a href="/p/{{$slug}}/e/{{.Slug}}">{{.Title}}</a> <code class="hilfe">{{.Slug}}</code></li>
|
||
{{end}}
|
||
</ul>
|
||
{{if gt $u.Untagged (len .Data.Untagged)}}
|
||
<p class="hilfe">Die {{len .Data.Untagged}} zuletzt geänderten von {{$u.Untagged}}.</p>
|
||
{{end}}
|
||
</section>
|
||
{{end}}
|
||
|
||
{{/* ── Zugänge ─────────────────────────────────────────────────────────── */}}
|
||
<section class="abschnitt">
|
||
<h2>Zuletzt aktive Zugänge</h2>
|
||
{{if .Data.Keys}}
|
||
<div class="tabelle-huelle">
|
||
<table class="tabelle">
|
||
<thead>
|
||
<tr><th>Zugang</th><th>Rolle</th><th>Zuletzt benutzt</th></tr>
|
||
</thead>
|
||
<tbody>
|
||
{{range .Data.Keys}}
|
||
<tr>
|
||
<td>{{.Name}}</td>
|
||
<td><span class="marke">{{.Role}}</span></td>
|
||
<td class="hilfe">{{datum .LastUsedAt}}</td>
|
||
</tr>
|
||
{{end}}
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
{{else}}
|
||
<p class="hilfe">Noch kein Zugang dieses Projekts wurde benutzt.</p>
|
||
{{end}}
|
||
</section>
|
||
|
||
{{template "fuss" .}}
|