Zuletzt geöffnet als Sprungliste, ohne Verlauf

Die letzte offene Zeile aus TASKS.md. Sie blieb offen, weil eine Spur über
jeden Aktenaufruf schnell etwas anderes wird als eine Bequemlichkeit.

Vier Festlegungen halten sie auf der richtigen Seite:

  - Kein Verlauf. Der Primärschlüssel (userId, targetType, targetId) lässt je
    Nutzer und Datensatz genau eine Zeile zu, die überschrieben wird. Die
    Tabelle kann nicht sagen, wie oft oder in welcher Reihenfolge gearbeitet
    wurde. Zwanzig Einträge, älteres fällt hinten heraus.
  - Nur die eigene. Keine Ansicht, kein Adminbereich, keine Funktion mit
    fremder Kennung. Jede Abfrage nimmt p.userId.
  - Jederzeit löschbar, ohne Rückfrage und ohne Grabstein.
  - Vorabrufe zählen nicht. Ohne die Prüfung auf next-router-prefetch stünde
    dort, worüber jemand mit der Maus gefahren ist.

Gelesen wird über dieselben Sichtbarkeitsfragmente wie überall: eine
vorgemerkte Kennung ist keine Berechtigung. Steigt eine Akte über die
Freigabestufe, verschwindet sie ohne Lücke und ohne Platzhalter; Personalakten
brauchen zusätzlich personnel.read. Das Zugriffsprotokoll bleibt unberührt und
bleibt die einzige Auskunft darüber, wer wann was gelesen hat.

Sie steht auf der Übersicht und im leeren Feld der Kommandopalette. Der zweite
Ort ist der eigentliche.

Nebenbei: NEXT_DIST_DIR, damit ein Build neben einem laufenden
Entwicklungsserver nicht dasselbe .next-Verzeichnis abräumt.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Harlekin
2026-09-03 10:52:23 +02:00
co-authored by Claude Opus 5
parent 3466215e2c
commit bbae8546a0
21 changed files with 665 additions and 15 deletions
+5
View File
@@ -21,6 +21,11 @@ schließen. Gleiches gilt für Facettenzähler.
Gespeicherte Ansichten, die es ab Werk geben sollte: meine Fälle, Wiedervorlage diese Woche,
seit meinem letzten Besuch geändert, unbearbeitet seit 14 Tagen, zuletzt geöffnet.
„Zuletzt geöffnet" ist keine Suchansicht geworden, sondern eine persönliche Sprungliste auf der
Übersicht und im leeren Feld der Kommandopalette: sie ist keine Abfrage über den Index, sondern
eine Merkliste des einzelnen Nutzers. Was sie mitschreibt und was ausdrücklich nicht, steht in
docs/13-entscheidungen.md.
## Export
### Einzelakte als PDF
+38 -4
View File
@@ -705,10 +705,44 @@ Die **mitgelieferten** Ansichten stehen im Programm und nicht in der Datenbank,
der Gegenwart abhängen: „Wiedervorlage diese Woche" und „unbearbeitet seit 14 Tagen" wären als
gespeicherte Zeitpunkte schon am nächsten Tag falsch.
„Zuletzt geöffnet" aus docs/08 fehlt: dafür müsste jeder Aufruf jeder Akte mitgeschrieben
werden, und das Zugriffsprotokoll führt nur Stufe 3 aufwärts. Eine eigene Spur dafür anzulegen
wäre eine Überwachungsfunktion, die niemand bestellt hat — wenn sie gebraucht wird, sollte das
eine bewusste Entscheidung sein und keine Nebenwirkung.
### „Zuletzt geöffnet" ist eine Sprungliste, kein Verlauf
Die Ansicht aus docs/08 blieb zunächst offen, weil dafür jeder Aufruf jeder Akte mitgeschrieben
werden muss, während das Zugriffsprotokoll erst ab Stufe 3 mitschreibt. Eine zweite Spur daneben
ist die Sorte Funktion, die harmlos aussieht und es nicht ist: sie heisst „Zuletzt geöffnet" und
beantwortet, wenn man sie falsch baut, die Frage *wer hat wann worin gelesen* — nur eben ohne die
Regeln, Gründe und Protokollierung, unter denen diese Frage sonst steht.
Sie ist jetzt gebaut, und vier Festlegungen halten sie auf der Seite der Bequemlichkeit:
**Kein Verlauf.** Der Primärschlüssel von `RecentView` ist `(userId, targetType, targetId)`. Je
Nutzer und Datensatz gibt es genau eine Zeile, die beim nächsten Öffnen überschrieben wird. Die
Tabelle hat damit keine Form, in der sie sagen könnte, wie oft, wie lange oder in welcher
Reihenfolge jemand gearbeitet hat. Zwanzig Einträge, älteres fällt hinten heraus.
**Nur die eigene.** Es gibt in der Anwendung keinen Weg, die Liste eines anderen zu lesen: keine
Ansicht, keinen Adminbereich, keine Funktion, die eine fremde Kennung entgegennimmt. Jede Abfrage
in `lib/recent/` nimmt `p.userId`.
**Jederzeit löschbar**, ohne Rückfrage und ohne Grabstein. Regel 2 aus CLAUDE.md gilt für den
Verlauf einer Akte, nicht für eine Merkliste — was hier verschwindet, ist keine Aussage über die
Akte, sondern eine Bequemlichkeit für einen Menschen.
**Vorabrufe zählen nicht.** Next holt die Seiten hinter sichtbaren Links im Voraus. Ohne die
Prüfung auf `next-router-prefetch` stünde in der Liste, worüber jemand mit der Maus gefahren ist —
die Übersicht allein würde sie mit zehn Akten füllen, die niemand geöffnet hat. Das wäre die
unangenehmere Sorte falsch: eine Aufzeichnung von Aufmerksamkeit statt von Handlung.
Gelesen wird die Liste über dieselben Sichtbarkeitsfragmente wie alles andere. Eine vorgemerkte
Kennung ist keine Berechtigung: steigt eine Akte nachträglich über die Freigabestufe, verschwindet
sie aus der Liste, ohne Lücke und ohne Platzhalter. Für Personalakten reicht die Stufe nicht, es
braucht zusätzlich `personnel.read` — wie überall sonst.
Das Zugriffsprotokoll bleibt unberührt und bleibt die einzige Auskunft darüber, wer wann was
gelesen hat.
Sie steht auf der Übersicht und im leeren Feld der Kommandopalette. Der zweite Ort ist der
eigentliche: wer Strg+K drückt, will meistens dorthin zurück, wo er eben war.
### Die Kommandopalette wiegt nichts