Phase 9 abgeschlossen: Übersicht, Beobachtungsliste, helles Thema, Messung
Prüfung / Lint, Typen, Tests (push) Canceled after 0s
Prüfung / Images bauen (pdf) (push) Canceled after 0s
Prüfung / Images bauen (web) (push) Canceled after 0s
Prüfung / Images bauen (worker) (push) Canceled after 0s
Images / bauen (pdf, docker/pdf.Dockerfile) (push) Canceled after 0s
Images / bauen (web, docker/web.Dockerfile) (push) Canceled after 0s
Images / bauen (worker, docker/worker.Dockerfile) (push) Canceled after 0s
Prüfung / Lint, Typen, Tests (push) Canceled after 0s
Prüfung / Images bauen (pdf) (push) Canceled after 0s
Prüfung / Images bauen (web) (push) Canceled after 0s
Prüfung / Images bauen (worker) (push) Canceled after 0s
Images / bauen (pdf, docker/pdf.Dockerfile) (push) Canceled after 0s
Images / bauen (web, docker/web.Dockerfile) (push) Canceled after 0s
Images / bauen (worker, docker/worker.Dockerfile) (push) Canceled after 0s
Die Übersicht beantwortet vier Fragen, die man morgens hat: woran arbeite ich,
was ist fällig, wo hat jemand geschrieben, was hat sich getan. Jede Liste
läuft durch visibleCaseWhere — das ist der Ort, an dem eine unachtsame
Abfrage am ehesten eine Akte verrät. Ein Test prüft jede einzeln gegen eine zu
hoch eingestufte Akte. Der bisherige Inhalt ("Dein Zugang") steht jetzt unter
/zugang.
Beobachten ist eine Merkliste, kein Recht: nur was sichtbar ist, lässt sich
merken, und steigt eine Akte später über die eigene Stufe, verschwindet sie
aus der Liste, ohne dass jemand aufräumt.
Das helle Thema tauscht nur die semantische Ebene; die Grundpalette bleibt.
Die Klassifizierungsfarben sind für hellen Grund eine Spur dunkler, im Farbton
aber dieselben — eine Stufe muss in beiden Themen wiedererkennbar sein. Drei
Zustände, "wie das System" ist der Auslieferungszustand, und ein Skript im
Kopf setzt die Wahl, bevor das erste Mal gemalt wird.
Die Messung misst nicht den Nutzer. web-vitals schickt Zahlen und das
Routenmuster, keine Kennung und keinen konkreten Pfad: wer wann welche Akte
geöffnet hat, steht im Zugriffsprotokoll, und eine zweite Spur daneben wäre
eine Überwachungsfunktion ohne Auftrag. Ausgewertet wird Median und 75.
Perzentil, nicht der Mittelwert.
Mobil: die breiten Tabellen scrollen in sich, statt die Seite breiter zu
machen. Ein e2e-Test hält fest, dass keine Seite waagerecht überläuft.
scripts/restore-test.sh spielt eine Sicherung in eine Wegwerf-Datenbank und
prüft ausdrücklich, dass Regeln und Trigger mitkommen: eine Wiederherstellung
ohne entry_no_delete wäre eine Datenbank ohne die Zusicherung, um derentwillen
das System gebaut wird. Einmal durchgespielt, alles angekommen.
186 Tests im Web-Paket, 17 in der Datenbank, 7 im Worker, 54 e2e.
Grösste Route 116,2 von 120 kB.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
77b29d68d3
commit
3466215e2c
@@ -841,3 +841,61 @@ einmal nicht eingehängt gewesen wäre.
|
||||
`freigeben` prüft jetzt, ob die Datei wirklich existiert, bevor es auf sie verweist. Sonst
|
||||
legt es sie neu ab. Die Regel dahinter gilt allgemein: **ein Verweis in der Datenbank ist eine
|
||||
Behauptung über die Ablage, kein Beweis.**
|
||||
|
||||
## Schliff
|
||||
|
||||
### Das helle Thema tauscht nur die semantische Ebene
|
||||
|
||||
`--ink-*` und `--paper*` bleiben, wie sie sind; getauscht werden `--color-surface`,
|
||||
`--panel`, `--raised`, `--line`, `--text`, `--text-dim` und `--accent`. Wer eine Rohfarbe
|
||||
direkt benutzt, merkt vom Thema nichts — genau deshalb tut es niemand.
|
||||
|
||||
Die **Klassifizierungsfarben** sind für hellen Grund eine Spur dunkler, im Farbton aber
|
||||
dieselben. Eine Stufe muss in beiden Themen wiedererkennbar bleiben, sonst lernt man sie
|
||||
zweimal.
|
||||
|
||||
Drei Zustände statt zwei: „Wie das System" ist der Auslieferungszustand und folgt
|
||||
`prefers-color-scheme`; wer ausdrücklich wählt, bekommt seine Wahl **auf diesem Gerät**
|
||||
gemerkt. Nicht am Konto — das Thema ist eine Eigenschaft des Bildschirms, an dem jemand
|
||||
sitzt, nicht der Person.
|
||||
|
||||
Gesetzt wird es von einem winzigen Skript im Kopf, bevor das erste Mal gemalt wird. Sonst
|
||||
blitzt beim Laden das falsche Thema auf. Es ist die einzige Stelle mit
|
||||
`dangerouslySetInnerHTML` in der Anwendung, und der Inhalt ist eine Konstante aus dem
|
||||
Modul daneben — das Verbot aus `docs/07` gilt Nutzerinhalten.
|
||||
|
||||
### Die Messung misst nicht den Nutzer
|
||||
|
||||
`web-vitals` schickt Zahlen an `/api/vitals`. Was **nicht** mitgeht: die Kennung des Nutzers
|
||||
und der konkrete Pfad. Übertragen wird das Routenmuster — aus `/faelle/AfiS-2026-0042` wird
|
||||
`/faelle/[caseNumber]`.
|
||||
|
||||
Der Grund ist nicht Sparsamkeit, sondern Zuständigkeit: wer wann welche Akte geöffnet hat,
|
||||
steht im Zugriffsprotokoll, dort ist es geregelt und dort ist es nachvollziehbar. Eine zweite
|
||||
Spur daneben wäre eine Überwachungsfunktion ohne Auftrag — und eine, die niemand als solche
|
||||
erkennt, weil sie „Ladewerte" heisst.
|
||||
|
||||
Der Endpunkt prüft, was ankommt: nur bekannte Metriken, nur plausible Zahlen, Route auf 120
|
||||
Zeichen beschnitten. Ein Endpunkt, der ungeprüft Zeichenketten aus dem Browser speichert, ist
|
||||
ein Ablagefach für Fremde.
|
||||
|
||||
Ausgewertet wird **Median und 75. Perzentil**, nicht der Mittelwert: ein einzelner Ausreisser
|
||||
auf einem alten Laptop soll die Zahl nicht bestimmen.
|
||||
|
||||
### Beobachten verschafft keinen Zugriff
|
||||
|
||||
`Watch` ist eine Merkliste, kein Recht. Beobachten kann man nur, was man ohnehin sehen darf,
|
||||
und die Liste läuft durch `visibleCaseWhere` — steigt eine Akte später über die eigene Stufe,
|
||||
verschwindet sie aus der Liste, ohne dass jemand aufräumen müsste. Der Eintrag bleibt stehen
|
||||
und greift wieder, wenn die Stufe wieder passt.
|
||||
|
||||
### Die Wiederherstellung ist geprüft, nicht behauptet
|
||||
|
||||
`scripts/restore-test.sh` zieht einen Dump, spielt ihn in eine Wegwerf-Datenbank, vergleicht
|
||||
die Zeilenzahlen und räumt auf. Geprüft wird dabei ausdrücklich auch, dass **Regeln und
|
||||
Trigger** mitgekommen sind: eine Wiederherstellung ohne `entry_no_delete` wäre eine Datenbank,
|
||||
in der Verlaufseinträge löschbar sind — dieselben Daten, aber ohne die Zusicherung, um
|
||||
derentwillen das System gebaut wird.
|
||||
|
||||
Einmal durchgespielt: 42 Akten, 51 Verlaufseinträge, 97 Protokollzeilen, 8 Regeln und 20
|
||||
Trigger kamen an.
|
||||
|
||||
Reference in New Issue
Block a user