Files
betreuungs-cockpit/CHANGELOG.md
T
Florian Wilde b2ac13e128 feat: Versionierung mit Changelog, Version 1.0.0
Bis jetzt stand nirgends, welcher Stand laeuft. Beim Aktualisieren auf
einem Server ist das die erste Frage.

CHANGELOG.md nach Keep a Changelog, Versionsnummern nach SemVer. Der
Changelog sagt, was sich beim Arbeiten aendert - nicht, welche Datei
angefasst wurde. Dazu eine Tabelle, was Major, Minor und Patch fuer den
Betreiber praktisch bedeuten, und der Hinweis, dass sich eine
Datenbank-Migration nicht zurueckrollen laesst.

Die Version steht bewusst an zwei Stellen: package.json und
src/lib/version.ts. Ein Import der package.json waere im
Standalone-Build eine andere Datei als die des Projekts - die Zahl haenge
dann an der Laufzeit. Ein Test haelt beide zusammen, und
"npm run version" setzt sie gemeinsam samt Changelog-Abschnitt.

Committet und getaggt wird nicht automatisch. Ein Changelog-Eintrag, den
niemand gegengelesen hat, ist keinen Deut besser als keiner.

Sichtbar wird die Version unten in der Seitenleiste und unter
/api/gesundheit - dort mit Git-Stand, den der Docker-Build hineinreicht.
Auf der Anmeldeseite steht sie nicht: wer nicht angemeldet ist, muss
nicht wissen, welche Fassung hier laeuft.

Etappe: 8
Phase: Haertung
2026-08-22 10:41:33 +02:00

9.1 KiB
Raw Blame History

Änderungen

Alle nennenswerten Änderungen an dieser Anwendung, in umgekehrter Reihenfolge. Aufbau nach Keep a Changelog, Versionsnummern nach Semantic Versioning.

Was hier steht: was sich für dich beim Arbeiten ändert — nicht, welche Datei angefasst wurde. Wer den technischen Verlauf braucht, findet ihn im Git-Log; jeder Commit trägt seine Etappe.

Was die Zahlen bedeuten:

Stelle Wann sie steigt Was du tun musst
Major (1.x.x → 2.0.0) Etwas verhält sich anders als vorher, oder eine Migration lässt sich nicht zurücknehmen Changelog lesen, vorher sichern, Zeit einplanen
Minor (1.0.x → 1.1.0) Neue Funktionen, alles Bisherige bleibt wie es war Changelog überfliegen, normal aktualisieren
Patch (1.0.0 → 1.0.1) Fehler behoben, sonst nichts Einfach aktualisieren

Eine Datenbank-Migration lässt sich nicht zurückrollen. Vor jedem Update ein Backup anstoßen — siehe README, Abschnitt Sicherung und Wiederherstellung.


Unveröffentlicht

Noch nichts.

1.0.0 – 2026-08-22

Erste vollständige Fassung. Alle acht Etappen umgesetzt, alle Abnahmekriterien als Test hinterlegt.

Hinzugefügt

Der Alltag

  • Dashboard „Heute" — beantwortet morgens, was ansteht: Fristen-Ampel (überfällig / diese Woche / diesen Monat), wer gerade am Zug ist, offene Nachforderungen des Bezirks, ungeprüfter Posteingang, unverbuchte Belege, Kennzahlen zu Vermögen und Heimkosten.
  • Fristen — die gesetzlichen Pflichtfristen entstehen von selbst aus dem Bestellungsdatum: Vermögensverzeichnis und Anfangsbericht nach drei Monaten, Jahresbericht und Vermögensübersicht zum Ende jedes Betreuungsjahres, Aufwandspauschale, Landespflegegeld, Zuzahlungsbefreiung, Rückkaufswerte. Liste, Monatskalender und ein ICS-Feed zum Abonnieren im eigenen Kalender.
  • Vorgänge als Fallakte mit Zeitstrahl über Dokumente, Protokolle, Fristen und Buchungen. Neun Vorlagen mit vorbefüllter Aufgabenliste, darunter Heimeinzug, Antrag Hilfe zur Pflege, Wohnungsauflösung, Hausverkauf, Darlehen nach § 91 SGB XII und Widerspruch gegen einen Bescheid.
  • Kontakte und Kontaktprotokoll — Verzeichnis aller Stellen mit Aktenzeichen, dazu eine Schnellerfassung, die am Handy in unter zwanzig Sekunden zu bedienen ist.

Papier

  • Dokumentenablage mit Drag & Drop, Sammel-Upload und Handy-Foto. Texterkennung auf Deutsch, Volltextsuche über alle Schreiben, Posteingangsbuch mit den Stufen neu → gesichtet → zugeordnet → beantwortet, Feld für den Ablageort des Papieroriginals.
  • Beim Import werden Absender, Datum, Aktenzeichen, Dokumentart und eine im Text genannte Frist vorgeschlagen — mit der Textstelle daneben, damit man prüfen kann. Übernommen wird nur auf Klick.
  • Belegmappe: alle Dokumente eines Vorgangs oder Zeitraums als eine chronologisch sortierte, paginierte PDF mit Deckblatt und Inhaltsverzeichnis.

Geld

  • Kassenbuch mit Belegzwang, Kategorien, CSV- und CAMT.053-Import. Harte Trennung zwischen dem Vermögen der betreuten Person und eigenen Auslagen, mit Warnung bei Buchungen auf ein als privat markiertes Konto.
  • Konten mit verschlüsselter IBAN und Saldoständen je Stichtag, Vermögensposten mit vollständiger Wert-Historie und Pflichtangabe zur Wertquelle. Werte werden nie überschrieben.
  • Vermögensverzeichnis (§ 1835 BGB) und Vermögensübersicht bzw. Rechnungslegung (§§ 1859, 1865 BGB) als druckfertige PDF, in zwei Ausgabevarianten für befreite und nicht befreite Betreuer.

Behörde

  • Sozialhilfe-Modul für das Verfahren beim Bezirk: Antragsakte, Nachforderungs-Tracker mit Fortschrittsbalken, vorbefüllte Checkliste der Standardunterlagen mit Begründung, warum der Träger sie will.
  • Bescheid-Prüfung mit Berechnung der Rechtsbehelfsfrist ab dem Zugangsdatum, einschließlich Wochenende, bayerischer Feiertage und dem Sonderfall fehlender Rechtsbehelfsbelehrung. Der Rechenweg wird ausgegeben.
  • Heimkosten-Gegenüberstellung Monat für Monat: Kosten gegen Pflegekasse, Leistungszuschlag nach § 43c SGB XI, Rente und Sozialhilfeanteil — die Deckungslücke wird sichtbar.
  • Schonvermögens-Bewertung je Posten (verwertbar / geschützt / strittig) mit Begründungsfeld und Textbausteinen zu § 90 SGB XII.
  • Katalog weiterer Leistungen: Landespflegegeld, Zuzahlungsbefreiung, Rundfunkbeitragsbefreiung, Schwerbehindertenausweis, Grundsicherung.

Substanz

  • Immobilie mit Grundbuchdaten, Belastungen nach Abteilung II und III, Wert-Historie, Status im Sozialhilfeverfahren und einer Pflichten-Checkliste bei Leerstand — zehn Punkte, jeder mit Begründung.
  • Versicherungen und Verträge mit Kündigungsfristen-Rechner, der den spätesten Absendetag nennt, Anschreiben zur Rückkaufswert-Anfrage mit automatischer Wiedervorlage und einem Kündigungs-Assistenten.
  • Heim und Pflege mit Heimvertrag, Leistungszuschlag-Staffel, Pflegegrad-Historie, Abwesenheitstagen und einem Gesundheitsverlauf mit COPD-Bezug: Exazerbationen, Sauerstoff, Stürze, Krankenhaus, Hilfsmittel, Impfungen nach STIKO-Plan.

Ausgabe

  • Jahresbericht (§ 1863 BGB) als Entwurf zum Überarbeiten, gespeist aus Kontaktprotokollen, Gesundheitsereignissen und Vorgangsstatus. Ausgabe als PDF und als DOCX.
  • Unterlagenpaket für den Bezirk: die im Tracker markierten Dokumente als eine PDF mit Anschreiben und Inhaltsverzeichnis.
  • Vollexport als ZIP mit allen Originaldateien, allen Daten als entschlüsseltes JSON, den erzeugten Berichten, einer LIESMICH und SHA-256-Prüfsummen.
  • Wissensbasis mit 37 Hinweiskarten, pflegbar als JSON-Datei ohne Neustart. Jede mit Rechtsgrundlage, Link und dem stehenden Vermerk, dass sie keine Rechtsberatung ersetzt.

Verwaltung

  • Mitleser-Rolle mit modulweiser Freigabe und ausdrücklicher Warnung bei Gesundheit, Finanzen und Sozialhilfe.
  • Papierkorb mit 30 Tagen Aufbewahrung.
  • Wartungslauf über /api/wartung: Fristerinnerungen per E-Mail, Papierkorb leeren, alte Anmeldeversuche entfernen.

Sicherheit

  • Pflicht-Zweitfaktor (TOTP nach RFC 6238). Lässt sich nicht abschalten. Acht Wiederherstellungscodes, einzeln Argon2id-gehasht.
  • Anwendungsseitige Feldverschlüsselung mit AES-256-GCM für Diagnosen, den ermittelten Willen, IBANs, Versicherungs-, Renten- und Steuernummern sowie alle Freitext-Notizen. Der Feldname wird mitauthentifiziert — ein Geheimtext lässt sich nicht von einem Feld in ein anderes umhängen. Schlüsselrotation ohne Datenverlust vorgesehen.
  • Argon2id nach OWASP-Empfehlung, mit automatischem Nachziehen bei späterer Parametererhöhung.
  • Rate-Limiting am Login nach E-Mail und Anschluss. Die Sperre wird geprüft, bevor überhaupt gerechnet wird, und die Antwortzeit ist gestreckt — sie verrät nicht, welche Adressen existieren.
  • Unveränderliches Audit-Log: ein Datenbank-Trigger weist UPDATE und DELETE ab, auch bei direktem Zugriff mit psql.
  • Strenge Content-Security-Policy mit Nonce pro Anfrage. Keine externen Schriften, kein CDN, keine Tracker — nachgewiesen durch einen Test, der jede Anfrage an einen fremden Host als Fehler wertet.
  • Uploads werden an den Magic Bytes geprüft, nicht an Endung oder gemeldetem MIME-Typ. Ausgeliefert wird nur über kurzlebige signierte URLs, immer als Anhang mit nosniff.
  • Erneute Anmeldung vor Export, endgültigem Löschen und Rollenänderungen. Ein Passwortwechsel beendet alle offenen Sitzungen.

Betrieb

  • Docker Compose mit Anwendung, PostgreSQL, MinIO und Sicherungsdienst. Ohne Reverse Proxy — der ist auf dem Zielserver vorhanden. Die Datenbank hat keine Portfreigabe.
  • Tägliche verschlüsselte Sicherung um 03:15 Uhr mit Selbstprüfung: lässt sich die Datei nicht wieder entschlüsseln, endet der Lauf mit Fehler statt mit einem stillen Scheinerfolg.
  • Verarbeitungsverzeichnis und Datenschutzhinweise als ausfüllbare Textbausteine.
  • Bauprotokoll aus den Commit-Trailern.

Bekannte Einschränkungen

  • Die Texterkennung ist gegen ein echtes Tesseract nicht end-to-end geprüft. Der Weg „nicht verfügbar, Upload funktioniert trotzdem" ist getestet.
  • Der CAMT.053-Import ist nur gegen selbst gebaute Beispiele geprüft, nicht gegen einen echten Bankauszug.
  • Das Kostenkonto der Immobilie wertet über Buchungskategorien aus und wäre bei einem zweiten Grundstück falsch. Die Oberfläche sagt das an der Auswertung dazu.
  • Eine Aufgabe aus einer Vorgangs-Vorlage lässt sich nicht entfernen — passt sie im Einzelfall nicht, bleibt sie offen stehen.
  • @react-pdf/renderer braucht in diesem Abhängigkeitsbaum eine Krücke (src/lib/pdf/standardschrift.ts), weil seine Unterabhängigkeiten für Standardschriften kein Schriftobjekt mehr liefern.

Was davon wann angegangen wird, steht in docs/ROADMAP.md.