feat(laeufe): Service, Abarbeitung, Kommentare und Archivschutz #27

Merged
florian.wilde merged 1 commits from feat/13-laeufe-abarbeitung into main 2026-09-25 16:56:34 +00:00
Owner

Der Meilenstein M8 aus dem Auftrag: ein Lauf wird vorbereitet, abgearbeitet, abgeschlossen und archiviert.

Was drin ist

  • Dienste: anlegen (auch als OFFEN ohne Start), zur Bearbeitung öffnen, Schrittergebnisse einzeln setzen, „Abschnitt trifft nicht zu“, abschließen, archivieren, zurückholen (nur ADMIN), Kommentare, „Mit AD-Konto verknüpfen“.
  • Archiv-Schreibschutz an genau einer Stelle, gerufen vor jeder Änderung an Kopfdaten, Schrittergebnis und Kommentar. Abgeschlossen bleibt änderbar, archiviert nicht.
  • Abarbeitungsansicht: nummerierte, einklappbare Abschnitte, Fortschritt, Befehlsblöcke mit Kopier-Knopf, Kompakt/Ausführlich, Aktualisierung alle zehn Sekunden.
  • Start-Dialog mit Vorbelegung aus der Adresse und Namensvorschlägen für upn, sam, mail.

Die beiden Blocker aus dem unabhängigen Review

  1. Ein Befehl konnte zwei verschiedene Passwörter tragen — je Vorkommen entstand ein neues. Das Konto hätte A bekommen und der Benutzer B erfahren, und weil nichts gespeichert wird, wäre A für immer weg. Jetzt: ein Passwort je Seitenaufbau, für alle Befehle des Laufs. Ein Test meines Vorgängerstands hatte das falsche Verhalten sogar festgeschrieben.
  2. „Nicht zutreffend“ ließ sich nicht zurücknehmen. Der Klick setzte den Zustand nur im Browser zurück; auf dem Bildschirm war nichts mehr gewählt, in der Datenbank stand weiter der alte Zustand.

Dazu zwölf Befunde und acht Anmerkungen, alle abgearbeitet — darunter Bearbeiter fremder Kunden im Start-Dialog, Kommentare ohne Aktualisierung im zweiten Browser und eine API-Anfrage ohne Anmeldung, die auf die Anmeldeseite umgelenkt statt mit 401 beantwortet wurde.

Prüfstand

pnpm lint, typecheck, format:pruefen, pruefe:doku grün · 879 Tests (vorher 810) · 37 Ende-zu-Ende-Tests gegen den gebauten Stand · Screenshots in docs/screenshots/m8/.

Offen und nach #14 verschoben: ein Gerät direkt im Start-Dialog anlegen oder scannen — das hängt am QR-Einstieg.

Closes #13

🤖 Generated with Claude Code

Der Meilenstein M8 aus dem Auftrag: ein Lauf wird vorbereitet, abgearbeitet, abgeschlossen und archiviert. ## Was drin ist - **Dienste**: anlegen (auch als `OFFEN` ohne Start), zur Bearbeitung öffnen, Schrittergebnisse einzeln setzen, „Abschnitt trifft nicht zu“, abschließen, archivieren, zurückholen (nur `ADMIN`), Kommentare, „Mit AD-Konto verknüpfen“. - **Archiv-Schreibschutz** an genau einer Stelle, gerufen vor jeder Änderung an Kopfdaten, `Schrittergebnis` und `Kommentar`. Abgeschlossen bleibt änderbar, archiviert nicht. - **Abarbeitungsansicht**: nummerierte, einklappbare Abschnitte, Fortschritt, Befehlsblöcke mit Kopier-Knopf, Kompakt/Ausführlich, Aktualisierung alle zehn Sekunden. - **Start-Dialog** mit Vorbelegung aus der Adresse und Namensvorschlägen für `upn`, `sam`, `mail`. ## Die beiden Blocker aus dem unabhängigen Review 1. **Ein Befehl konnte zwei verschiedene Passwörter tragen** — je Vorkommen entstand ein neues. Das Konto hätte A bekommen und der Benutzer B erfahren, und weil nichts gespeichert wird, wäre A für immer weg. Jetzt: ein Passwort je Seitenaufbau, für alle Befehle des Laufs. Ein Test meines Vorgängerstands hatte das falsche Verhalten sogar festgeschrieben. 2. **„Nicht zutreffend“ ließ sich nicht zurücknehmen.** Der Klick setzte den Zustand nur im Browser zurück; auf dem Bildschirm war nichts mehr gewählt, in der Datenbank stand weiter der alte Zustand. Dazu zwölf Befunde und acht Anmerkungen, alle abgearbeitet — darunter Bearbeiter fremder Kunden im Start-Dialog, Kommentare ohne Aktualisierung im zweiten Browser und eine API-Anfrage ohne Anmeldung, die auf die Anmeldeseite umgelenkt statt mit `401` beantwortet wurde. ## Prüfstand `pnpm lint`, `typecheck`, `format:pruefen`, `pruefe:doku` grün · **879 Tests** (vorher 810) · **37 Ende-zu-Ende-Tests** gegen den gebauten Stand · Screenshots in `docs/screenshots/m8/`. Offen und nach #14 verschoben: ein Gerät direkt im Start-Dialog anlegen oder scannen — das hängt am QR-Einstieg. Closes #13 🤖 Generated with [Claude Code](https://claude.com/claude-code)
florian.wilde added 1 commit 2026-09-25 16:56:24 +00:00
feat(laeufe): Service, Abarbeitung, Kommentare und Archivschutz
Prüfung / pruefung (push) Canceled after 0s
Prüfung / pruefung (pull_request) Canceled after 0s
Prüfung / e2e (push) Canceled after 0s
Prüfung / e2e (pull_request) Canceled after 0s
ed6e6b81eb
Ein Lauf wird vorbereitet, abgearbeitet, abgeschlossen und archiviert. Der
Archiv-Schreibschutz sitzt in genau einer Funktion und wird vor jeder Aenderung
an Kopfdaten, Schrittergebnis und Kommentar gerufen; abgeschlossen bleibt
aenderbar, archiviert nicht.

Die Abarbeitungsansicht speichert jeden Schritt einzeln, frischt sich alle zehn
Sekunden auf und pausiert im Hintergrund. Sie traegt in der Polling-Antwort
keine Befehle und laedt sich auch nicht von selbst neu, solange ein generiertes
Passwort auf der Seite steht: beides tauschte es dem Techniker zwischen Lesen
und Einfuegen aus.

Der unabhaengige Review fand zwei Blocker: ein Befehl konnte zwei verschiedene
Passwoerter tragen (Konto bekommt A, Benutzer erfaehrt B), und „nicht
zutreffend“ liess sich nicht zuruecknehmen, waehrend die Oberflaeche
behauptete, nichts sei gewaehlt. Beides behoben und in Tests festgehalten.

Closes #13

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
florian.wilde merged commit c78a6ac1af into main 2026-09-25 16:56:34 +00:00
florian.wilde deleted branch feat/13-laeufe-abarbeitung 2026-09-25 16:56:34 +00:00
Sign in to join this conversation.