Aus den echten Dokumenten der Abteilung, die bisher als Google Docs geführt wurden. Die Dokumente tragen zwei Angaben nebeneinander, "Foundation-Freigabe" und "Interne Freigabe". Den Zugriff steuert allein die interne Freigabe; die Foundation-Freigabe wird ein gewöhnliches Vorlagenfeld. Mit zwei sperrenden Achsen bekäme jede Sichtbarkeitsprüfung, jede Trefferzahl und jeder Negativtest eine zweite Dimension — Sichtbarkeit wird an genau einer Stelle entschieden, sonst ist sie nicht mehr nachweisbar. Das Aktenzeichen der Abteilung lautet AKT-PA-2026-62843, das Glossar schrieb AfiS-2026-0042 vor. Das Muster gehört zur Vorlage, nicht ins Programm: Präfix und Stellenzahl je Fallart, Nummernkreis je Präfix und Jahr. docs/08 kannte nur den Export einer ganzen Akte. Dokumente wie der Sonderarbeitsvertrag hängen aber an einer Person, nicht an einer Ermittlung, und brauchen einen eigenen Weg: Deckblatt, Dokument, Fußzeile, kein Verlauf. Stufe des Abrufers, Wasserzeichen und Protokollierung gelten dort genauso. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
76 lines
3.5 KiB
Markdown
76 lines
3.5 KiB
Markdown
# Suche und Export
|
|
|
|
## Suche
|
|
|
|
Postgres Full-Text-Search, deutsche Konfiguration. Kein Elasticsearch.
|
|
|
|
- `search_vector` auf `Case` per Trigger aus Aktenzeichen und Titel (Gewicht A),
|
|
Abschnittswerten (B) und Verlaufseinträgen (C)
|
|
- GIN-Index, `websearch_to_tsquery('german', $1)`
|
|
- Zusätzlich Trigram-Index (`pg_trgm`) auf `caseNumber` und `displayName` für Tippfehler
|
|
|
|
Filter: Status, Fallart, Zeitraum, Beteiligte, Klassifizierung, Tags, nur meine Fälle.
|
|
|
|
**Die Sichtbarkeitsprüfung gehört in dieselbe Abfrage**, nicht als Nachfilter. Sonst stimmen
|
|
Trefferzahl und Seitenlänge nicht und aus den Lücken lässt sich auf verborgene Akten
|
|
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.
|
|
|
|
## Export
|
|
|
|
### Einzelakte als PDF
|
|
|
|
Aufbau: Deckblatt mit Aktenzeichen, Klassifizierungsvermerk und `Stand:`-Zeitstempel,
|
|
Kopfdatentabelle, Abschnitte in Vorlagenreihenfolge, chronologischer Verlauf,
|
|
Anhangsverzeichnis mit Hashes.
|
|
|
|
Nachträglich geänderte Verlaufseinträge werden im Export als solche ausgewiesen
|
|
(`bearbeitet, v3, 31.08.2026`), zurückgezogene erscheinen als Grabstein mit Begründung.
|
|
Ein Export darf nie sauberer aussehen als die Akte ist. Der `Stand:`-Zeitstempel macht
|
|
erkennbar, dass ein älterer Ausdruck überholt sein kann.
|
|
|
|
Drei Regeln:
|
|
|
|
1. **Der Export respektiert die Stufe des Abrufers.** Gesperrte Felder werden als Schwärzung
|
|
ausgegeben, nicht weggelassen, mit dem Vermerk „Geschwärzt, Stufe 4". Sonst merkt der
|
|
Empfänger nicht, dass er eine gekürzte Fassung hat.
|
|
2. **Wasserzeichen** auf jeder Seite: Name des Abrufers, Zeitstempel, Freigabestufe.
|
|
3. **Jeder Export wird protokolliert.** Ab Stufe 3 zusätzlich Freigabe durch einen Nutzer mit
|
|
Recht `export.approve`, also Vier-Augen-Prinzip. Die Anfrage erscheint beim Leiter als
|
|
Aufgabe im Dashboard.
|
|
|
|
### Technik
|
|
|
|
Playwright-Container rendert eine dedizierte Druckansicht `/faelle/[caseNumber]/druck`
|
|
mit `@media print`-Styles. Kein PDF-Bibliotheks-Layout von Hand.
|
|
|
|
Erzeugte PDFs werden gecacht unter dem Schlüssel
|
|
`sha256(caseId + updatedAt + clearanceLevel + templateVersion)`. Auf einem Homeserver kostet
|
|
das Rendern spürbar CPU, und dieselbe Akte wird oft mehrfach exportiert.
|
|
|
|
Der Export läuft als Hintergrundauftrag: Klick erzeugt einen Job, die UI zeigt einen
|
|
Fortschrittsbalken und der Download startet automatisch, sobald der Job fertig ist. Bei über
|
|
3 Sekunden bekommt der Nutzer zusätzlich eine Benachrichtigung, damit er wegklicken kann.
|
|
|
|
### Einzeldokument als PDF
|
|
|
|
Nicht jedes Dokument gehört zu einem Fall. Ein Sonderarbeitsvertrag, eine Beurteilung oder
|
|
eine Verpflichtungserklärung hängt an einer **Person**, nicht an einer Ermittlung. Solche
|
|
Dokumente entstehen aus einer Vorlage wie ein Fallabschnitt, werden aber einzeln ausgegeben:
|
|
Deckblatt, das Dokument selbst, Fußzeile. Kein Verlauf, keine Kopfdatentabelle einer Akte.
|
|
|
|
Dieselben drei Regeln gelten: die Stufe des Abrufers wird respektiert, jede Seite trägt das
|
|
Wasserzeichen, jeder Abruf wird protokolliert.
|
|
|
|
Die Vorlage bestimmt das Aussehen. Ein mehrseitiger Vertrag mit Paragraphen und
|
|
Unterschriftenzeilen ist eine andere Vorlage als ein einseitiger Vorfallsbericht, und beide
|
|
laufen durch dieselbe Druckansicht.
|
|
|
|
### Weitere Wege
|
|
|
|
- ZIP mit PDFs und Anhängen für Sammelexporte, nur mit Recht `admin`
|
|
- Vollständiger JSON-Export der Datenbank als Umzugs- und Notfallformat, ohne
|
|
Stufenfilterung, nur für `admin`, immer protokolliert
|