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
This commit is contained in:
+192
@@ -0,0 +1,192 @@
|
||||
# Ä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
|
||||
Reference in New Issue
Block a user