From f8a87b013a85b134e403b44d3ad7d2d96d01f81a Mon Sep 17 00:00:00 2001 From: Denis Lugowski Date: Sun, 15 Feb 2026 18:16:59 +0100 Subject: [PATCH] feat: Add flow diagram --- docs/form-flow-diagram.md | 574 ++++++++++++++++++++++++++++++ legalconsenthub-backend/CLAUDE.md | 4 +- 2 files changed, 576 insertions(+), 2 deletions(-) create mode 100644 docs/form-flow-diagram.md diff --git a/docs/form-flow-diagram.md b/docs/form-flow-diagram.md new file mode 100644 index 0000000..facedf1 --- /dev/null +++ b/docs/form-flow-diagram.md @@ -0,0 +1,574 @@ +# IT System Application Form - Flow Diagram + +This document visualizes the complete flow of the `initial_application_form_template.yaml` form, showing all visibility conditions and section spawning logic. + +## Color Legend + +| Color | Branch | +|-------|--------| +| 🟢 Green | Einführung (New Introduction) | +| 🔵 Blue | Einführung mit Ablösung (Introduction with Replacement) | +| 🟠 Orange | Änderung IT-System (System Modification) | +| 🔴 Red | Einstellung IT-System (System Discontinuation) | + +--- + +## 1. Main Decision Point + +```mermaid +flowchart TB + A["Art der Maßnahme?"] + + A -->|"Einführung"| INTRO["🟢 Einführung
New system introduction
→ See Section 2"] + A -->|"Einführung mit Ablösung"| INTRO_REPL["🔵 Einführung mit Ablösung
Introduction with replacement
→ See Section 3"] + A -->|"Änderung IT-System"| CHANGE["🟠 Änderung IT-System
System modification
→ See Section 4"] + A -->|"Einstellung IT-System"| DISCONTINUE["🔴 Einstellung IT-System
System discontinuation
→ See Section 5"] + + linkStyle 0 stroke:#22c55e,stroke-width:3px + linkStyle 1 stroke:#3b82f6,stroke-width:3px + linkStyle 2 stroke:#f97316,stroke-width:3px + linkStyle 3 stroke:#ef4444,stroke-width:3px + + style INTRO fill:#dcfce7,stroke:#22c55e,stroke-width:2px + style INTRO_REPL fill:#dbeafe,stroke:#3b82f6,stroke-width:2px + style CHANGE fill:#ffedd5,stroke:#f97316,stroke-width:2px + style DISCONTINUE fill:#fee2e2,stroke:#ef4444,stroke-width:2px +``` + +--- + +## 2. 🟢 Einführung (New Introduction) Path + +```mermaid +flowchart TB + INTRO["🟢 Einführung"] + + subgraph SPAWNED["Auto-Spawned Template Sections"] + ROLES["📋 Rollen/Berechtigungen"] + LOESCHKONZEPT["🗑️ Löschkonzept"] + DATENSCHUTZ["🔒 Datenschutz"] + AUSWIRKUNGEN_AN["👥 Auswirkungen auf AN"] + end + + INTRO --> SPAWNED + + subgraph TESTPHASE["Testphase Questions"] + TEST_Q0["Findet eine Testphase statt?"] + TEST_Q0 -->|"Ja"| TEST_Q1["AN-Daten nicht anonymisiert?"] + TEST_Q1 -->|"Ja"| TEST_Q2["Kategorien der AN-Daten?"] + TEST_Q1 -->|"Ja"| TEST_Q3["Anzahl betroffener MA?"] + end + + INTRO --> TEST_Q0 + + subgraph MODULES["Module/Component Selection"] + MOD_COMP["Module oder Komponenten?"] + MOD_COMP -->|"Modul"| MODUL["Modulname eingeben"] + MOD_COMP -->|"Komponente"| KOMP["Komponentenname eingeben"] + MODUL -->|"nicht leer"| SPAWN_MOD["🧩 Spawns: Modulbeschreibung"] + KOMP -->|"nicht leer"| SPAWN_KOMP["🧩 Spawns: Komponentendetails"] + end + + INTRO --> MOD_COMP + + subgraph KI["AI/KI Check"] + KI_CHECK["Kommt KI zum Einsatz?"] + KI_CHECK -->|"Ja"| SPAWN_KI["🤖 Spawns: KI-Informationen"] + end + + INTRO --> KI_CHECK + + subgraph INTERFACES["Interfaces"] + SENS_SCHNITT["Schnittstellen/Exporte?"] + SENS_SCHNITT -->|"Schnittstellen vorhanden"| SPAWN_SCHNITT["🔌 Spawns: Schnittstellen"] + end + + INTRO --> SENS_SCHNITT + + INTRO --> SENS_CHECK["🔍 Sensitivitäts-Check
→ See Section 6"] + + linkStyle default stroke:#22c55e,stroke-width:2px + style INTRO fill:#dcfce7,stroke:#22c55e,stroke-width:3px +``` + +--- + +## 3. 🔵 Einführung mit Ablösung (Introduction with Replacement) Path + +```mermaid +flowchart TB + INTRO_REPL["🔵 Einführung mit Ablösung"] + + subgraph SPAWNED["Auto-Spawned Template Sections"] + ROLES["📋 Rollen/Berechtigungen"] + LOESCHKONZEPT["🗑️ Löschkonzept"] + DATENSCHUTZ["🔒 Datenschutz"] + AUSWIRKUNGEN_AN["👥 Auswirkungen auf AN"] + end + + INTRO_REPL --> SPAWNED + + subgraph REPLACEMENT["Replacement-Specific"] + REPL_Q1["Name des abgelösten Systems?"] + end + + INTRO_REPL --> REPL_Q1 + + subgraph TESTPHASE["Testphase Questions"] + TEST_Q0["Findet eine Testphase statt?"] + TEST_Q0 -->|"Ja"| TEST_Q1["AN-Daten nicht anonymisiert?"] + TEST_Q1 -->|"Ja"| TEST_Q2["Kategorien der AN-Daten?"] + TEST_Q1 -->|"Ja"| TEST_Q3["Anzahl betroffener MA?"] + end + + INTRO_REPL --> TEST_Q0 + + subgraph MODULES["Module/Component Selection"] + MOD_COMP["Module oder Komponenten?"] + MOD_COMP -->|"Modul"| MODUL["Modulname eingeben"] + MOD_COMP -->|"Komponente"| KOMP["Komponentenname eingeben"] + MODUL -->|"nicht leer"| SPAWN_MOD["🧩 Spawns: Modulbeschreibung"] + KOMP -->|"nicht leer"| SPAWN_KOMP["🧩 Spawns: Komponentendetails"] + end + + INTRO_REPL --> MOD_COMP + + subgraph KI["AI/KI Check"] + KI_CHECK["Kommt KI zum Einsatz?"] + KI_CHECK -->|"Ja"| SPAWN_KI["🤖 Spawns: KI-Informationen"] + end + + INTRO_REPL --> KI_CHECK + + subgraph INTERFACES["Interfaces"] + SENS_SCHNITT["Schnittstellen/Exporte?"] + SENS_SCHNITT -->|"Schnittstellen vorhanden"| SPAWN_SCHNITT["🔌 Spawns: Schnittstellen"] + end + + INTRO_REPL --> SENS_SCHNITT + + INTRO_REPL --> SENS_CHECK["🔍 Sensitivitäts-Check
→ See Section 6"] + + linkStyle default stroke:#3b82f6,stroke-width:2px + style INTRO_REPL fill:#dbeafe,stroke:#3b82f6,stroke-width:3px +``` + +--- + +## 4. 🟠 Änderung IT-System (System Modification) Path + +```mermaid +flowchart TB + CHANGE["🟠 Änderung IT-System"] + + subgraph TESTPHASE["Testphase (shared)"] + TEST_Q0["Findet eine Testphase statt?"] + TEST_Q0 -->|"Ja"| TEST_Q1["AN-Daten nicht anonymisiert?"] + end + + CHANGE --> TEST_Q0 + + subgraph MOD_EXT["Module/Component Extension"] + CHANGE_Q1["Modul-/Komponentenerweiterung?"] + CHANGE_Q1 -->|"Ja"| CHANGE_MOD["Neues Modul/Komponente"] + CHANGE_MOD -->|"nicht leer"| SPAWN_AEND_MOD["🧩 Spawns: Neues Modul/Komponente"] + end + + CHANGE --> CHANGE_Q1 + + subgraph FUNC_EXT["Function Extension"] + CHANGE_FUNC["Mitbestimmungspfl. Funktionserweiterung?"] + CHANGE_FUNC -->|"Ja"| CHANGE_FUNC_TYPE["Modulbezogen oder Allgemein?"] + CHANGE_FUNC_TYPE -->|"Modulbezogen"| FUNC_MOD["Betroffenes Modul"] + FUNC_MOD -->|"nicht leer"| SPAWN_FUNC_MOD["🧩 Spawns: Funktionserweiterung"] + CHANGE_FUNC_TYPE -->|"Allgemein"| FUNC_ALLG["Beschreibung der Erweiterung"] + end + + CHANGE --> CHANGE_FUNC + + subgraph ROLES_CHANGE["Role Changes"] + CHANGE_ROLES["Rollen-/Berechtigungsänderungen?"] + CHANGE_ROLES -->|"Ja"| SPAWN_ROLES["📋 Spawns:
Rollen/Berechtigungen
Mitarbeiterdaten"] + end + + CHANGE --> CHANGE_ROLES + + subgraph INTERFACE_CHANGE["Interface Changes"] + AEND_SCHNITT["Schnittstellenänderungen?"] + AEND_SCHNITT -->|"Ja"| SPAWN_AEND_SCHNITT["🔌 Spawns: Änderung Schnittstellen"] + end + + CHANGE --> AEND_SCHNITT + + subgraph RETENTION_CHANGE["Retention Changes"] + CHANGE_FRISTEN["Änderung Aufbewahrungs-/Löschfristen?"] + CHANGE_FRISTEN -->|"Ja"| SPAWN_FRISTEN["📅 Spawns: Änderung Fristen"] + end + + CHANGE --> CHANGE_FRISTEN + + subgraph DATA_CHANGE["Personal Data Changes"] + CHANGE_PBD["Änderung Verarbeitung pers. Daten?"] + CHANGE_PBD -->|"Ja"| SPAWN_PBD["📊 Spawns: Änderung Personendaten"] + end + + CHANGE --> CHANGE_PBD + + subgraph KI_CHANGE["AI/KI Changes"] + KI_AEND["KI neu/erweitert?"] + KI_AEND -->|"Ja"| SPAWN_KI["🤖 Spawns: KI-Informationen"] + end + + CHANGE --> KI_AEND + + CHANGE --> SENS_CHECK["🔍 Sensitivitäts-Check
→ See Section 6"] + + linkStyle default stroke:#f97316,stroke-width:2px + style CHANGE fill:#ffedd5,stroke:#f97316,stroke-width:3px +``` + +--- + +## 5. 🔴 Einstellung IT-System (System Discontinuation) Path + +```mermaid +flowchart TB + DISCONTINUE["🔴 Einstellung IT-System"] + + subgraph BASIC["Basic Information"] + DISC_Q1["Welches System wird eingestellt?"] + DISC_Q2["Grund für Einstellung?"] + DISC_Q10["Geplanter Zeitpunkt?"] + end + + DISCONTINUE --> DISC_Q1 + DISCONTINUE --> DISC_Q2 + DISCONTINUE --> DISC_Q10 + + subgraph REPLACEMENT["Replacement System"] + DISC_Q3["Tritt anderes System an dessen Stelle?"] + DISC_Q3 -->|"Ja"| DISC_Q4["Name des Ersatzsystems?"] + end + + DISCONTINUE --> DISC_Q3 + + subgraph WORKFLOW_IMPACT["Workflow Impact"] + DISC_Q5["Auswirkungen auf Arbeitsabläufe?"] + DISC_Q5 -->|"Ja"| DISC_Q6["Beschreibung der Auswirkungen"] + end + + DISCONTINUE --> DISC_Q5 + + subgraph HR_IMPACT["HR Impact"] + DISC_Q7["Auswirkungen auf Personalplanung?"] + DISC_Q7 -->|"Ja"| DISC_Q8["Beschreibung"] + end + + DISCONTINUE --> DISC_Q7 + + subgraph ECONOMIC_IMPACT["Economic Impact"] + DISC_Q9["Wirtschaftliche Auswirkungen?"] + DISC_Q9 -->|"Ja"| DISC_Q9A["Beschreibung"] + end + + DISCONTINUE --> DISC_Q9 + + subgraph AFFECTED["Affected Areas"] + DISC_Q11["Betroffene Betriebe/Betriebsteile?"] + DISC_Q12["Betroffene Abteilungen/Bereiche?"] + end + + DISCONTINUE --> DISC_Q11 + DISCONTINUE --> DISC_Q12 + + linkStyle default stroke:#ef4444,stroke-width:2px + style DISCONTINUE fill:#fee2e2,stroke:#ef4444,stroke-width:3px +``` + +## 6. 🔍 Sensitivitäts-Check (Sensitivity Assessment) + +The sensitivity check determines how detailed the form becomes for employee data processing. This section applies to **Einführung**, **Einführung mit Ablösung**, and **Änderung** paths. + +### 6.1 Initial Data Processing Assessment + +```mermaid +flowchart TB + SENS_START["🔍 Sensitivitäts-Check
Start"] + + SENS_1["Verarbeitet das System Arbeitnehmerdaten?"] + + SENS_START --> SENS_1 + + SENS_1 -->|"Keine Arbeitnehmerdaten"| END_NONE["✅ Keine weiteren
Sensitivitätsfragen"] + SENS_1 -->|"Anonymisiert
(ohne Reidentifikation)"| END_ANON["✅ Keine weiteren
Sensitivitätsfragen"] + SENS_1 -->|"Personenbeziehbar"| SENS_2["Continue to
Visibility Check ↓"] + SENS_1 -->|"Personenbeziehbar"| SPAWN_MIT["📊 Spawns:
Verarbeitung Mitarbeiterdaten"] + + style END_NONE fill:#dcfce7,stroke:#22c55e + style END_ANON fill:#dcfce7,stroke:#22c55e + style SPAWN_MIT fill:#fef3c7,stroke:#f59e0b,stroke-width:2px + + linkStyle 2 stroke:#dc2626,stroke-width:2px + linkStyle 3 stroke:#dc2626,stroke-width:2px +``` + +### 6.2 Data Visibility Assessment + +```mermaid +flowchart TB + SENS_2["Sind Arbeitnehmerdaten im System sichtbar?"] + + SENS_2 -->|"Nein"| VIS_NO["📋 Minimale Darstellung"] + SENS_2 -->|"Aggregiert"| VIS_AGG["📋 Einfache Darstellung"] + SENS_2 -->|"Für Administrator"| VIS_ADMIN["📋 Einfache Darstellung"] + SENS_2 -->|"Für mehrere Rollen"| SENS_3["Continue to
Analytics Check ↓"] + + style VIS_NO fill:#dcfce7,stroke:#22c55e + style VIS_AGG fill:#fef9c3,stroke:#eab308 + style VIS_ADMIN fill:#fef9c3,stroke:#eab308 + + linkStyle 3 stroke:#dc2626,stroke-width:2px +``` + +### 6.3 Analytics & Performance Control Assessment + +```mermaid +flowchart TB + SENS_3["Analytische Funktionen für
Leistungs-/Verhaltenskontrolle?
"] + + SENS_3 -->|"Keine"| ANAL_NO["📋 Einfache Darstellung"] + SENS_3 -->|"Funktionen vorhanden"| ANAL_YES["⚠️ Umfassende Darstellung aktiviert"] + + ANAL_YES --> SENS_4["Welche Funktionen?"] + ANAL_YES --> SENS_5["Rankings/Scores/Benchmarks?"] + ANAL_YES --> SENS_6["Nutzung für LuV-Kontrolle?"] + + SENS_4 --> FUNC_LIST["☑️ Berichte
☑️ Reports
☑️ Dashboards
☑️ Rankings
☑️ Scores
☑️ Vergleiche
☑️ Sonstiges"] + + SENS_5 -->|"Nein"| RANK_NO["Standard"] + SENS_5 -->|"Konfigurierbar (deaktiviert)"| RANK_CONFIG["⚠️ Review Required"] + SENS_5 -->|"Aktiviert"| RANK_ACTIVE["🔴 Sensitive"] + + SENS_6 -->|"Nein"| LUV_NO["📋 Standard Umfassend"] + SENS_6 -->|"Aggregiert (Team)"| LUV_TEAM["📊 Umfassend + LuV-Details"] + SENS_6 -->|"Aggregiert (Abteilung)"| LUV_DEPT["📊 Umfassend + LuV-Details"] + SENS_6 -->|"Aggregiert (Standort)"| LUV_LOC["📊 Umfassend + LuV-Details"] + SENS_6 -->|"Individuell/vergleichend"| LUV_IND["🔴 Vollständige Darstellung:
Rollenstamm, Permissions,
Scopes, Schranken"] + + style ANAL_NO fill:#dcfce7,stroke:#22c55e + style ANAL_YES fill:#fef3c7,stroke:#f59e0b,stroke-width:2px + style LUV_IND fill:#fee2e2,stroke:#ef4444,stroke-width:2px + style RANK_ACTIVE fill:#fee2e2,stroke:#ef4444 + + linkStyle 1 stroke:#dc2626,stroke-width:2px +``` + +### 6.4 Additional Sensitivity Questions + +```mermaid +flowchart TB + subgraph ADDITIONAL["Additional Sensitivity Questions
(visible when Art der Maßnahme ≠ Einstellung)"] + + TRACK["Ereignisse, Nutzungen, Logs erfasst?"] + TRACK -->|"Nein"| TRACK_NO["✅"] + TRACK -->|"Technisch"| TRACK_TECH["✅"] + TRACK -->|"Nutzer-/Aktivitätsbezug"| TRACK_USER["🔴 Sensitive"] + + ALARM["Automatische Alarme/Trigger?"] + ALARM -->|"Nein"| ALARM_NO["✅"] + ALARM -->|"Technisch"| ALARM_TECH["✅"] + ALARM -->|"Fachlich"| ALARM_FACH["⚠️ Review"] + + ANAL_FUNC["Dashboards/Reports/Trends?"] + ANAL_FUNC -->|"Keine"| ANAL_NO["✅"] + ANAL_FUNC -->|"Aggregiert"| ANAL_AGG["⚠️ Review"] + ANAL_FUNC -->|"Individualisiert"| ANAL_IND["🔴 Sensitive"] + + AUTO["System bewertet/empfiehlt über Beschäftigte?"] + AUTO -->|"Nein"| AUTO_NO["✅"] + AUTO -->|"Unterstützend"| AUTO_SUPP["⚠️ Review"] + AUTO -->|"Auto-Entscheidungen"| AUTO_YES["🔴 Sensitive"] + + UPDATE["Automatische Updates ohne Freigabe?"] + UPDATE -->|"Nein"| UPD_NO["✅"] + UPDATE -->|"Mit Release Notes"| UPD_REL["✅"] + UPDATE -->|"Automatisch"| UPD_AUTO["⚠️ Review"] + + REMOTE["Remote-Admin-/Supportzugriffe?"] + REMOTE -->|"Kein Remotezugriff"| REM_NO["✅"] + REMOTE -->|"Anlassbezogen"| REM_OCC["⚠️ Review"] + REMOTE -->|"Umfassend"| REM_FULL["🔴 Sensitive"] + end + + style TRACK_USER fill:#fee2e2,stroke:#ef4444 + style ANAL_IND fill:#fee2e2,stroke:#ef4444 + style AUTO_YES fill:#fee2e2,stroke:#ef4444 + style REM_FULL fill:#fee2e2,stroke:#ef4444 +``` + +--- + +## 7. Spawned Template Sections Detail + +### 7.1 Module Details Template + +```mermaid +flowchart TB + subgraph MODULE_DETAIL["Modulbeschreibung (spawned section)"] + MD1["modul_beschreibung
Funktionalität beschreiben"] + MD2["modul_nutzergruppen_tabelle
Welche Rollen nutzen Modul?"] + MD3["modul_analytische_funktionen_tabelle
Analytische Funktionen?"] + MD4["modul_konfigurierbar
Konfigurierbar für LuV-Begrenzung?"] + MD4 -->|"Ja"| MD5["modul_konfigurationen_tabelle"] + MD6["modul_update_dynamik
Änderungs-/Updatedynamik?"] + MD7["modul_referenzen_tabelle
Referenzen zu VV und Schnittstellen"] + end +``` + +### 7.2 Employee Impact Template + +```mermaid +flowchart TB + subgraph AUSWIRKUNGEN["Auswirkungen auf Arbeitnehmer (spawned section)"] + AW1["1. auswirkungen_arbeitsablaeufe
Änderungen Arbeitsabläufe?"] + AW1 -->|"Ja"| AW1A["Betroffene Bereiche?
Betroffene Prozesse?
Art der Änderungen?"] + + AW2["2. auswirkungen_arbeitsbedingungen
Änderung Arbeitsbedingungen?"] + AW2 -->|"Ja"| AW2A["Beschreibung"] + + AW3["3. auswirkungen_zustaendigkeiten
Änderung Zuständigkeiten?"] + AW3 -->|"Ja"| AW3A["Beschreibung"] + + AW4["4. auswirkungen_arbeitsplaetze_entfallen
Arbeitsplätze entfallen?"] + AW4 -->|"Ja"| AW4A["Beschreibung"] + + AW5["5. auswirkungen_taetigkeitsumfang
Tätigkeitsumfang verringert?"] + AW5 -->|"Ja"| AW5A["Beschreibung"] + + AW6["6. auswirkungen_arbeitsverdichtung
Arbeitsverdichtung?"] + AW6 -->|"Ja"| AW6A["Beschreibung"] + + AW7["7. auswirkungen_software_ergonomie
Software-Ergonomie geprüft?"] + AW7 -->|"Ja"| AW7A["Ergebnis"] + + AW8["8. auswirkungen_barrierefreiheit
Barrierefreiheit berücksichtigt?"] + AW8 -->|"Ja"| AW8A["Beschreibung"] + + AW9["9. auswirkungen_gefaehrdungsbeurteilung
Gefährdungsbeurteilung?"] + AW9 -->|"Ja"| AW9A["Ergebnisse"] + + AW10["10. auswirkungen_schulungen
Schulungsmaßnahmen?"] + AW10 -->|"Ja"| AW10A["Angaben zu Schulungen"] + end +``` + +### 7.3 Data Protection Template + +```mermaid +flowchart TB + subgraph DATENSCHUTZ_DETAIL["Datenschutz (spawned section)"] + DS1["datenschutz_verantwortlichkeit_art
Art der Verantwortlichkeit?"] + + DS1 -->|"Auftragsdatenverarbeitung"| DS2["datenschutz_adv_tabelle
ADV-Details"] + DS1 -->|"Gemeinsame Verantwortlichkeit"| DS3["datenschutz_gemeinsam_tabelle
+ Verpflichtungen DSGVO"] + DS1 -->|"Dritter eigenständig"| DS4["datenschutz_eigenstaendig_tabelle"] + + DS5["datenschutz_dsfa_tabelle
DSFA erforderlich?"] + + DS6["datenschutz_drittstaaten
Drittstaatenübermittlung?"] + DS6 -->|"Ja"| DS7["datenschutz_drittstaaten_tabelle
Länder, Rechtsgrundlage, Maßnahmen"] + + DS8["datenschutz_toms_tabelle
Technische & organisatorische Maßnahmen"] + end +``` + +### 7.4 AI Information Template + +```mermaid +flowchart TB + subgraph KI_INFO["KI-Informationen (spawned section)"] + KI1["ki_info_risikoklasse
EU-KI-VO Risikoklasse?"] + + KI1 -->|"Klasse 1
(geringes Risiko)"| KI_BASIC["Allgemeine Infos:
- Funktionsweise
- Einsatzzweck
- Pilotprojekt?
- Sicherheitsmaßnahmen"] + + KI1 -->|"Klasse 2
(begrenztes Risiko)"| KI_TRANS["+ Transparenz:
- Trainingsdaten-Doku?
- AN informiert?
- Ergebnisse gekennzeichnet?
- Nutzereingaben für Training?
- Nachvollziehbarkeit?"] + + KI1 -->|"Klasse 3
(Hochrisiko)"| KI_HIGH["+ Hochrisiko-Anforderungen:
- EU-Dokumentation?
- Qualitätsmanagement?
- Betriebsanleitung?
- Konformität/CE?
- Menschliche Aufsicht?
- Grundrechte-Folgenabschätzung?"] + end +``` + +--- + +## 8. Form Flow Summary + +### 8.1 Main Decision Tree (`art_der_massnahme`) + +| Answer | German | Effect | +|--------|--------|--------| +| **Einführung** | New System Introduction | Spawns: Rollen/Berechtigungen, Löschkonzept, Datenschutz, Auswirkungen auf AN | +| **Einführung mit Ablösung** | Introduction + Replacement | Same as above + asks for replaced system name | +| **Änderung IT-System** | System Modification | Shows change-specific questions (modules, functions, interfaces, data) | +| **Einstellung IT-System** | System Discontinuation | Shows discontinuation impact questions | + +### 8.2 Key Visibility Chains + +``` +sens_verarbeitung_arbeitnehmerdaten = "Personenbeziehbar" + └── sens_sichtbarkeit ("Für mehrere Rollen") + └── sens_auswertung ("Funktionen vorhanden") + └── sens_luv ("Individuell/vergleichend") + └── Shows: Umfassende Rollen-/Berechtigungsdarstellung + (Rollenstamm, Permissions, Scopes, Schranken) +``` + +### 8.3 Spawned Template Sections + +| Template Reference | Trigger Condition | German Title | +|-------------------|-------------------|--------------| +| `rollen_berechtigungen_template` | art_der_massnahme = Einführung | Rollen und Berechtigungen | +| `loeschkonzept_template` | art_der_massnahme = Einführung | Löschkonzept | +| `datenschutz_template` | art_der_massnahme = Einführung | Datenschutz | +| `auswirkungen_arbeitnehmer_template` | art_der_massnahme = Einführung | Auswirkungen auf Arbeitnehmer | +| `verarbeitung_mitarbeiterdaten_template` | sens_verarbeitung_arbeitnehmerdaten = Personenbeziehbar | Verarbeitung von Mitarbeiterdaten | +| `module_details_template` | modul_1 IS_NOT_EMPTY | Modul: {{triggerValue}} | +| `component_details_template` | komponente_1 IS_NOT_EMPTY | Komponente: {{triggerValue}} | +| `ki_informationen_template` | sens_ki = Ja | Informationen zur KI | +| `schnittstellen_template` | sens_schnittstellen_export = "Schnittstellen vorhanden" | Schnittstellen | +| `aenderung_schnittstellen_template` | aenderung_schnittstellen = Ja | Änderung Schnittstellen | +| `aenderung_modul_details_template` | aenderung_modul_1 IS_NOT_EMPTY | Neues Modul/Komponente: {{triggerValue}} | +| `aenderung_funktionserweiterung_modul_template` | aenderung_funktionserweiterung_modul_1 IS_NOT_EMPTY | Funktionserweiterung: {{triggerValue}} | +| `aenderung_aufbewahrungs_loeschfristen_template` | aenderung_aufbewahrungs_loeschfristen = Ja | Änderung Aufbewahrungs-/Löschfristen | +| `aenderung_personenbezogene_daten_template` | aenderung_personenbezogene_daten = Ja | Änderung Verarbeitung personenbezogener Daten | + +### 8.4 Simple vs. Comprehensive Display Logic + +The form shows **einfache (simple)** or **umfassende (comprehensive)** tables based on sensitivity: + +- **Simple**: `sens_sichtbarkeit = "Für Administrator"` OR `sens_auswertung = "Keine"` +- **Comprehensive**: `sens_sichtbarkeit ≠ "Für Administrator"` AND `sens_auswertung = "Funktionen vorhanden"` AND `sens_luv` contains aggregated/individual values + +--- + +## 9. Element Types Used + +| Type | Description | Example | +|------|-------------|---------| +| `RADIOBUTTON` | Single choice from options | art_der_massnahme | +| `CHECKBOX` | Multiple choices | speicherort (Rechenzentrum, Cloud) | +| `TEXTAREA` | Free text input | systembeschreibung | +| `TEXTFIELD` | Single line text | globales_loeschkonzept_referenz | +| `DATE` | Date picker | aenderung_zeitpunkt | +| `TABLE` | Tabular data entry | rollenstamm_tabelle | +| `RICH_TEXT` | Formatted text | teilweises_loeschkonzept_abweichungen | +| `FILE_UPLOAD` | File attachment | ki_dokumentation | + +## 10. Clonable Elements + +Elements with `isClonable: true` allow users to add multiple entries: + +- `modul_1` - Add multiple modules +- `komponente_1` - Add multiple components +- `aenderung_modul_1` - Add multiple new modules/components +- `aenderung_funktionserweiterung_modul_1` - Add multiple function extensions + +When cloned, references are auto-incremented (e.g., `modul_1` → `modul_2` → `modul_3`). \ No newline at end of file diff --git a/legalconsenthub-backend/CLAUDE.md b/legalconsenthub-backend/CLAUDE.md index ed3a465..f2bfb3b 100644 --- a/legalconsenthub-backend/CLAUDE.md +++ b/legalconsenthub-backend/CLAUDE.md @@ -62,7 +62,7 @@ formElementSections: **Condition:** Seeds if no templates exist (`isTemplate = true`) **Purpose:** Comprehensive IT system approval workflow template (16 sections) -**IMPORTANT:** Keep section files updated when form structure or validation rules change. After any change, also update the flow diagram at `docs/FORM-FLOW-DIAGRAM.md`. +**IMPORTANT:** Keep section files updated when form structure or validation rules change. After any change, also update the flow diagram at `docs/form-flow-diagram.md`. ### 2. Application Form Seeding **Seeder:** `InitialApplicationFormSeeder` @@ -89,7 +89,7 @@ formElementSections: | `src/main/kotlin/.../seed/SplitYamlLoader.kt` | YAML merger for !include directives | | `src/main/resources/db/changelog/` | Liquibase migrations | | `src/main/kotlin/com/legalconsenthub/service/ApplicationFormFormatService.kt` | HTML/PDF export logic | -| `docs/FORM-FLOW-DIAGRAM.md` | Visual form flow diagram (update after template changes) | +| `docs/form-flow-diagram.md` | Visual form flow diagram (update after template changes) | ---