feat(archiv): Uebersicht, Volltextsuche und Druckansicht #29

Merged
florian.wilde merged 1 commits from feat/15-dashboard-archiv into main 2026-09-25 20:59:39 +00:00
Owner

Der Meilenstein M10: der Einstieg am Schreibtisch und das Gedächtnis der Anwendung.

Was drin ist

  • Übersicht mit Überfälligem, eigenen Zuweisungen, zuletzt Bearbeitetem und Schnellstart. Überfällig steht oben und ist das Einzige in Warnfarbe — riefe jeder Block, riefe keiner.
  • Archiv mit Volltextsuche über Titel, Notizen, erfasste Werte und Kommentare, sechs Filtern und der Fundstelle im Treffer: die Liste sagt, ob der Begriff im Titel, in einer Notiz, in einem Wert oder in einem Kommentar steht, und hebt ihn hervor.
  • Druckansicht eines Laufs: hell, ohne Navigation, A4 — sie ersetzt im MVP den PDF-Export.

Zwei Blocker aus dem unabhängigen Review, beide im Dashboard

  1. „Überfällig" traf auch, was heute fällig ist. Verglichen wurde mit dem Augenblick statt mit dem Tagesbeginn; ein Datumsfeld speichert Mitternacht UTC, und damit stand ein heute fälliger Lauf hierzulande ab zwei Uhr morgens in Warnfarbe — an genau dem Tag, an dem er erledigt werden soll. Mein Test kannte „gestern" und „morgen", aber nicht die Grenze dazwischen.
  2. Der Schnellstart zählte Läufe fremder Kunden mit. Eine Vorlage ohne Kundenbezug gilt für alle (#009); ihr Zähler sammelte die Läufe sämtlicher Kunden — eine Auskunft über fremde Betriebe, die außerdem die Reihenfolge nach fremder Arbeit sortierte.

Dazu fünf Befunde: ein E2E-Test, der kein Passwort finden konnte (er lief gegen eine Vorlage ohne Passwortschritt); ein Trigramm-Index, der strukturell unerreichbar war, weil der Titeltreffer aus der materialisierten CTE las (vom Review mit 40 000 Läufen gemessen); ein berechnetes und nie benutztes Feld; ein Link, der mehr versprach, als die Zielseite kann; und eine Passwort-Zusage, die zu absolut formuliert war.

Prüfstand

pnpm lint, typecheck, format:pruefen, pruefe:doku grün · 980 Tests (vorher 930) · 67 Ende-zu-Ende-Tests gegen den gebauten Stand · Screenshots in docs/screenshots/m10/.

Closes #15

🤖 Generated with Claude Code

Der Meilenstein M10: der Einstieg am Schreibtisch und das Gedächtnis der Anwendung. ## Was drin ist - **Übersicht** mit Überfälligem, eigenen Zuweisungen, zuletzt Bearbeitetem und Schnellstart. Überfällig steht oben und ist das Einzige in Warnfarbe — riefe jeder Block, riefe keiner. - **Archiv** mit Volltextsuche über Titel, Notizen, erfasste Werte und Kommentare, sechs Filtern und der **Fundstelle im Treffer**: die Liste sagt, ob der Begriff im Titel, in einer Notiz, in einem Wert oder in einem Kommentar steht, und hebt ihn hervor. - **Druckansicht** eines Laufs: hell, ohne Navigation, A4 — sie ersetzt im MVP den PDF-Export. ## Zwei Blocker aus dem unabhängigen Review, beide im Dashboard 1. **„Überfällig" traf auch, was heute fällig ist.** Verglichen wurde mit dem Augenblick statt mit dem Tagesbeginn; ein Datumsfeld speichert Mitternacht UTC, und damit stand ein heute fälliger Lauf hierzulande ab zwei Uhr morgens in Warnfarbe — an genau dem Tag, an dem er erledigt werden soll. Mein Test kannte „gestern" und „morgen", aber nicht die Grenze dazwischen. 2. **Der Schnellstart zählte Läufe fremder Kunden mit.** Eine Vorlage ohne Kundenbezug gilt für alle (#009); ihr Zähler sammelte die Läufe sämtlicher Kunden — eine Auskunft über fremde Betriebe, die außerdem die Reihenfolge nach fremder Arbeit sortierte. Dazu fünf Befunde: ein E2E-Test, der kein Passwort finden **konnte** (er lief gegen eine Vorlage ohne Passwortschritt); ein Trigramm-Index, der strukturell unerreichbar war, weil der Titeltreffer aus der materialisierten CTE las (vom Review mit 40 000 Läufen gemessen); ein berechnetes und nie benutztes Feld; ein Link, der mehr versprach, als die Zielseite kann; und eine Passwort-Zusage, die zu absolut formuliert war. ## Prüfstand `pnpm lint`, `typecheck`, `format:pruefen`, `pruefe:doku` grün · **980 Tests** (vorher 930) · **67 Ende-zu-Ende-Tests** gegen den gebauten Stand · Screenshots in `docs/screenshots/m10/`. Closes #15 🤖 Generated with [Claude Code](https://claude.com/claude-code)
florian.wilde added 1 commit 2026-09-25 20:59:27 +00:00
feat(archiv): Uebersicht, Volltextsuche und Druckansicht
Prüfung / pruefung (pull_request) Canceled after 0s
Prüfung / pruefung (push) Canceled after 0s
Prüfung / e2e (pull_request) Canceled after 0s
Prüfung / e2e (push) Canceled after 0s
8146e33f48
Der Einstieg am Schreibtisch und das Gedaechtnis der Anwendung. Die Uebersicht
sortiert nach Dringlichkeit — ueberfaellig zuerst, und das ist das Einzige in
Warnfarbe; alles andere auf der Seite ist Auskunft.

Das Archiv sucht ueber Titel, Notizen, erfasste Werte und Kommentare in einer
SQL-Anweisung: `Schrittergebnis.wert` ist ein Json, und nur `("wert")::text`
trifft den Trigramm-Index aus #006. Vor allem aber gehoert die Fundstelle zum
Treffer — ein Treffer ohne sichtbaren Grund ist fuer den Suchenden wertlos.

Die Druckansicht ist ein eigenes Lesemodell und kein Schalter an
`laufZumAbarbeiten`: dort entsteht beim Fuellen der Befehle ein Passwort, und auf
einem Blatt, das jemand abheftet, darf keines stehen. Vom Mitarbeiter holt sie
nur Name, UPN und Abteilung — nicht alles und dann gefiltert.

Der unabhaengige Review fand zwei Blocker, beide im Dashboard: „ueberfaellig“
verglich mit dem Augenblick statt mit dem Tagesbeginn, und der Schnellstart
zaehlte Laeufe fremder Kunden mit. Was „ueberfaellig“ heisst, steht seitdem in
`src/lib/fristen.ts` — eine Regel fuer Lesemodell und Anzeige.

Closes #15

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
florian.wilde merged commit ab5777a57e into main 2026-09-25 20:59:39 +00:00
florian.wilde deleted branch feat/15-dashboard-archiv 2026-09-25 20:59:39 +00:00
Sign in to join this conversation.