Feat #21: Absenderanschrift in jedem Schreiben #32

Merged
florian.wilde merged 1 commits from feat/21-absenderanschrift into main 2026-08-23 18:30:23 +00:00
Owner

Unter Mein Konto → Meine Anschrift einmal Straße, PLZ und Ort hinterlegen; ab da stehen sie im Absenderblock jedes erzeugten Schreibens, und die Datumszeile lautet „Bayreuth, den 23.08.2026".

Nicht die Logik fehlte, sondern die Datenquelle. absenderBlock() und datumsZeile() konnten die Felder längst — briefkopfBauen() setzte sie mit einem Kommentar auf null, weil es sie im Datenmodell nicht gab.

Was dazukommt

  • Drei Felder am Benutzer (nicht an der betreuten Person — die Anschrift gehört zu dir und gilt für alle Akten). Migration über den Wrapper aus #24; das war sein erster echter Einsatz und die Datei war ohne Handarbeit brauchbar.
  • Ein Absender-Typ statt eines bloßen Namens, durchgereicht bis in den Serienlauf — der baute bisher { name } und hätte die Anschrift sonst still verloren.
  • Zwei Platzhalter für eigene Vorlagen: {{betreuer_anschrift}}, {{betreuer_ort}}.

Was fehlt, bleibt weg. Jede Angabe ist einzeln freiwillig: Nur ein Ort ergibt eine Datumszeile mit Ort und einen Absenderblock, der weiterhin nur aus dem Namen besteht. Keine leeren Zeilen, kein Komma ohne Ort.

Geprüft: 7 Einheitstests, 4 End-to-End-Tests. Unit-Suite 654 grün, Typecheck und Lint sauber.

Zur vollen e2e-Suite in Klartext: Sie meldete 2 Fehlschläge von 125, beide im Passkey-Test „lässt ein Gerät ohne Nutzerverifikation nicht herein". Ursache waren zwei verwaiste Passkey-Datensätze aus einem abgebrochenen früheren Lauf (Strict-Mode-Verletzung, weil Ungesichertes Gerät zweimal existierte) — kein Zusammenhang mit dieser Änderung. Nach dem Aufräumen läuft die Datei in beiden Projekten grün (6/6).

Version 1.10.0.

Closes #21

Unter **Mein Konto → Meine Anschrift** einmal Straße, PLZ und Ort hinterlegen; ab da stehen sie im Absenderblock jedes erzeugten Schreibens, und die Datumszeile lautet „Bayreuth, den 23.08.2026". **Nicht die Logik fehlte, sondern die Datenquelle.** `absenderBlock()` und `datumsZeile()` konnten die Felder längst — `briefkopfBauen()` setzte sie mit einem Kommentar auf `null`, weil es sie im Datenmodell nicht gab. **Was dazukommt** - Drei Felder am Benutzer (nicht an der betreuten Person — die Anschrift gehört zu dir und gilt für alle Akten). Migration über den Wrapper aus #24; das war sein erster echter Einsatz und die Datei war ohne Handarbeit brauchbar. - Ein `Absender`-Typ statt eines bloßen Namens, durchgereicht bis in den Serienlauf — der baute bisher `{ name }` und hätte die Anschrift sonst still verloren. - Zwei Platzhalter für eigene Vorlagen: `{{betreuer_anschrift}}`, `{{betreuer_ort}}`. **Was fehlt, bleibt weg.** Jede Angabe ist einzeln freiwillig: Nur ein Ort ergibt eine Datumszeile mit Ort und einen Absenderblock, der weiterhin nur aus dem Namen besteht. Keine leeren Zeilen, kein Komma ohne Ort. **Geprüft:** 7 Einheitstests, 4 End-to-End-Tests. Unit-Suite 654 grün, Typecheck und Lint sauber. Zur vollen e2e-Suite in Klartext: Sie meldete **2 Fehlschläge von 125**, beide im Passkey-Test „lässt ein Gerät ohne Nutzerverifikation nicht herein". Ursache waren zwei verwaiste Passkey-Datensätze aus einem abgebrochenen früheren Lauf (Strict-Mode-Verletzung, weil `Ungesichertes Gerät` zweimal existierte) — kein Zusammenhang mit dieser Änderung. Nach dem Aufräumen läuft die Datei in beiden Projekten grün (6/6). Version 1.10.0. Closes #21
florian.wilde added 1 commit 2026-08-23 18:30:14 +00:00
Jeder erzeugte Brief ging bisher ohne Ruecksendeadresse hinaus: Im
Absenderblock stand nur der Name, in der Datumszeile fehlte der Ort. Bei
einer Versicherung oder Behoerde wirkt das unserioes und macht es der
Gegenstelle unnoetig schwer zu antworten.

Neu unter "Mein Konto" ein Feld fuer Strasse, PLZ und Ort. Ab da stehen
sie im Absenderblock jedes Schreibens, und die Datumszeile lautet
"Bayreuth, den 23.08.2026".

Die Anschrift haengt am Benutzer, nicht an der betreuten Person: Sie
gehoert zu mir und gilt fuer alle Akten.

Nicht die Logik fehlte, sondern die Datenquelle - absenderBlock() und
datumsZeile() konnten die Felder schon, briefkopfBauen() hat sie mit
einem Kommentar auf null gesetzt, weil es sie im Datenmodell nicht gab.

Aufbau:
- Drei Felder am Benutzer, Migration ueber den Wrapper aus #24. Das war
  sein erster echter Einsatz: erzeugte Datei ohne Handarbeit brauchbar,
  DROP-INDEX-Zeilen bereits heraus.
- Ein Absender-Typ statt eines blossen Namens, durchgereicht bis in den
  Serienlauf - der hat bisher {name} gebaut und haette die Anschrift
  sonst still verloren.
- Zwei Platzhalter fuer eigene Vorlagen: betreuer_anschrift,
  betreuer_ort.

Was fehlt, bleibt weg: Jede der drei Angaben ist einzeln freiwillig. Nur
ein Ort ergibt eine Datumszeile mit Ort und einen Absenderblock, der
weiterhin nur aus dem Namen besteht. Eine halb ausgefuellte Adresse
sieht nach Fehler aus, ein blosser Name nach Absicht.

Geprueft: sieben Einheitstests fuer den Absenderblock inklusive jeder
Teilbefuellung und der Gegenprobe, dass nie die Heimadresse der
betreuten Person im Absender landet; vier End-to-End-Tests vom leeren
Zustand ueber das Speichern bis zum fertigen Brief.

Refs #21
florian.wilde merged commit b6b579a04d into main 2026-08-23 18:30:23 +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#32