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
193 lines
9.1 KiB
Markdown
193 lines
9.1 KiB
Markdown
# Änderungen
|
||
|
||
Alle nennenswerten Änderungen an dieser Anwendung, in umgekehrter
|
||
Reihenfolge. Aufbau nach [Keep a Changelog](https://keepachangelog.com/de/1.1.0/),
|
||
Versionsnummern nach [Semantic Versioning](https://semver.org/lang/de/).
|
||
|
||
**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`](docs/ROADMAP.md).
|
||
|
||
---
|
||
|
||
[Unveröffentlicht]: https://git.wilde-server.de/florian.wilde/betreuungs-cockpit/compare/v1.0.0...HEAD
|
||
[1.0.0]: https://git.wilde-server.de/florian.wilde/betreuungs-cockpit/releases/tag/v1.0.0
|