Files
sshkeyvault/docs/issues/025-zuweisungsmatrix.md
florian.wildeandClaude Opus 5.5 a47cae4082 feat(zuweisungen): Matrix Schluessel x Host mit CSV-Export (#025)
Bisher liess sich nur je Schluessel oder je Host nachsehen, wo ein Key
verwaltet ist. Die Matrix zeigt das auf einen Blick, loest
Hostgruppen-Zuweisungen je Mitglied auf (P vs. P·G) und macht nicht
synchrone Zustaende ohne Farbe erkennbar.

Die Matrix plant nur: Zuweisen und Entfernen laufen ueber die
vorhandenen Aktionen, ausgerollt wird weiter per Dry-Run auf der
Schluesselseite. Der Aufbau ist eine reine Funktion in src/lib, damit
Seite und CSV-Export garantiert dasselbe zeigen und die
Gruppenaufloesung ohne Datenbank testbar ist. Der CSV-Export entschaerft
Formelbeginne, weil Schluesselnamen frei waehlbar sind und Excel sie
sonst ausfuehren wuerde.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 13:05:12 +02:00

3.2 KiB
Raw Permalink Blame History

#025 Zuweisungsmatrix

Status: erledigt Meilenstein: v0.4.0 Labels: ui Geschätzt: 2 h Tatsächlich: 0,5 h

Ziel

Matrix Schlüssel × Host.

Aufgaben

  • /zuweisungen ersetzt die Platzhalterseite: Matrix aktive Schlüssel (Zeilen) × nicht archivierte Hosts (Spalten), jede Rolle darf lesen
  • Zelle: „P“ direkt, „P·G“ über Hostgruppe, „K“ Private Key; Zustand als Punkt + Kurztext, voller Text in title und für Screenreader; Zielbenutzer mono
  • Filter per GET: Hostgruppe, Kategorie, Person, Suche über Schlüssel- und Hostnamen, „nur Zeilen/Spalten mit Zuweisungen“
  • Eigener Scrollbereich mit sticky Kopfzeile und erster Spalte; unter md eine Liste je Schlüssel
  • Zell-Dialog: Verwendungen mit Zustand, Optionen/Pfad, Links zu Schlüssel und Host; „Public Key zuweisen“ (vorhandenes Formular mit Vorauswahl) und „Entfernen“ für publicKeyAusrollen; Link „Zum Dry-Run“
  • Kopf: Zähler (Schlüssel, Hosts, Zuweisungen, nicht synchron) und CSV-Export /api/zuweisungen.csv
  • Reine Matrix-Funktion in src/lib/zuweisungsmatrix.ts, CSV-Helfer in src/lib/csv.ts, Query in src/server/queries/zuweisungen.ts
  • Tests: tests/zuweisungsmatrix.test.ts (rein), tests/zuweisungen.test.ts (Query + CSV-Route), E2E tests/e2e/zuweisungen.spec.ts
  • Screenshots zuweisungen-desktop.png / zuweisungen-mobil.png

Akzeptanzkriterien

  • Gruppen-Zuweisungen erscheinen auf jedem Mitglied und sind von direkten unterscheidbar
  • Zustand nie nur über Farbe
  • Seite scrollt bei 390 px nicht horizontal (Screenshot-Skript prüft das)
  • Leser sehen die Matrix, aber weder Zuweisen noch Entfernen
  • CSV mit den Spalten Schlüssel, Fingerprint, Host, Zielbenutzer, Art, Über Gruppe, Optionen, Zustand; Formelbeginne = + - @ mit ' entschärft
  • Route Handler prüft rechtErforderlich("lesen") selbst (tests/zugang.test.ts grün)

Abhängigkeiten

#016

Notizen / Entscheidungen

  • Die Matrix plant nur: Zuweisen und Entfernen nutzen die vorhandenen Aktionen, ausgerollt wird weiter über den Dry-Run der Schlüsselseite (AusrollenPanel).
  • Suche: trifft der Begriff Schlüssel, werden die Zeilen eingeschränkt; trifft er Hosts, die Spalten; trifft er beides, beides. So zeigt „srv-pve“ alle Schlüssel auf diesen Hosts statt einer leeren Matrix.
  • Zähler „Zuweisungen“ zählt Zelleneinträge, eine Gruppen-Zuweisung also einmal je Mitglied – dasselbe, was der CSV-Export als Zeilen liefert. „Nicht synchron“ ist alles außer AUSGEROLLT.
  • Zellenzustand ist der dringendste der Einträge (Fehler > Drift > entfernen > geplant > synchron).
  • CSV: Semikolon, UTF-8-BOM und CRLF für ein deutsches Excel; bei Private Keys steht der Pfad als „Pfad: …“ in der Spalte Optionen. Der Export nimmt dieselben Filter wie die Seite.
  • Deployment-Keys erscheinen als Zeilen, sind aber nicht zuweisbar (verwaltet sshkv selbst).
  • Entfernen einer Gruppen-Zuweisung aus einer Zelle gilt für die ganze Gruppe; der Dialog sagt das.
  • PublicZuweisenFormular hat eine optionale vorauswahl; VerwendungsZustand exportiert seine Darstellungstabelle (ZUSTAND_ANZEIGE), damit die Zelle dieselben Punkte nutzt.