feat(stammdaten): Mitarbeiter, Abteilungen und Geraete
Die Stammdaten, an denen die Historie haengt. Personen werden deaktiviert, Geraete und Abteilungen archiviert — geloescht wird nichts, woran ein Lauf haengen kann. - Mitarbeiterliste mit Suche ueber Anzeigename, Mail, UPN und sAMAccountName, Filter nach Abteilung, standardmaessig nur aktive; die Suche ist ein eigenes Bauteil, weil #013 und #014 sie wieder brauchen - Personenseite mit Stammdaten, Geraeten, Vorgesetztem; was aus dem Verzeichnis kommt, ist gesperrt — der naechste Abgleich wuerde es ohnehin zurueckdrehen - Abteilungen unter Admin: Ziel-OU, Standardgruppen, Mail-Domain, dazu die Namen, die bei Personen vorkommen, aber nicht gepflegt sind - Geraete mit Suche ueber Hostname, Bezeichnung, Seriennummer und Tag-Code; CSV-Import mit einem Ergebnis je Zeile - Neues Recht mitarbeiterBearbeiten; die Seitenleiste fuehrt Personen und Geraete unter einem Eintrag, im Modus Dienstleistung anders beschriftet Der unabhaengige Review fand zwei Blocker. Der schwerere meldete Erfolg: ein nicht geschlossenes Anfuehrungszeichen verschluckte im CSV-Import alle Folgezeilen bis zum naechsten `"`, und der Import sagte „3 von 3 Zeilen angelegt". Ein Wert reicht jetzt nicht mehr ueber die Zeile hinaus — fuer Hostnamen und Seriennummern ist ein Umbruch praktisch immer ein vergessenes Anfuehrungszeichen, und so endet der Schaden an seiner Zeile. Der zweite: ungepflegte Abteilungen wurden ueber alle Kunden hinweg gruppiert. Dazu sieben weitere Befunde, alle behoben — darunter eine Besitzerauswahl, die Personen fremder Kunden anbot, und ein Techniker, der ein Geraet endgueltig loeschen konnte. 610 Tests gruen, 18 E2E-Ablaeufe gegen den gebauten Stand. Schliesst #011 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
e3d80e5982
commit
86d55917f9
@@ -98,6 +98,33 @@ const SEITEN: readonly Seite[] = [
|
||||
await tab.waitForURL(/\/vorlagen\/version\/[^/]+$/);
|
||||
},
|
||||
},
|
||||
{ name: "mitarbeiter-liste", pfad: "/mitarbeiter" },
|
||||
{
|
||||
name: "mitarbeiter-seite",
|
||||
pfad: "/mitarbeiter",
|
||||
vorbereiten: async (tab) => {
|
||||
await tab
|
||||
.getByRole("link", { name: /Maria Huber/ })
|
||||
.first()
|
||||
.click();
|
||||
await tab.waitForURL(/\/mitarbeiter\/[^/]+$/);
|
||||
},
|
||||
},
|
||||
{
|
||||
// Die gesperrten Stammdaten einer Person aus dem Verzeichnis – der Fall,
|
||||
// den man sonst erst nach dem ersten LDAP-Abgleich zu sehen bekaeme.
|
||||
name: "mitarbeiter-verzeichnis",
|
||||
pfad: "/mitarbeiter",
|
||||
vorbereiten: async (tab) => {
|
||||
await tab
|
||||
.getByRole("link", { name: /Katrin Winter/ })
|
||||
.first()
|
||||
.click();
|
||||
await tab.waitForURL(/\/mitarbeiter\/[^/]+$/);
|
||||
},
|
||||
},
|
||||
{ name: "geraete-liste", pfad: "/geraete" },
|
||||
{ name: "abteilungen", pfad: "/admin/abteilungen" },
|
||||
];
|
||||
|
||||
function argument(name: string): string | undefined {
|
||||
|
||||
Reference in New Issue
Block a user