feat(platzhalter): Aufloesung, Namensregeln und Shell-Maskierung (#26)
This commit was merged in pull request #26.
This commit is contained in:
+55
-2
@@ -14,11 +14,12 @@ als Unterpunkte mit Aufgabe und Dauer.
|
||||
| #009 | M4 – Vorlagen-Versionierung im Service | 1 h 20 min |
|
||||
| #010 | M5 – Vorlagen-Editor | 2 h 10 min |
|
||||
| #011 | M6 – Mitarbeiter, Abteilungen, Geräte | 2 h 15 min |
|
||||
| | **Summe** | **11 h 15 min** |
|
||||
| #012 | M7 – Platzhalter, Namensregeln, Escaping | 2 h 30 min |
|
||||
| | **Summe** | **13 h 45 min** |
|
||||
|
||||
| Meilenstein | Tatsächlich | Status |
|
||||
|---|---|---|
|
||||
| v0.1.0 | 11 h 15 min | in Arbeit |
|
||||
| v0.1.0 | 13 h 45 min | in Arbeit |
|
||||
|
||||
---
|
||||
|
||||
@@ -452,3 +453,55 @@ als Unterpunkte mit Aufgabe und Dauer.
|
||||
|
||||
- #012 Platzhalter, Namensregeln und Escaping: die reine Service-Schicht, aus der die fertigen
|
||||
PowerShell-Befehle entstehen — mit dichter Testabdeckung, denn hier darf nichts schiefgehen.
|
||||
|
||||
---
|
||||
|
||||
## 2026-09-25 · Sitzung 8 · 12:55–15:35
|
||||
|
||||
**Issue:** #012 (M7)
|
||||
**Version:** 0.1.0
|
||||
|
||||
### Erledigt
|
||||
|
||||
- `src/lib/shell.ts` (Sub-Agent): Maskierung je Shell, Skript-Kopie mit Kommentarzeilen
|
||||
- `src/lib/namensregeln.ts` (Sub-Agent): Transliteration, `{v}`, `{nnn}`, `{kundenkuerzel}`,
|
||||
Grenzen für `sam` und `hostname`
|
||||
- `src/lib/passwort.ts`, `src/lib/platzhalter-werte.ts`, `src/server/services/platzhalter.ts` und
|
||||
`src/server/services/befehle.ts`: das generierte Passwort, das Ersetzen und die fertigen Befehle
|
||||
- Unabhängiger Review: **drei Blocker**, sieben weitere Befunde, alle abgearbeitet
|
||||
- **810 Tests** grün (vorher 797 mit einem stillen Übersprung)
|
||||
|
||||
### Entscheidungen
|
||||
|
||||
- **PowerShell wird wirklich gegen PowerShell geprüft.** Auf dieser Maschine gibt es kein `pwsh`,
|
||||
also nimmt der Test das Container-Abbild — und in CI bricht er ab, statt sich zu überspringen.
|
||||
Der schwerste Befund des Meilensteins wäre ohne das nie aufgefallen.
|
||||
- **Typografische Anführungszeichen werden auf ihre ASCII-Form gebracht und dann maskiert.** Als
|
||||
Text durchreichen lassen sie sich nicht: PowerShell liest sie ohnehin als Begrenzer. Lieber ein
|
||||
Zeichen, das anders aussieht als gedacht, als ein Befehl, der etwas anderes tut als er liest.
|
||||
- **Ein Platzhalter außerhalb von Anführungszeichen wird abgewiesen**, nicht gefüllt. Die
|
||||
Maskierung kann daraus kein Argument machen, und ein halb maskierter Befehl zum Kopieren wäre die
|
||||
gefährlichste aller Antworten.
|
||||
- **Gesperrt sind fünf Variablennamen, nicht alle eingebauten.** `techniker`, `datum`, `kunde`,
|
||||
`kundenkuerzel` und `generiertes_passwort` machen eine Aussage über wer, wann und für wen. `upn`,
|
||||
`sam` und `mail` bleiben frei — beim Onboarding gibt es die Person im Verzeichnis noch nicht.
|
||||
- **Ein `sam` hält drei Stellen frei.** Ein einmal notierter Anmeldename muss auch morgen aus der
|
||||
Regel herausfallen, wenn ein zweiter Träger desselben Namens dazukommt.
|
||||
|
||||
### Probleme
|
||||
|
||||
- **Ich bin in genau die Falle getappt, die ich in #010 repariert habe:** `$'` als Rückverweis in
|
||||
`String.replaceAll`. Gefunden hat es mein eigener Test gegen echtes Bash — Lesen hätte es nicht
|
||||
gefunden.
|
||||
- **Meine erste HTML-Maskierung war doppelt**, weil ich vergessen hatte, dass React Textknoten
|
||||
selbst maskiert. Aufgefallen beim Nachdenken über den Test, nicht beim Schreiben des Codes.
|
||||
- **Der Review hat sich PowerShell in einem Container geholt.** Das ist der Unterschied zwischen
|
||||
„nach bestem Wissen richtig“ und „gemessen“ — und der Unterschied war hier eine
|
||||
Codeausführung auf dem Domänencontroller.
|
||||
- **Vierter Meilenstein in Folge mit einem Kommentar, der ins Leere zeigt:** ein Testkommentar
|
||||
verwies auf einen Beweis in einer anderen Datei, den es dort nicht gab.
|
||||
|
||||
### Nächster Schritt
|
||||
|
||||
- #013 Läufe: Service und Abarbeitung — Lauf anlegen, abarbeiten, abschließen, archivieren, mit
|
||||
der Abarbeitungsansicht am Handy.
|
||||
|
||||
Reference in New Issue
Block a user