/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
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.
Quelle: docs/issues/025-zuweisungsmatrix.md – dort wird dieses Issue gepflegt.
## Ziel
Matrix Schlüssel × Host.
## Aufgaben
- [x] `/zuweisungen` ersetzt die Platzhalterseite: Matrix aktive Schlüssel (Zeilen) × nicht archivierte Hosts (Spalten), jede Rolle darf lesen
- [x] Zelle: „P“ direkt, „P·G“ über Hostgruppe, „K“ Private Key; Zustand als Punkt + Kurztext, voller Text in `title` und für Screenreader; Zielbenutzer mono
- [x] Filter per GET: Hostgruppe, Kategorie, Person, Suche über Schlüssel- und Hostnamen, „nur Zeilen/Spalten mit Zuweisungen“
- [x] Eigener Scrollbereich mit sticky Kopfzeile und erster Spalte; unter `md` eine Liste je Schlüssel
- [x] 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“
- [x] Kopf: Zähler (Schlüssel, Hosts, Zuweisungen, nicht synchron) und CSV-Export `/api/zuweisungen.csv`
- [x] Reine Matrix-Funktion in `src/lib/zuweisungsmatrix.ts`, CSV-Helfer in `src/lib/csv.ts`, Query in `src/server/queries/zuweisungen.ts`
- [x] Tests: `tests/zuweisungsmatrix.test.ts` (rein), `tests/zuweisungen.test.ts` (Query + CSV-Route), E2E `tests/e2e/zuweisungen.spec.ts`
- [x] Screenshots `zuweisungen-desktop.png` / `zuweisungen-mobil.png`
## Akzeptanzkriterien
- [x] Gruppen-Zuweisungen erscheinen auf jedem Mitglied und sind von direkten unterscheidbar
- [x] Zustand nie nur über Farbe
- [x] Seite scrollt bei 390 px nicht horizontal (Screenshot-Skript prüft das)
- [x] Leser sehen die Matrix, aber weder Zuweisen noch Entfernen
- [x] CSV mit den Spalten Schlüssel, Fingerprint, Host, Zielbenutzer, Art, Über Gruppe, Optionen, Zustand; Formelbeginne `= + - @` mit `'` entschärft
- [x] 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.
---
Quelle: `docs/issues/025-zuweisungsmatrix.md` – dort wird dieses Issue gepflegt.
florian.wilde
added this to the v0.4.0 milestone 2026-10-12 15:12:47 +00:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Ziel
Matrix Schlüssel × Host.
Aufgaben
/zuweisungenersetzt die Platzhalterseite: Matrix aktive Schlüssel (Zeilen) × nicht archivierte Hosts (Spalten), jede Rolle darf lesentitleund für Screenreader; Zielbenutzer monomdeine Liste je SchlüsselpublicKeyAusrollen; Link „Zum Dry-Run“/api/zuweisungen.csvsrc/lib/zuweisungsmatrix.ts, CSV-Helfer insrc/lib/csv.ts, Query insrc/server/queries/zuweisungen.tstests/zuweisungsmatrix.test.ts(rein),tests/zuweisungen.test.ts(Query + CSV-Route), E2Etests/e2e/zuweisungen.spec.tszuweisungen-desktop.png/zuweisungen-mobil.pngAkzeptanzkriterien
= + - @mit'entschärftrechtErforderlich("lesen")selbst (tests/zugang.test.tsgrün)Abhängigkeiten
#016
Notizen / Entscheidungen
weiter über den Dry-Run der Schlüsselseite (
AusrollenPanel).Spalten; trifft er beides, beides. So zeigt „srv-pve“ alle Schlüssel auf diesen Hosts statt
einer leeren Matrix.
dasselbe, was der CSV-Export als Zeilen liefert. „Nicht synchron“ ist alles außer
AUSGEROLLT.als „Pfad: …“ in der Spalte Optionen. Der Export nimmt dieselben Filter wie die Seite.
PublicZuweisenFormularhat eine optionalevorauswahl;VerwendungsZustandexportiert seineDarstellungstabelle (
ZUSTAND_ANZEIGE), damit die Zelle dieselben Punkte nutzt.Quelle:
docs/issues/025-zuweisungsmatrix.md– dort wird dieses Issue gepflegt.