Files
adminandClaude Sonnet 5 552570e696 Doku: workflow.md, CLAUDE.md und Tester-Feedback-Backlog auf aktuellen Stand
- Neue workflow.md: ASCII-Diagramme aller sichtbaren Nutzer-Workflows in
  pflegepilot_v3, zur Pruefung auf Sackgassen/Bruchstellen.
- CLAUDE.md um alle Abschnitte dieser Session ergaenzt (Produktions-Build,
  Autofill, T19-T22/T24, Interview-Wizard-Ueberarbeitung, Button-Stile).
- Feedbackfromtester.md/.txt: Backlog auf T19-T22 und T24 als erledigt
  aktualisiert, nur noch T25 offen.
- .gitignore: Secret.png ergaenzt.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-30 21:42:45 +02:00

30 KiB

MeinPflegeFuchs (pflegepilot_v3) — Workflow-Übersicht

Stand: 2026-07-30. Zeigt alle für einen Nutzer sichtbaren Abläufe (Klickpfade, nicht Code-Architektur) als ASCII-Diagramme — zum Prüfen, ob ein Workflow ins Nichts läuft oder keinen Sinn ergibt. Kein Ersatz für CLAUDE.md (dort steht das "Warum" und die technischen Details).

Legende:

[ Seite/Ansicht ]      Bildschirm, den der Nutzer sieht
( Aktion )             Klick/Formular-Absenden
<Entscheidung?>        Verzweigung
--> / v / ^            Ablaufrichtung
==>                    "danach folgt der Workflow XY" (siehe Abschnitt dort)

Inhalt

  1. Öffentlicher Bereich (nicht eingeloggt)
  2. Freemium-/Abo-Gate (gilt quer über fast alles in 4-7)
  3. Erster Login & Grundgerüst
  4. Neuer-Patient-Assistent
  5. Patientenakte
  6. Dokument-Generatoren (Musterbrief/Widerspruch/Ummeldung/Vollmacht/Patientenverfügung)
  7. Umkreissuche
  8. Aufgaben & Kalender
  9. Sonstige Nutzer-Bereiche (Katalog/Rechner, Guides, Einstellungen, Mein Abo, Changelog)
  10. Admin-Bereich
  11. Hintergrund-E-Mails (kein Klickpfad, aber sichtbares Ergebnis für den Nutzer)
  12. Auffälligkeiten / prüfenswerte Stellen

1. Öffentlicher Bereich (nicht eingeloggt)

[ Startseite "/" ]
  Hero-Text + 10 Feature-Kacheln + Preis + DSGVO-Punkte
  (Hero-Text/SEO-Meta admin-editierbar, Kacheln fest im Code)
        |
        |-- ( "Jetzt kostenlos starten" ) --> [ /dashboard ]
        |                                         |
        |                                         v
        |                                 <eingeloggt?>
        |                                    |        |
        |                                  nein       ja ==> Abschnitt 3
        |                                    v
        |                          [ Login-Overlay ]
        |
        |-- ( Fusszeile: Impressum/Datenschutz/AGB ) --> [ statische Rechtstext-Seite ]
        |                                                   (kein Zurück-Button noetig,
        |                                                    normale Browser-Navigation)
        v
  [ Login-Overlay ] (3 Modi im selben Kasten, kein Seitenwechsel)

Login-Overlay im Detail

[ Login-Overlay: Modus "login" ]
  Benutzername + Passwort
        |
        |-- ( Anmelden ) --> <Zugangsdaten korrekt?>
        |                        |            |
        |                      nein          ja
        |                        v            v
        |                [ Fehlermeldung   [ /dashboard ] ==> Abschnitt 3
        |                  im Overlay,
        |                  Formular bleibt
        |                  offen ]
        |
        |-- ( "Noch kein Konto? Registrieren" ) --> Modus "register"
        |
        |-- ( "Passwort vergessen?" ) --> Modus "forgot"


[ Login-Overlay: Modus "register" ]
  Name, Benutzername, Passwort, E-Mail,
  Rechnungsanschrift (Name/Straße/PLZ/Ort, PLZ->Ort Autofill),
  Pflicht-Checkbox 1: Zustimmung Sofortbeginn (§356 BGB)
  Pflicht-Checkbox 2: Kenntnis Widerrufsverzicht
        |
        |   Submit-Button bleibt deaktiviert, bis BEIDE Checkboxen an sind
        |
        |-- ( Registrieren ) --> <Server akzeptiert?>
        |         (Benutzername frei? beide Zustimmungen vorhanden?
        |          Pflichtfelder ausgefuellt?)
        |                        |            |
        |                      nein          ja
        |                        v            v
        |                [ Fehlermeldung   ( automatisch eingeloggt )
        |                  im Overlay ]         |
        |                                       v
        |                              [ /dashboard ] ==> Abschnitt 3
        |                              (selbst_registriert=1 gesetzt,
        |                               siehe Freemium-Gate Abschnitt 2)
        |
        |-- ( "Zurück zum Login" ) --> Modus "login"


[ Login-Overlay: Modus "forgot" ]
  E-Mail-Adresse
        |
        |-- ( Absenden ) --> [ Bestätigungstext:
        |                      "falls ein Konto existiert, wurde eine
        |                       E-Mail verschickt" ]
        |                      (IMMER dieselbe Meldung -
        |                       verrät nicht, ob die E-Mail existiert)
        |
        |   ==> Abschnitt 11 (E-Mail mit Reset-Link, 1h gueltig)
        |
        |-- ( "Zurück zum Login" ) --> Modus "login"


Reset-Link aus der E-Mail fuehrt zu:
[ /passwort-zuruecksetzen?token=... ]   (oeffentliche Marketing-Route,
                                          NICHT hinter dem Login-Overlay -
                                          sonst waere die Seite fuer einen
                                          nicht eingeloggten Link-Klicker
                                          nie erreichbar)
  Neues Passwort + Wiederholung
        |
        |-- ( Absenden ) --> <Token gueltig & Passwoerter identisch?>
        |                        |                    |
        |                      nein                  ja
        |                        v                    v
        |                [ Fehlermeldung      [ Erfolgsmeldung +
        |                  auf der Seite ]      Link "Jetzt anmelden" ]
        |                                              |
        |                                              v
        |                                     [ Login-Overlay, Modus "login" ]

2. Freemium-/Abo-Gate

Zwei GETRENNTE Sperrmechanismen, beide koennen theoretisch gleichzeitig aktiv sein - wichtig beim Nachvollziehen eines "warum komme ich hier nicht weiter"-Falls:

Jeder eingeloggte Request
        |
        v
<abo_pflicht Schalter an? (global, Default AUS)>
        |                              |
       nein                            ja
        |                              v
        |                    <hat_aktiven_zugang?>
        |                    (admin/demo immer ja,
        |                     sonst abo_bis >= heute)
        |                         |          |
        |                        ja         nein
        |                         |          v
        |                         |    [ JEDE Seite/Aktion ]
        |                         |    --> 402 "abo_erforderlich"
        |                         |    --> Redirect [ /meinabo ]
        v                         v
<selbst_registriert=1 UND KEIN bezahlter/gewaehrter Zugang?>
        |                              |
       nein                            ja
        |                              v
        |                    Seite selbst LESBAR (Dashboard,
        |                    Patientenakte ansehen etc.),
        |                    aber schreibende Aktionen gesperrt:
        |                      - Musterbrief/Widerspruch/Ummeldung/
        |                        Vollmacht/Patientenverfuegung erzeugen
        |                      - Leistung zuweisen/deaktivieren
        |                      - Aufgabe anlegen
        |                         |
        |                         v
        |                    ( Klick auf gesperrte Aktion )
        |                         |
        |                         v
        |                    [ Toast-Hinweis ] --> Redirect [ /meinabo ]
        v
  Normaler Zugriff, keine Einschraenkung
[ /meinabo ]  (immer erreichbar, auch wenn gesperrt - sonst Sackgasse!)
  Zeigt: aktueller Preis (gestaffelt nach Patientenzahl), abo_bis,
  gekuendigt-Status, Stub-Button "Jetzt bezahlen"
        |
        |-- ( "Jetzt bezahlen" ) --> 501 "noch nicht verfuegbar"
        |     (ECHTER TOTPUNKT - siehe Abschnitt 12, Punkt 1)
        |
        |-- ( "Kuendigen" ) --> abo_gekuendigt=true
        |     (Zugriff laeuft weiter bis abo_bis, kein Sofort-Effekt)
        |
        |-- ( "Reaktivieren", nur wenn vorher gekuendigt ) --> abo_gekuendigt=false

3. Erster Login & Grundgerüst

( Login/Registrierung erfolgreich )
        |
        v
<rolle?>
   |                    |
 nutzer               admin
   |                    |
   v                    v
[ /dashboard ]    [ /admin ] ==> Abschnitt 10
   |              (Nutzer-Nav-Punkte sind fuer Admin ausgeblendet,
   |               Admin landet nie auf den Nutzer-Seiten)
   v
<changelog_ungesehen leer?>
   |              |
  nein            ja
   |              |
   v              v
[ Changelog-  (kein Modal)
  Modal, zeigt
  neue Versions-
  Eintraege ]
   |
   |-- ( "Gelesen" ) --> Modal schliesst, Version als gesehen markiert
   |
   v
[ Dashboard-Inhalt sichtbar ]
  Kachel "Patienten" (Anzahl)
  Kachel "Offene Antraege" (Anzahl, ANKLICKBAR)
  Kachel "Offene Aufgaben" (Anzahl)
  Kachel "Schnellzugriff" --> ( + Neuer Patient ) ==> Abschnitt 4
  Bereich "Patienten im Ueberblick" (max. 6 Kacheln, je aufklappbar
     fuer Anzeige offener Antraege/Aufgaben OHNE Seitenwechsel)
     --> ( Kachel anklicken ) ==> Abschnitt 5
  Bereich "Offene Antraege nach Patient" (max. 5 Gruppen, nur wenn
     vorhanden - Sprungziel der anklickbaren Kachel oben)
     --> ( Zeile anklicken ) ==> Abschnitt 5

Seitenleiste (immer sichtbar, Gruppen):
  - Dashboard
  - Patienten: Patienten | Katalog | Rechner
  - Recht & Briefe: Widerspruch | Musterbrief | Ummeldung | Vollmacht |
                    Patientenverfuegung
  - Verwaltung: Aufgaben | Kalender | Krisen-Checklisten | Umkreissuche
  - Konto: Mein Abo | Einstellungen | Was ist neu?
  - (unten, immer) Impressum | Datenschutz | AGB | Abmelden

4. Neuer-Patient-Assistent

7 Schritte, linear mit Zurueck-Moeglichkeit. Kein Speichern zwischen den Schritten - erst ganz am Ende (Schritt 7) wird tatsaechlich etwas an den Server geschickt.

[ /patienten/neu ]
        |
        v
+-------------------------------------------------------------+
| Schritt 1: Persoenliche Daten                                |
|   ( Krankenkassenkarte scannen -- optional )                 |
|     --> <Foto(s) erkannt?>                                   |
|            | ja: Vorname/Nachname/Geburtsdatum/Krankenkasse/  |
|            |     Versichertennummer automatisch vorausgefuellt|
|            | nein: Hinweis "nichts erkannt", manuell eintragen|
|   Vorname*, Nachname*, Geburtsdatum                           |
+-------------------------------------------------------------+
        | ( Weiter )  -- blockiert mit Fehlermeldung, wenn
        |               Vorname/Nachname leer
        v
+-------------------------------------------------------------+
| Schritt 2: Kontakt & Adresse                                  |
|   Strasse, PLZ (-> Ort automatisch uebernommen), Ort,          |
|   Telefon                                                     |
|   Checkbox "Patient hat eigene E-Mail":                        |
|     an  -> E-Mail-Feld                                        |
|     aus -> eigene Konto-E-Mail wird automatisch verwendet      |
|            (Hinweistext dazu; falls Konto selbst keine E-Mail  |
|             hat: Aufforderung, trotzdem eine einzutragen)      |
+-------------------------------------------------------------+
        | ( Weiter / Zurueck )
        v
+-------------------------------------------------------------+
| Schritt 3: Krankenversicherung                                 |
|   Krankenkasse (Autocomplete), Versichertennummer               |
|     (Live-Formatpruefung DE/AT/CH, Fehlertext bei Blur)         |
|   Rentenversicherungsnummer (optional)                          |
|   Versicherungsart: GKV / PKV                                  |
+-------------------------------------------------------------+
        | ( Weiter ) -- blockiert, wenn Versichertennummer-Format
        |               ungueltig
        v
+-------------------------------------------------------------+
| Schritt 4: Pflegesituation (eigene Unter-Fortschrittsanzeige)   |
|   4.0  Zielgruppe waehlen (Alterspflege/Beduerftige/Behinderte) |
|   4.1..4.N  Situationsfragen, je EINE pro Bildschirm,           |
|             springt automatisch weiter (ausser letzte Frage)   |
+-------------------------------------------------------------+
        | ( Weiter nach letzter Unterfrage )
        v
+-------------------------------------------------------------+
| Schritt 5: Einschaetzung & Pflegeperson                        |
|   [ Hinweisbox: "grober Anhaltspunkt Pflegegrad X-Y,           |
|     KEINE offizielle Feststellung" ]  (aus Antworten berechnet)|
|   Tatsaechlicher/vermuteter Pflegegrad (Buttons 0-5)            |
|   Pflegeperson (Freitext)                                       |
|   Notizen/Diagnosen                                             |
+-------------------------------------------------------------+
        | ( Weiter / Zurueck )
        v
+-------------------------------------------------------------+
| Schritt 6: Leistungen                                          |
|   Katalog-Vorauswahl passend zu Pflegegrad+Zielgruppe,         |
|   Checkbox je Leistung ("nichts ausgewaehlt" ist explizit ok)  |
+-------------------------------------------------------------+
        | ( Weiter / Zurueck )
        v
+-------------------------------------------------------------+
| Schritt 7: Uebersicht                                          |
|   Zusammenfassung aller Angaben                                 |
|   Geschaetzter Geld-Vorteil (monatlich/jaehrlich, aus Rechner)  |
|   Pflicht-Checkbox: Berechtigung zur Dateneingabe bestaetigt    |
+-------------------------------------------------------------+
        | ( Patient speichern ) -- Button bleibt deaktiviert,
        |                          bis Berechtigungs-Checkbox an ist
        v
  POST /api/patienten  (inkl. Berechtigungs-Zeitstempel)
        |
        v
  <Leistungen aus Schritt 6 zusaetzlich speicherbar?>
        |                              |
       ja, alle ok                nein/teilweise fehlgeschlagen
        |                              |
        v                              v
  [ /patienten/{id} ]           [ /patienten/{id}?leistungen_fehler=1 ]
  ==> Abschnitt 5                 --> zeigt Warnhinweis "bitte im
                                       Leistungen-Bereich manuell
                                       nachtragen" ==> Abschnitt 5

5. Patientenakte

[ /patienten/{id} ]
  Kopfzeile: Name  |  ( Bearbeiten ) --> [ /patienten/{id}/bearbeiten ]
                   |  ( Loeschen ) --> Bestaetigungsdialog (confirm())
                   |       --> <bestaetigt?> ja --> DELETE --> [ /patienten ]
  Stammdaten-Kasten (nur Anzeige): Geburtsdatum, Zielgruppe, Adresse,
                                     Telefon, Krankenkasse, Status
        |
        v
  [ Pflegegrad-Bereich ]
    ( Pflegegrad aendern ) --> PATCH .../pflegegrad --> sofort sichtbar
        |
        v
  [ Notizen-Bereich ]
    ( Notiz hinzufuegen + Pflicht-Begruendung ) --> POST .../notizen
      --> in Verlauf einsortiert (audit-artig, nichts wird ueberschrieben)
        |
        v
  [ Leistungen-Bereich, Collapsible ]
    Zugewiesene Leistungen (Liste)
      je Leistung: ( Deaktivieren ) | Rolle "Ich selbst"/"Extern beantragen"
        --> bei "Ich selbst": Pflegepauschbetrag-Steuerhinweis eingeblendet
      Budget-Tracker je budgetfaehiger Leistung:
        Jahresbudget setzen -> Ausgabe erfassen -> Restbetrag + 30.06.-Hinweis
    ( + Leistung aus Katalog hinzufuegen ) --> Auswahlliste --> zugewiesen
    ( + Eigene Leistung: Typ/Bezeichnung/Betrag ) --> zugewiesen
        |
        v
  [ Antraege & Briefe-Bereich, Collapsible ]
    Tabelle aller erzeugten Antraege/Briefe (Typ, Status, Datum)
      ( PDF oeffnen ) --> Download ueber autorisierte Route
    Links zu allen 5 Generatoren ==> Abschnitt 6 (patientId vorbelegt)
        |
        v
  [ Pflegetagebuch-Bereich, Collapsible ]
    ( Eintrag hinzufuegen: Datum, Text ) --> POST --> in Liste einsortiert
        |
        v
  [ Dokumente-Bereich, Collapsible ]
    Karte "Datei hochladen"     Karte "Per Kamera scannen"
      ( Datei waehlen )           ( Foto 1 aufnehmen )
        --> beliebiges Format       --> ( + weitere Seite )*
        --> sofort hochgeladen      --> ( Fertig, hochladen )
                                        --> serverseitige
                                            Kantenerkennung + PDF
    Beide Wege enden in derselben Dokumente-Liste
      ( Dokument oeffnen ) --> Download ueber autorisierte Route

6. Dokument-Generatoren

Alle fuenf folgen demselben Grundmuster (Formular -> PDF-Ergebnis), mit Abweichungen:

[ /musterbrief | /widerspruch | /ummeldung | /vollmacht | /patientenverfuegung ]
        |
        v
  Patient waehlen (Dropdown)
        |
        v
  <Vollmacht fuer diesen Patienten hinterlegt?>
     (gilt fuer musterbrief/widerspruch/ummeldung - NICHT patientenverfuegung,
      die unterschreibt IMMER der Patient selbst)
        |                              |
       nein                            ja
        |                              v
        |                    Unterschrift wird spaeter im PDF
        |                    automatisch "in Vollmacht" durch
        |                    Bevollmaechtigte/n statt Patient
        v
  Formularfelder je Typ:
musterbrief:
  Antragstyp waehlen
    --> [ Checkliste ] zeigt benoetigte Unterlagen fuer diesen Typ,
        rot/gruen je nach Dokumente-Bereich (Abschnitt 5),
        ( Direkt-Upload-Icon je Position ) --> Dokument-Upload-Dialog
  Absenderdaten, Krankenkasse (Autocomplete), Versicherte Person + Nummer

widerspruch:
  Bescheiddatum, Aktenzeichen (optional), Ist-/Soll-Pflegegrad,
  Gruende (Mehrfachauswahl), Beweismittel (Mehrfachauswahl)
    --> [ Checkliste ] wie oben

ummeldung:
  Zeigt bisherige Anschrift (nur lesend)
  Neue Anschrift, Gueltig-ab-Datum
  Checkbox "Krankenkasse benachrichtigen" (an) --> Krankenkasse-Feld
  Checkbox "Rentenversicherung benachrichtigen" (an) --> Traeger-Feld
    (Default: Deutsche Rentenversicherung Bund)
  ( Adresse uebernehmen & Briefe erstellen )
    --> Patientenadresse wird SOFORT ueberschrieben (kein Zwischenschritt!)
    --> bis zu 2 PDFs erzeugt, je nach angehakten Checkboxen

vollmacht:
  Krankenkasse/Pflegekasse, Ausstellungsort
  Bevollmaechtigte/r (= Sie, Kontoinhaber) - Name/Strasse/PLZ+Ort

patientenverfuegung (mehrstufiges Interview statt Einzelformular):
  Schritt 1: Situationen auswaehlen (Mehrfachauswahl)
  Schritt 2: Ort der Behandlung, Beistand-Personen, Kirche,
             Schweigepflichtentbindung
  Schritt 3: Vorsorgevollmacht/Betreuung-Angaben, Vertrauensperson,
             Organspende (+ Konfliktfall-Praeferenz falls Zustimmung)
  Schritt 4: Informiert/Beraten durch, Aufklaerungsverzicht-Checkbox,
             Freifeld-Checkbox fuer spaetere aerztliche Bestaetigung,
             Ausstellungsort
        |  ( Erstellen / Generieren ) -- am Ende jedes der 5 Formulare
        v
  <Freemium-Gate blockiert? (Abschnitt 2)>
     ja --> Toast + Redirect [ /meinabo ]  (SACKGASSE fuer den Versuch,
                                             aber kein technischer Totpunkt -
                                             Nutzer landet auf einer
                                             sinnvollen Seite)
     nein
        v
  [ Ergebnis-Bereich auf derselben Seite ]
    "Erstellt ✓" + ( PDF oeffnen/herunterladen )
    (patientenverfuegung zusaetzlich: Hinweis auf das Zentrale
     Vorsorgeregister - registriert dort NICHTS automatisch)
    ( Formular bearbeiten ) --> zurueck zum ausgefuellten Formular
    Auch sichtbar in Patientenakte (Abschnitt 5) unter "Antraege & Briefe"

7. Umkreissuche

[ /umkreissuche ]
  PLZ eingeben (Autofill-fähig), Kategorie waehlen (11 Optionen,
    2 davon Label "geringe Datenlage"), Radius waehlen (5/10/15/25/50 km)
        |
        v
  ( Suchen )
        |
        v
  <Overpass-Dienst erreichbar?>
        |                    |
       nein                 ja
        v                    v
  [ Fehlermeldung        [ Trefferliste, naechste zuerst, max. 30 ]
    502, deutscher          je Treffer: Name, Adresse, Telefon/E-Mail/
    Text, KEIN Crash ]      Webseite (falls in OSM vorhanden),
    (Nutzer kann es          Distanz
     einfach nochmal            |
     versuchen)                 |-- ( Stern/Favorit setzen ) --> gespeichert
                                 |     (idempotent, doppeltes Merken =
                                 |      derselbe Favorit)
                                 |
                                 |-- ( Stern/Favorit entfernen ) --> geloescht

  Separater Bereich: "Meine Favoriten" (unabhaengig von der aktuellen Suche,
    kontoweit, nicht patientengebunden)
        |
        v
  ==> Abschnitt 11 (taeglicher Hintergrundabgleich, E-Mail bei Aenderung)

8. Aufgaben & Kalender

[ /aufgaben ]
  Liste aller Aufgaben (offen/erledigt), Filter nach Patient
        |
        |-- ( + Neue Aufgabe ) --> [ Modal: Titel, Beschreibung,
        |                            Patient, Faelligkeitsdatum ]
        |                                |
        |                                v
        |                          ( Speichern ) --> in Liste einsortiert
        |
        |-- ( Erledigt-Haken ) --> Status wechselt, Kalender/Dashboard
        |                          aktualisieren sich mit
        |
        |-- ( Apple-Icon )  --> .ics-Datei-Download --> Nutzer importiert
        |                       manuell in seinen Kalender
        |
        |-- ( Google-Icon ) --> oeffnet Google Calendar "Quick Add" in
                                neuem Tab, dort noch ( Speichern ) durch
                                den Nutzer noetig - KEIN Auto-Sync,
                                einmaliger Export je Klick


[ /kalender ]
  Aggregierte Ansicht aller Aufgaben+Termine, rein lesend
  (kein eigener Erstellungs-Workflow - Erstellung nur ueber /aufgaben)

9. Sonstige Nutzer-Bereiche

[ /katalog ]
  Suchfeld + Filter --> Leistungskatalog-Liste (reine Anzeige)
  --> Verweis auf /rechner fuer die Geld-Berechnung

[ /rechner ]
  Pflegegrad + Zielgruppe waehlen --> monatlicher/jaehrlicher
  Geld-Vorteil wird berechnet und angezeigt (kein Speichern,
  reines Ausprobieren)

[ /guides ]  (Krisen-Checklisten)
  Liste von 4 Themen --> ( Thema anklicken ) --> Schritt-fuer-Schritt-Text
  Rein lesend, kein Formular, kein Endpunkt ausser Notruf-112-Hinweis

[ /einstellungen ]
  Checkbox "Taegliche Tagebuch-Erinnerung per E-Mail" an/aus
    --> an: Uhrzeit-Feld erscheint
        |
        v
  ( Speichern ) --> ==> Abschnitt 11 (taegliche E-Mail zur gewaehlten Zeit)

[ /meinabo ]  ==> bereits in Abschnitt 2 vollstaendig gezeigt

[ /changelog ]  ("Was ist neu?")
  Vollstaendige Versionshistorie, rein lesend
  Aufruf allein zaehlt schon als "gelesen" (kein Extra-Klick noetig)

10. Admin-Bereich

Admin sieht NIE die Nutzer-Navigationspunkte (Patienten, Musterbrief etc.)

  • eigener Satz an Menuepunkten, eigene Startseite nach Login.
[ /admin ]  (Admin-Dashboard = Nutzerverwaltung)
  Tabelle aller Konten (Registriert, Letzter Login+IP, Status,
    Patientenanzahl, aktueller Abo-Preis)
        |
        |-- ( + Neues Konto anlegen ) --> [ Formular: Benutzername,
        |                                   Passwort, Name, E-Mail ]
        |                                        |
        |                                        v
        |                                 ( Anlegen ) --> in Tabelle
        |
        |-- je Konto: ( Bearbeiten ) --> [ Modal: Name/Rolle/Aktiv/
        |                                  Passwort/Rechnungsanschrift ]
        |
        |-- je Konto: ( Sperren/Entsperren ) --> Pflicht-Begruendung
        |                --> gesperrtes Konto wird SOFORT ausgeloggt,
        |                    auch bei bereits offener Session
        |
        |-- je Konto: ( Loeschen ) --> Pflicht-Begruendung
        |                --> <Konto besitzt noch Patienten?>
        |                       ja --> 400, Aktion verweigert
        |                              ("erst archivieren")
        |                       nein --> Soft-Delete (aktiv=0)
        |                --> ODER: besitzt Patienten -> automatisch
        |                    Archivierung ALLER Patienten (10/30 Jahre
        |                    Aufbewahrung) statt Hard-Delete
        |
        |-- je Konto: ( Freischalten, 1-12 Monate ) --> Pflicht-Begruendung
        |                --> abo_bis verlaengert, abo_gekuendigt
        |                    zurueckgesetzt
        |
        |-- je Konto: ( Rechnung ) --> [ Modal: Betrag/Leistungsbeschreibung ]
        |                --> serverseitig fortlaufende Rechnungsnummer
        |                --> PDF-Download (Klein-/Regelbesteuerung je
        |                    nach Einstellung)
        |
        |-- ( DSGVO-Export, patientenbezogen ) --> Pflicht-Begruendung
        |                --> ZIP-Download (Daten + Dateien)
        |
        |-- [ Audit-Log-Bereich ] --> rein lesend, jede Aktion oben
        |                             erzeugt hier einen Eintrag
        |
        |-- [ System-Backup-Bereich ]
        |     ( Backup erstellen ) --> Pflicht-Begruendung --> in Liste
        |     je Backup: ( Herunterladen ) | ( Loeschen, ohne Begruendung )
        |     (zusaetzlich taeglich automatisch, letzte 5 werden behalten)
        |
        |-- [ Backup wiederherstellen-Bereich ]
              .tar.gz waehlen + Pflicht-Begruendung
                |
                v
          ( Wiederherstellen ) --> Sicherheitskopie des JETZIGEN Standes
                wird automatisch VORHER angelegt
                |
                v
          <Restore erfolgreich?>
             |                    |
           nein                  ja
             v                    v
       [ Fehlermeldung,     [ Erfolgsmeldung mit Dateiname
         nichts wurde         der Sicherheitskopie ]
         veraendert -        (Nutzer/Admin muss ab hier selbst
         Transaktion          pruefen, ob der wiederhergestellte
         atomar ]             Stand stimmt - kein automatischer
                               Vergleich/Report)


[ /admin/einstellungen ]  (Backend-Einstellungen)
  Karten: Betrieb | Landingpage & SEO | Rechtstexte | Abo & Zahlung |
          Rechnungsstellung
  Je Karte: Felder aendern --> ( Speichern ) --> sofort wirksam
    (Landingpage-Felder: sofort auf "/" sichtbar, kein Cache/Verzoegerung;
     Rechtstexte: KEIN automatischer Abgleich mit den .txt-Quelldateien
     im Repo - muss der Betreiber manuell uebertragen)

11. Hintergrund-E-Mails (kein Klickpfad, aber sichtbares Ergebnis)

Diese Prozesse hat kein Nutzer aktiv ausgeloest, aber sie erzeugen eine sichtbare E-Mail bei ihm:

1. Passwort-Reset-Anfrage (Abschnitt 1) --> sofortige E-Mail

2. Leistungskatalog-Aenderung
   Admin/Betreiber aendert Katalogdaten im Code, App-Neustart
        |
        v
   Beim naechsten Start: Abgleich gegen letzten bekannten Stand
        |
        v
   <Aenderung erkannt UND Leistung ist einem Patienten zugewiesen?>
        |                                            |
       nein --> nichts passiert                      ja
                                                       v
                                          E-Mail an Nutzer + Patient
                                          (falls Patient eigene E-Mail hat)

3. Taegliche Tagebuch-Erinnerung
   Nutzer hat in /einstellungen aktiviert + Uhrzeit gewaehlt
        |
        v
   Taeglich, zur gewaehlten Uhrzeit, falls heute noch nicht verschickt
        |
        v
   E-Mail "Wie war der Tag mit ...?"

4. Umkreissuche-Favorit hat sich geaendert
   Taeglicher Hintergrundabgleich aller gemerkten Favoriten gegen OSM
        |
        v
   <Kontaktdaten eines Favoriten abweichend vom gemerkten Stand?>
        |                                    |
       nein --> nichts passiert              ja
                                               v
                                  E-Mail mit alter/neuer Angabe je Feld
                                  (mehrere geaenderte Favoriten desselben
                                   Kontos werden in einer Mail gebuendelt)
                                  Gespeicherter Stand wird aktualisiert,
                                  damit dieselbe Aenderung nicht taeglich
                                  erneut gemeldet wird
   (Ist ein Favorit komplett aus OSM verschwunden: KEINE E-Mail, nur
    ein Log-Eintrag - bewusste Einschraenkung, siehe CLAUDE.md)

12. Auffälligkeiten / prüfenswerte Stellen

Rein beobachtend, keine Wertung - zum gezielten Nachschauen:

  1. "Jetzt bezahlen" in /meinabo endet in einem 501 "noch nicht verfügbar". Echter Sackgassen-Klick, solange abo_pflicht aus ist praktisch folgenlos, aber sobald der Schalter aktiviert wird, träfe ein gesperrter Nutzer hier auf eine Wand ohne Ausweg (kein Zahlungsanbieter angebunden).

  2. Ummeldung überschreibt die Adresse sofort beim Klick auf "Adresse übernehmen & Briefe erstellen" — es gibt keinen "Vorschau, dann bestätigen"-Zwischenschritt wie sonst oft üblich. Wer sich vertippt, muss die Adresse danach manuell korrigieren (Patient bearbeiten).

  3. Zwei separate Sperrmechanismen (globales abo_pflicht-Gate und das freemium-write-lock für selbst_registriert) — beide können unabhängig greifen. Falls ein Nutzer meldet "ich komme nicht weiter", lohnt sich zu prüfen, WELCHER der beiden Fälle zutrifft, bevor man den falschen Schalter sucht.

  4. Restore aus System-Backup zeigt keinen automatischen Vergleich "vorher/nachher" — der Admin muss nach einem Restore selbst inhaltlich prüfen, ob der wiederhergestellte Stand stimmt.

  5. Rechtstexte (Impressum/Datenschutz/AGB) haben keinen automatischen Sync zwischen den .txt-Quelldateien im Repo und den tatsächlich angezeigten einstellungen-Werten — eine Textänderung im Repo wird nicht von selbst live, bis sie manuell im Admin-UI eingetragen wird.

  6. Google-Kalender-Export ist kein Auto-Sync, sondern ein einmaliger Export je Klick — spätere Änderungen an der Aufgabe (z. B. neues Fälligkeitsdatum) spiegeln sich nicht automatisch im bereits exportierten Kalendereintrag wider.