Feat #6: Rückkaufswerte aller Versicherungen in einem Zug anfragen #17

Merged
florian.wilde merged 1 commits from feat/6-rueckkaufswerte-serienabfrage into main 2026-08-23 10:18:02 +00:00
Owner

Was es tut

Neu unter Verträge → Rückkaufswerte anfragen: Stichtag wählen, Liste prüfen, ein Klick. Heraus kommt ein ZIP mit einer Word-Datei je Gesellschaft plus Begleitblatt — und je Vertrag entstehen nebenbei die PDF-Fassung in der Akte, die Wiedervorlage nach 28 Tagen und der Anfragevermerk. Auf „Heute" steht danach unter Wartet auf andere, worauf gewartet wird und seit wann.

Die Auswahl begründet sich selbst

Vorausgewählt ist nur, was in Frage kommt. Was nicht in Frage kommt, wird nicht stumm ausgeblendet, sondern steht mit Grund in der Liste („Ohne Gesellschaft fehlt der Empfänger", „bereits vor 10 Tagen angefragt"). Nur Vertragsarten ohne jede Aussicht auf einen Rückkaufswert bleiben draußen.

Gekündigte Verträge bleiben anfragbar — bis zum Wirksamwerden besteht der Vertrag, und genau dann will der Sozialhilfeträger den Wert sehen.

Die Anzahl steht vor dem Klick auf dem Knopf: Einen Fehlgriff soll man bemerken, bevor zehn Briefe entstehen.

Zwei Zusagen

Kein Alles-oder-nichts. Jeder Vertrag läuft für sich; ein gescheiterter steht mit Grund im Begleitblatt des ZIP, die übrigen laufen durch. Eine Transaktion über alle wäre die falsche Zusage — wenn der neunte Brief scheitert, sollen die acht fertigen nicht verworfen werden.

Der Doppelklick kostet nichts. Tagesgenauer Dublettenschutz: Der zweite Lauf am selben Tag überspringt bereits angefragte Verträge (steht so im Begleitblatt). Die bewusste zweite Anfrage nach einer Woche bleibt möglich — von Hand anwählen genügt.

Aufbau

Datei Zweck
src/lib/vertraege/serienabfrage.ts Auswahllogik, rein und testbar
src/lib/vertraege/serienlauf.ts der Lauf: je Vertrag das volle Paket aus #4
src/app/(app)/vertraege/serienabfrage/route.ts POST → ZIP (Nebenwirkungen vor der Auslieferung)
src/app/(app)/vertraege/serienabfrage/seite/ die Auswahlseite

Sperrfrist und Wiedervorlage teilen sich die 28 Tage — ein Test hält beide zusammen. Liefen sie auseinander, würde gemahnt und zugleich neu angefragt.

Geprüft

  • Zwölf Einheitstests für die Auswahllogik.
  • Drei End-to-End-Tests: Vorauswahl samt Begründungen, der volle Lauf mit Kontrolle aller Nebenwirkungen in der Datenbank (Anfragedatum, Dokumente, Fristen — und dass nur die aktive betreute Person betroffen ist), Dublettenschutz beim zweiten Lauf.
  • 602 Unit-Tests, 87 e2e, 0 Typfehler, Lint sauber, Produktionsbau steht.

Meine ersten e2e-Fassungen sind an einer falschen Annahme gescheitert (feste Anzahl statt vorhandener Demoverträge) — der Fehler lag in den Tests, nicht in der Anwendung.

Version auf 1.6.0 angehoben. Keine Migration nötig.

Closes #6

## Was es tut Neu unter **Verträge → Rückkaufswerte anfragen**: Stichtag wählen, Liste prüfen, ein Klick. Heraus kommt ein **ZIP mit einer Word-Datei je Gesellschaft** plus Begleitblatt — und je Vertrag entstehen nebenbei die PDF-Fassung in der Akte, die Wiedervorlage nach 28 Tagen und der Anfragevermerk. Auf „Heute" steht danach unter *Wartet auf andere*, worauf gewartet wird und seit wann. ## Die Auswahl begründet sich selbst Vorausgewählt ist nur, was in Frage kommt. Was nicht in Frage kommt, wird **nicht stumm ausgeblendet**, sondern steht mit Grund in der Liste („Ohne Gesellschaft fehlt der Empfänger", „bereits vor 10 Tagen angefragt"). Nur Vertragsarten ohne jede Aussicht auf einen Rückkaufswert bleiben draußen. **Gekündigte Verträge bleiben anfragbar** — bis zum Wirksamwerden besteht der Vertrag, und genau dann will der Sozialhilfeträger den Wert sehen. Die Anzahl steht **vor** dem Klick auf dem Knopf: Einen Fehlgriff soll man bemerken, bevor zehn Briefe entstehen. ## Zwei Zusagen **Kein Alles-oder-nichts.** Jeder Vertrag läuft für sich; ein gescheiterter steht mit Grund im Begleitblatt des ZIP, die übrigen laufen durch. Eine Transaktion über alle wäre die falsche Zusage — wenn der neunte Brief scheitert, sollen die acht fertigen nicht verworfen werden. **Der Doppelklick kostet nichts.** Tagesgenauer Dublettenschutz: Der zweite Lauf am selben Tag überspringt bereits angefragte Verträge (steht so im Begleitblatt). Die bewusste zweite Anfrage nach einer Woche bleibt möglich — von Hand anwählen genügt. ## Aufbau | Datei | Zweck | |---|---| | `src/lib/vertraege/serienabfrage.ts` | Auswahllogik, rein und testbar | | `src/lib/vertraege/serienlauf.ts` | der Lauf: je Vertrag das volle Paket aus #4 | | `src/app/(app)/vertraege/serienabfrage/route.ts` | POST → ZIP (Nebenwirkungen vor der Auslieferung) | | `src/app/(app)/vertraege/serienabfrage/seite/` | die Auswahlseite | Sperrfrist und Wiedervorlage teilen sich die 28 Tage — ein Test hält beide zusammen. Liefen sie auseinander, würde gemahnt und zugleich neu angefragt. ## Geprüft - **Zwölf Einheitstests** für die Auswahllogik. - **Drei End-to-End-Tests**: Vorauswahl samt Begründungen, der volle Lauf mit Kontrolle aller Nebenwirkungen in der Datenbank (Anfragedatum, Dokumente, Fristen — und dass nur die *aktive* betreute Person betroffen ist), Dublettenschutz beim zweiten Lauf. - 602 Unit-Tests, 87 e2e, 0 Typfehler, Lint sauber, Produktionsbau steht. Meine ersten e2e-Fassungen sind an einer falschen Annahme gescheitert (feste Anzahl statt vorhandener Demoverträge) — der Fehler lag in den Tests, nicht in der Anwendung. Version auf **1.6.0** angehoben. Keine Migration nötig. Closes #6
florian.wilde added 1 commit 2026-08-23 10:10:56 +00:00
Vor Vermoegensverzeichnis und Jahresbericht braucht es von jeder Lebens-
und Rentenversicherung den Rueckkaufswert zum Stichtag - jedes Mal
dieselben fuenf bis zehn Briefe. Neu unter Vertraege: Stichtag waehlen,
Liste pruefen, ein Klick. Heraus kommt ein ZIP mit einer Word-Datei je
Gesellschaft plus Begleitblatt; je Vertrag entstehen nebenbei die
PDF-Fassung in der Akte, die Wiedervorlage nach 28 Tagen und der
Anfragevermerk.

Aufbau:
- Auswahllogik als reine Funktionen in vertraege/serienabfrage.ts:
  Vorauswahl, Hindernisse mit Begruendung statt stummem Ausblenden,
  28-Tage-Sperre im Gleichschritt mit der Wiedervorlage.
- Der Lauf in vertraege/serienlauf.ts: je Vertrag das volle Paket aus
  Issue #4, aber in einem Durchgang. Kein Alles-oder-nichts - ein
  gescheiterter Vertrag steht mit Grund im Begleitblatt, die uebrigen
  laufen durch. Eine Transaktion ueber alle waere die falsche Zusage.
- Dublettenschutz tagesgenau: Der Doppelklick erzeugt nichts Doppeltes,
  die bewusste zweite Anfrage nach einer Woche bleibt moeglich.
- Die Anzahl steht vor dem Klick auf dem Knopf.

Gekuendigte Vertraege bleiben anfragbar: Bis zum Wirksamwerden besteht
der Vertrag, und genau dann will der Sozialhilfetraeger den Wert sehen.

Geprueft: zwoelf Einheitstests, drei End-to-End-Tests inklusive der
Nebenwirkungen in der Datenbank und des Dublettenschutzes. 602
Unit-Tests, 87 e2e, null Typfehler.

Refs #6
florian.wilde merged commit 0a8878d8d2 into main 2026-08-23 10:18:02 +00:00
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: florian.wilde/betreuungs-cockpit#17