Eigene Vorlagen für Anschreiben bearbeiten #7

Closed
opened 2026-08-22 23:28:20 +00:00 by florian.wilde · 3 comments
Owner

Problem

Die Brieftexte stehen fest im Programmcode. Formulierungen, die sich im
Umgang mit einer bestimmten Stelle bewährt haben, kann ich nicht
hinterlegen — ich baue sie jedes Mal neu ein. Und für Schreiben, die es
noch nicht als Vorlage gibt (Auskunftsersuchen, Vollmachtsnachweis,
Adressänderung), fange ich bei null an.

Steht schon in der Roadmap unter „Später, ohne Datum". Im Alltag ist es
wichtiger als das.

Was ich will

Unter Einstellungen → Vorlagen:

  • Die mitgelieferten Vorlagen einsehen und als Grundlage kopieren
  • Eigene Vorlagen anlegen, benennen, bearbeiten, löschen (Papierkorb)
  • Platzhalter für die Daten, die ohnehin im System stehen — betreute
    Person, Aktenzeichen, Betreuungsgericht, Bestellungsdatum,
    Vertragsnummer, Gesellschaft, Stichtag
  • Beim Erzeugen eines Schreibens die Vorlage auswählen

Akzeptanzkriterien

  • Eine eigene Vorlage lässt sich anlegen und beim Erzeugen eines
    Schreibens auswählen
  • Platzhalter werden ersetzt; die verfügbaren stehen beim Bearbeiten
    daneben, man muss sie nicht raten
  • Ein unbekannter Platzhalter bricht nicht ab, sondern wird im Text
    sichtbar markiert — falsch ausgefüllt ist schlimmer als
    offensichtlich leer
  • Ein Platzhalter, zu dem im Fall keine Daten vorliegen, erzeugt eine
    sichtbare Lücke ([Aktenzeichen]), keine stille Leerstelle
  • Der Bestellungsabsatz lässt sich einfügen, aber nicht versehentlich
    weglassen: fehlt er, wird beim Speichern gewarnt
  • Die mitgelieferten Vorlagen bleiben unverändert erhalten und lassen
    sich wiederherstellen
  • Vorlagen sind vom Vollexport erfasst und werden mitgesichert

Warum die Warnung beim Bestellungsabsatz

Ohne den Nachweis der Bestellung antwortet keine Versicherung — man
bekommt „aus datenschutzrechtlichen Gründen können wir Ihnen keine
Auskunft erteilen", und dann ist ein Monat vergangen. Wer eine Vorlage
selbst schreibt, vergisst genau diesen Absatz.

Abhängigkeit

Baut auf „Schreiben erzeugen: Word-Datei, Ablage in der Akte,
Wiedervorlage" auf.

Angelegt auf Zuruf im Chat, nicht aus dem Dashboard — bitte in Nebula
nachtragen.

## Problem Die Brieftexte stehen fest im Programmcode. Formulierungen, die sich im Umgang mit einer bestimmten Stelle bewährt haben, kann ich nicht hinterlegen — ich baue sie jedes Mal neu ein. Und für Schreiben, die es noch nicht als Vorlage gibt (Auskunftsersuchen, Vollmachtsnachweis, Adressänderung), fange ich bei null an. Steht schon in der Roadmap unter „Später, ohne Datum". Im Alltag ist es wichtiger als das. ## Was ich will Unter **Einstellungen → Vorlagen**: - Die mitgelieferten Vorlagen einsehen und als Grundlage kopieren - Eigene Vorlagen anlegen, benennen, bearbeiten, löschen (Papierkorb) - Platzhalter für die Daten, die ohnehin im System stehen — betreute Person, Aktenzeichen, Betreuungsgericht, Bestellungsdatum, Vertragsnummer, Gesellschaft, Stichtag - Beim Erzeugen eines Schreibens die Vorlage auswählen ## Akzeptanzkriterien - [ ] Eine eigene Vorlage lässt sich anlegen und beim Erzeugen eines Schreibens auswählen - [ ] Platzhalter werden ersetzt; die verfügbaren stehen beim Bearbeiten daneben, man muss sie nicht raten - [ ] Ein unbekannter Platzhalter bricht nicht ab, sondern wird im Text sichtbar markiert — falsch ausgefüllt ist schlimmer als offensichtlich leer - [ ] Ein Platzhalter, zu dem im Fall keine Daten vorliegen, erzeugt eine sichtbare Lücke (`[Aktenzeichen]`), keine stille Leerstelle - [ ] Der Bestellungsabsatz lässt sich einfügen, aber nicht versehentlich weglassen: fehlt er, wird beim Speichern gewarnt - [ ] Die mitgelieferten Vorlagen bleiben unverändert erhalten und lassen sich wiederherstellen - [ ] Vorlagen sind vom Vollexport erfasst und werden mitgesichert ## Warum die Warnung beim Bestellungsabsatz Ohne den Nachweis der Bestellung antwortet keine Versicherung — man bekommt „aus datenschutzrechtlichen Gründen können wir Ihnen keine Auskunft erteilen", und dann ist ein Monat vergangen. Wer eine Vorlage selbst schreibt, vergisst genau diesen Absatz. ## Abhängigkeit Baut auf „Schreiben erzeugen: Word-Datei, Ablage in der Akte, Wiedervorlage" auf. _Angelegt auf Zuruf im Chat, nicht aus dem Dashboard — bitte in Nebula nachtragen._
florian.wilde added the in-arbeit label 2026-08-23 10:21:08 +00:00
florian.wilde started working 2026-08-23 10:21:19 +00:00
Author
Owner

🤖 Claude Code hat mit der Umsetzung begonnen.

  • Branch: feat/7-eigene-vorlagen
  • Verstanden als: Bewährte Formulierungen sollen als eigene Vorlagen im System liegen — mit Platzhaltern für die Daten, die ohnehin da sind — und beim Erzeugen eines Schreibens wählbar sein, ohne dass die mitgelieferten Vorlagen dabei kaputtgehen können.
  • Geplantes Vorgehen:
    • Platzhalter-Ersetzung als reine Funktionen: bekannte ersetzen, fehlende Daten als sichtbare Lücke [Aktenzeichen], unbekannte Platzhalter markiert statt Abbruch
    • Modell Schreibvorlage (Migration; auf die bekannten DROP INDEX-Zeilen von migrate diff achte ich zum vierten Mal)
    • Verwaltung unter Einstellungen → Vorlagen mit Platzhalterliste daneben, Warnung beim Speichern ohne Bestellungsabsatz, Papierkorb
    • Auswahl im Schreiben-Editor beim freien Schreiben; mitgelieferte Vorlagen bleiben Code und damit unveränderlich — „wiederherstellen" heißt: als Kopie in die eigenen Vorlagen holen
    • Vollexport um die Vorlagen ergänzen

Zeiterfassung läuft.

🤖 **Claude Code hat mit der Umsetzung begonnen.** - Branch: `feat/7-eigene-vorlagen` - Verstanden als: Bewährte Formulierungen sollen als eigene Vorlagen im System liegen — mit Platzhaltern für die Daten, die ohnehin da sind — und beim Erzeugen eines Schreibens wählbar sein, ohne dass die mitgelieferten Vorlagen dabei kaputtgehen können. - Geplantes Vorgehen: - Platzhalter-Ersetzung als reine Funktionen: bekannte ersetzen, fehlende Daten als sichtbare Lücke `[Aktenzeichen]`, unbekannte Platzhalter markiert statt Abbruch - Modell `Schreibvorlage` (Migration; auf die bekannten `DROP INDEX`-Zeilen von `migrate diff` achte ich zum vierten Mal) - Verwaltung unter **Einstellungen → Vorlagen** mit Platzhalterliste daneben, Warnung beim Speichern ohne Bestellungsabsatz, Papierkorb - Auswahl im Schreiben-Editor beim freien Schreiben; mitgelieferte Vorlagen bleiben Code und damit unveränderlich — „wiederherstellen" heißt: als Kopie in die eigenen Vorlagen holen - Vollexport um die Vorlagen ergänzen Zeiterfassung läuft.
florian.wilde worked for 1 hour 20 minutes 2026-08-23 11:42:07 +00:00
florian.wilde added zu-testen and removed in-arbeit labels 2026-08-23 11:42:55 +00:00
Author
Owner

✅ Umsetzung abgeschlossen — bereit zum Testen.

Was geändert wurde

  • Einstellungen → Schreibvorlagen: eigene Vorlagen anlegen, bearbeiten, löschen. Neben dem Editor steht die vollständige Platzhalterliste mit Beschriftung und Quelle — ein Klick setzt den Platzhalter an die Cursorstelle, niemand muss {{…}}-Namen raten.
  • Platzhalter-Ersetzung als reine Funktionen (src/lib/schreiben/platzhalter.ts). Drei Fälle, keiner davon still: bekannter Wert wird eingesetzt, fehlender Wert wird zur sichtbaren Lücke [Aktenzeichen des Gerichts], unbekannter Platzhalter wird im Text markiert und über dem Editor benannt. Ein Tippfehler in der Vorlage verhindert das Schreiben nicht — er springt aber ins Auge.
  • Zweistufige Bestellungsabsatz-Warnung: Der erste Speicherversuch ohne Nachweis der Vertretungsmacht kommt mit einer Rückfrage zurück; erst die Bestätigung speichert. Ein ausformulierter Absatz zählt so viel wie der Platzhalter, ein halber Nachweis („Beschluss der Eigentümerversammlung") nicht.
  • Vier mitgelieferte Vorlagen (Auskunftsersuchen, Adressänderung, Nachweis der Vertretungsmacht, Rückkaufswert kurz) bleiben Code und damit unveränderlich; „Als Kopie übernehmen" legt eine eigene Fassung an. Für Rückkaufswert und Kündigung führt die Oberfläche weiter zuerst zu den fallbezogenen Erzeugern — die rechnen Kündigungstermine aus, was eine Vorlage nicht kann.
  • Auswahl beim freien Schreiben (/schreiben/neu?art=FREI): Select über dem Editor, der Entwurf entsteht serverseitig mit aufgelösten Platzhaltern und Briefrahmen.
  • Vorlagen hängen an der betreuten Person: Papierkorb (30 Tage rückholbar) und Vollexport der Akte sind angeschlossen.

Ein Fund am Rande, den erst der End-to-End-Test brachte: Der Schreiben-Editor hält Betreff und Text als eigenen React-State. Beim Wechsel der Vorlage überlebte der alte Entwurf die Navigation — die ausgewählte Vorlage kam nie im Textfeld an. Ein key auf dem Editor setzt ihn jetzt neu auf.

Geänderte Dateien

  • src/lib/schreiben/platzhalter.ts (neu)
  • src/lib/schreiben/mitgelieferte-vorlagen.ts (neu)
  • src/server/actions/vorlagen.ts (neu)
  • src/components/einstellungen/vorlagen-verwaltung.tsx (neu)
  • src/components/schreiben/vorlagen-wahl.tsx (neu)
  • src/app/(app)/einstellungen/vorlagen/page.tsx (neu)
  • prisma/schema.prisma, prisma/migrations/20260823102500_schreibvorlage/
  • src/lib/schreiben/entwurf.ts, src/app/(app)/schreiben/neu/page.tsx
  • src/app/(app)/einstellungen/page.tsx, src/lib/wartung.ts, src/server/actions/papierkorb.ts, src/lib/berichte/vollexport.ts
  • tests/platzhalter.test.ts (neu), e2e/vorlagen.spec.ts (neu)

So testest du es

  1. git switch feat/7-eigene-vorlagen und npm run dev
  2. Einstellungen → Schreibvorlagen öffnen. „Neue Vorlage", einen Text ohne {{bestellungsabsatz}} eingeben, speichern.
    Erwartet: Rückfrage statt Speichern — mit dem Hinweis, warum der Absatz zählt. Häkchen setzen, nochmal speichern: jetzt geht es durch.
  3. Bei „Auskunftsersuchen" auf Als Kopie übernehmen klicken.
    Erwartet: Der Editor öffnet mit „Auskunftsersuchen (eigene Fassung)" und dem vollständigen Text; die mitgelieferte Vorlage bleibt unverändert stehen.
  4. Im Editor in der rechten Spalte auf einen Platzhalter klicken.
    Erwartet: Er landet an der Cursorstelle im Text.
  5. Dokumente → Schreiben (freies Schreiben) öffnen. Oben unter „Aus eigener Vorlage" die Kopie wählen.
    Erwartet: Der Entwurf steht mit Briefkopf, Datum, Betreff und aufgelöstem Bestellungsabsatz da. Wo Daten fehlen (etwa Empfängeranschrift), stehen eckige Klammern — keine leeren Stellen.
  6. Eine Vorlage mit einem erfundenen Platzhalter anlegen, etwa {{gibt_es_nicht}}, und sie beim Schreiben wählen.
    Erwartet: Im Text steht [Unbekannter Platzhalter: {{gibt_es_nicht}}], darüber die Warnung — kein Abbruch.
  7. Eine Vorlage löschen und unter Einstellungen → Papierkorb wiederherstellen.
    Erwartet: Sie steht wieder in der Liste.

Geprüft: 13 Einheitstests für die Ersetzung, 6 End-to-End-Tests. Volle Suite grün — 615 Unit-Tests, 99 End-to-End-Tests, Typecheck und Lint sauber.

Aufgewendete Zeit: 01:20
Pull Request: #18

Nach Freigabe: /issue-freigabe 7

✅ **Umsetzung abgeschlossen — bereit zum Testen.** <!-- claude-status branch: feat/7-eigene-vorlagen pr: 18 zeit_sekunden: 4848 --> **Was geändert wurde** - **Einstellungen → Schreibvorlagen**: eigene Vorlagen anlegen, bearbeiten, löschen. Neben dem Editor steht die vollständige Platzhalterliste mit Beschriftung und Quelle — ein Klick setzt den Platzhalter an die Cursorstelle, niemand muss `{{…}}`-Namen raten. - **Platzhalter-Ersetzung als reine Funktionen** (`src/lib/schreiben/platzhalter.ts`). Drei Fälle, keiner davon still: bekannter Wert wird eingesetzt, fehlender Wert wird zur sichtbaren Lücke `[Aktenzeichen des Gerichts]`, unbekannter Platzhalter wird im Text markiert und über dem Editor benannt. Ein Tippfehler in der Vorlage verhindert das Schreiben nicht — er springt aber ins Auge. - **Zweistufige Bestellungsabsatz-Warnung**: Der erste Speicherversuch ohne Nachweis der Vertretungsmacht kommt mit einer Rückfrage zurück; erst die Bestätigung speichert. Ein ausformulierter Absatz zählt so viel wie der Platzhalter, ein halber Nachweis („Beschluss der Eigentümerversammlung") nicht. - **Vier mitgelieferte Vorlagen** (Auskunftsersuchen, Adressänderung, Nachweis der Vertretungsmacht, Rückkaufswert kurz) bleiben Code und damit unveränderlich; „Als Kopie übernehmen" legt eine eigene Fassung an. Für Rückkaufswert und Kündigung führt die Oberfläche weiter zuerst zu den fallbezogenen Erzeugern — die rechnen Kündigungstermine aus, was eine Vorlage nicht kann. - **Auswahl beim freien Schreiben** (`/schreiben/neu?art=FREI`): Select über dem Editor, der Entwurf entsteht serverseitig mit aufgelösten Platzhaltern und Briefrahmen. - Vorlagen hängen an der betreuten Person: **Papierkorb** (30 Tage rückholbar) und **Vollexport** der Akte sind angeschlossen. **Ein Fund am Rande**, den erst der End-to-End-Test brachte: Der Schreiben-Editor hält Betreff und Text als eigenen React-State. Beim Wechsel der Vorlage überlebte der alte Entwurf die Navigation — die ausgewählte Vorlage kam nie im Textfeld an. Ein `key` auf dem Editor setzt ihn jetzt neu auf. **Geänderte Dateien** - `src/lib/schreiben/platzhalter.ts` *(neu)* - `src/lib/schreiben/mitgelieferte-vorlagen.ts` *(neu)* - `src/server/actions/vorlagen.ts` *(neu)* - `src/components/einstellungen/vorlagen-verwaltung.tsx` *(neu)* - `src/components/schreiben/vorlagen-wahl.tsx` *(neu)* - `src/app/(app)/einstellungen/vorlagen/page.tsx` *(neu)* - `prisma/schema.prisma`, `prisma/migrations/20260823102500_schreibvorlage/` - `src/lib/schreiben/entwurf.ts`, `src/app/(app)/schreiben/neu/page.tsx` - `src/app/(app)/einstellungen/page.tsx`, `src/lib/wartung.ts`, `src/server/actions/papierkorb.ts`, `src/lib/berichte/vollexport.ts` - `tests/platzhalter.test.ts` *(neu)*, `e2e/vorlagen.spec.ts` *(neu)* **So testest du es** 1. `git switch feat/7-eigene-vorlagen` und `npm run dev` 2. **Einstellungen → Schreibvorlagen** öffnen. „Neue Vorlage", einen Text ohne `{{bestellungsabsatz}}` eingeben, speichern. Erwartet: Rückfrage statt Speichern — mit dem Hinweis, warum der Absatz zählt. Häkchen setzen, nochmal speichern: jetzt geht es durch. 3. Bei „Auskunftsersuchen" auf **Als Kopie übernehmen** klicken. Erwartet: Der Editor öffnet mit „Auskunftsersuchen (eigene Fassung)" und dem vollständigen Text; die mitgelieferte Vorlage bleibt unverändert stehen. 4. Im Editor in der rechten Spalte auf einen Platzhalter klicken. Erwartet: Er landet an der Cursorstelle im Text. 5. **Dokumente → Schreiben** (freies Schreiben) öffnen. Oben unter „Aus eigener Vorlage" die Kopie wählen. Erwartet: Der Entwurf steht mit Briefkopf, Datum, Betreff und aufgelöstem Bestellungsabsatz da. Wo Daten fehlen (etwa Empfängeranschrift), stehen eckige Klammern — keine leeren Stellen. 6. Eine Vorlage mit einem erfundenen Platzhalter anlegen, etwa `{{gibt_es_nicht}}`, und sie beim Schreiben wählen. Erwartet: Im Text steht `[Unbekannter Platzhalter: {{gibt_es_nicht}}]`, darüber die Warnung — kein Abbruch. 7. Eine Vorlage löschen und unter **Einstellungen → Papierkorb** wiederherstellen. Erwartet: Sie steht wieder in der Liste. **Geprüft:** 13 Einheitstests für die Ersetzung, 6 End-to-End-Tests. Volle Suite grün — 615 Unit-Tests, 99 End-to-End-Tests, Typecheck und Lint sauber. **Aufgewendete Zeit:** 01:20 **Pull Request:** #18 Nach Freigabe: `/issue-freigabe 7`
Author
Owner

🚀 Freigegeben und nach main übernommen.

  • Merge-Commit: 57ce73d
  • Pull Request: #18 (gemergt)
  • Fassung: v1.7.0 (getaggt)
  • Gesamtaufwand: 01:20

Issue wird geschlossen.

🚀 **Freigegeben und nach `main` übernommen.** <!-- claude-status merge: 57ce73dfbc28605d202b0786d30dfb4b931a5511 pr: 18 zeit_sekunden: 4848 --> - Merge-Commit: `57ce73d` - Pull Request: #18 (gemergt) - Fassung: **v1.7.0** (getaggt) - Gesamtaufwand: 01:20 Issue wird geschlossen.
florian.wilde removed the zu-testen label 2026-08-23 12:00:21 +00:00
Sign in to join this conversation.
1 Participants
Notifications
Total Time Spent: 1 hour 20 minutes
florian.wilde
1 hour 20 minutes
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: florian.wilde/betreuungs-cockpit#7