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>
3.2 KiB
3.2 KiB
#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
/zuweisungenersetzt 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
titleund 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
mdeine 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 insrc/lib/csv.ts, Query insrc/server/queries/zuweisungen.ts - Tests:
tests/zuweisungsmatrix.test.ts(rein),tests/zuweisungen.test.ts(Query + CSV-Route), E2Etests/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.tsgrü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.
PublicZuweisenFormularhat eine optionalevorauswahl;VerwendungsZustandexportiert seine Darstellungstabelle (ZUSTAND_ANZEIGE), damit die Zelle dieselben Punkte nutzt.