munin/templates/nutzung.html

236 lines
11 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{{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>
{{/* Veraltet = seit über einem Jahr unverändert. Verlinkt auf die
gefilterte Liste, dort lässt sich gleich aufräumen. */}}
<div class="kennzahl">
<span class="kennzahl-wert">{{if .Data.Stale}}<a href="/p/{{.Project.Slug}}/?veraltet=1">{{.Data.Stale}}</a>{{else}}0{{end}}</span>
<span class="kennzahl-name">veraltet (über ein Jahr)</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" .}}