diff --git a/README.md b/README.md index 29061ce..128565c 100644 --- a/README.md +++ b/README.md @@ -155,11 +155,28 @@ Massenimporte gibt es zwei Wege: |---|---| | `npm run import-csv` | **Führender Weg:** DSE-Gesamtliste einlesen (`--dry-run`, `--prune`, `--no-json`) | | `npm run check-completeness` | Berichtet fehlende Pflichtangaben (`--list`) | +| `npm run enrich-legal-basis` | Ergänzt die DSGVO-Rechtsgrundlage zur Fachnorm (`--dry-run`) | +| `npm run fix-legal-citations` | Korrigiert geprüfte Fachrechts-Zitate (`--dry-run`) | | `npm run compare-csv-pdf` | Gesamtliste gegen die alten Merkblatt-PDFs abgleichen (`--detail`) | | `npm run import-policy -- data/policies/.json` | Einzelne Erklärung aus JSON importieren (`--update` überschreibt) | | `npm run analyze-pdfs` | PDFs in `data/import/` analysieren, ohne zu schreiben | | `npm run import-pdfs` | Älterer Weg: PDFs aus `data/import/` importieren | +#### Rechtsprüfung + +Die Liste nennt je Verarbeitung nur die Fachnorm. Art. 13 Abs. 1 lit. c DSGVO +verlangt darüber hinaus die datenschutzrechtliche Erlaubnisnorm. +`enrich-legal-basis` ergänzt sie nach Art der Verarbeitung – hoheitlich +Art. 6 Abs. 1 lit. e i. V. m. § 3 LDSG SH, Beschäftigtendaten lit. b i. V. m. +§ 15 LDSG SH, dazu Einwilligung und Vertrag. `fix-legal-citations` korrigiert +einzelne, gegen den geltenden Normbestand geprüfte Zitate; die Begründung steht +je Eintrag im Skript. + +Beide Skripte fassen nur an, wofür eine belegte Fassung vorliegt. Fehlende +Speicherfristen, Zwecke und Datenkategorien werden **nicht** ergänzt – sie +ergeben sich nicht aus dem Gesetz, sondern aus der Arbeitsweise des +Fachbereichs. + #### DSE-Gesamtliste (CSV) Führende Quelle ist der Excel-Export `DSE_Gesamtliste_Amt_Leezen.CSV`. Er wird diff --git a/data/policies/aenderungsmitteilung-auf-hilfe-fuer-bildung-u-teilhabe.json b/data/policies/aenderungsmitteilung-auf-hilfe-fuer-bildung-u-teilhabe.json index 65de3dd..becbeec 100644 --- a/data/policies/aenderungsmitteilung-auf-hilfe-fuer-bildung-u-teilhabe.json +++ b/data/policies/aenderungsmitteilung-auf-hilfe-fuer-bildung-u-teilhabe.json @@ -4,7 +4,7 @@ "title": "Änderungsmitteilung auf Hilfe für Bildung u. Teilhabe", "processingDescription": "**Änderungsmitteilung auf Hilfe für Bildung u. Teilhabe**\n\nFachbereich: FB II\nFachdienst: Sozialamt\nAufgabenbereich: Sozialamt\nDienstleistung: Sozialhilfe: Hilfe in anderen Lebenslagen\nFormularnummer: FBII_Sozial_006\n\nWir verarbeiten Ihre notwendigen personenbezogenen Daten zur Erfüllung unserer Aufgaben stets im Einklang mit den jeweils anwendbaren gesetzlichen Datenschutzanforderungen zu den nachfolgend aufgeführten Zwecken. Personenbezogene Daten sind sämtliche Informationen, die einen Bezug zu einer Person aufweisen.", "processingPurposes": "Gewährung v. Sozialleistungen n. SGB", - "legalBasis": "**Art. 6 Abs. 1 lit. e DSGVO** i. V. m. **§ 3 LDSG SH** – Verarbeitung zur Wahrnehmung einer Aufgabe, die im öffentlichen Interesse liegt oder in Ausübung öffentlicher Gewalt erfolgt.\n\nKonkrete Rechtsgrundlage: SGB XII", + "legalBasis": "**Art. 6 Abs. 1 lit. e DSGVO** i. V. m. **§ 3 LDSG SH** – Verarbeitung zur Wahrnehmung einer Aufgabe, die im öffentlichen Interesse liegt oder in Ausübung öffentlicher Gewalt erfolgt.\n\nKonkrete Rechtsgrundlage: § 34 SGB XII", "legitimateInterests": null, "recipients": "Bei Ein- und Auszahlungen: Finanzbuchhaltung\nFinanzabt. Amt Leezen; Kreissozialamt", "storageDuration": "10 Jahre nach Beendigung d. Leistung", diff --git a/data/policies/antrag-auf-ausstellung-eines-wohnberechtigungsscheines.json b/data/policies/antrag-auf-ausstellung-eines-wohnberechtigungsscheines.json index 55068d7..3c581f4 100644 --- a/data/policies/antrag-auf-ausstellung-eines-wohnberechtigungsscheines.json +++ b/data/policies/antrag-auf-ausstellung-eines-wohnberechtigungsscheines.json @@ -4,7 +4,7 @@ "title": "Antrag auf Ausstellung eines Wohnberechtigungsscheines", "processingDescription": "**Antrag auf Ausstellung eines Wohnberechtigungsscheines**\n\nFachbereich: FB II\nFachdienst: Sozialamt\nAufgabenbereich: Sozialamt\nDienstleistung: Wohnberechtigungsschein\nFormularnummer: FBII_Sozial_013\n\nWir verarbeiten Ihre notwendigen personenbezogenen Daten zur Erfüllung unserer Aufgaben stets im Einklang mit den jeweils anwendbaren gesetzlichen Datenschutzanforderungen zu den nachfolgend aufgeführten Zwecken. Personenbezogene Daten sind sämtliche Informationen, die einen Bezug zu einer Person aufweisen.", "processingPurposes": "Ausstellung eines Wohnberechtigungsscheines", - "legalBasis": "**Art. 6 Abs. 1 lit. e DSGVO** i. V. m. **§ 3 LDSG SH** – Verarbeitung zur Wahrnehmung einer Aufgabe, die im öffentlichen Interesse liegt oder in Ausübung öffentlicher Gewalt erfolgt.\n\nKonkrete Rechtsgrundlage: Wohnberechtigungsschein", + "legalBasis": "**Art. 6 Abs. 1 lit. e DSGVO** i. V. m. **§ 3 LDSG SH** – Verarbeitung zur Wahrnehmung einer Aufgabe, die im öffentlichen Interesse liegt oder in Ausübung öffentlicher Gewalt erfolgt.\n\nKonkrete Rechtsgrundlage: § 27 WoFG i. V. m. § 5 WoBindG", "legitimateInterests": null, "recipients": "Bei Ein- und Auszahlungen: Finanzbuchhaltung\nVermieter", "storageDuration": "2 Jahre nach Gültigkeitsablauf", diff --git a/data/policies/antrag-auf-hilfe-fuer-bildung-u-teilhabe-hilfe-f-mehrtaegige.json b/data/policies/antrag-auf-hilfe-fuer-bildung-u-teilhabe-hilfe-f-mehrtaegige.json index 82f9fe5..3663b7d 100644 --- a/data/policies/antrag-auf-hilfe-fuer-bildung-u-teilhabe-hilfe-f-mehrtaegige.json +++ b/data/policies/antrag-auf-hilfe-fuer-bildung-u-teilhabe-hilfe-f-mehrtaegige.json @@ -4,7 +4,7 @@ "title": "Antrag auf Hilfe für Bildung u. Teilhabe: Hilfe f. mehrtägige Klassenfahrten", "processingDescription": "**Antrag auf Hilfe für Bildung u. Teilhabe: Hilfe f. mehrtägige Klassenfahrten**\n\nFachbereich: FB II\nFachdienst: Sozialamt\nAufgabenbereich: Sozialamt\nDienstleistung: Sozialhilfe: Hilfe in anderen Lebenslagen\nFormularnummer: FBII_Sozial_005\n\nWir verarbeiten Ihre notwendigen personenbezogenen Daten zur Erfüllung unserer Aufgaben stets im Einklang mit den jeweils anwendbaren gesetzlichen Datenschutzanforderungen zu den nachfolgend aufgeführten Zwecken. Personenbezogene Daten sind sämtliche Informationen, die einen Bezug zu einer Person aufweisen.", "processingPurposes": "Gewährung v. Sozialleistungen n. SGB", - "legalBasis": "**Art. 6 Abs. 1 lit. e DSGVO** i. V. m. **§ 3 LDSG SH** – Verarbeitung zur Wahrnehmung einer Aufgabe, die im öffentlichen Interesse liegt oder in Ausübung öffentlicher Gewalt erfolgt.\n\nKonkrete Rechtsgrundlage: SGB XII", + "legalBasis": "**Art. 6 Abs. 1 lit. e DSGVO** i. V. m. **§ 3 LDSG SH** – Verarbeitung zur Wahrnehmung einer Aufgabe, die im öffentlichen Interesse liegt oder in Ausübung öffentlicher Gewalt erfolgt.\n\nKonkrete Rechtsgrundlage: § 34 SGB XII", "legitimateInterests": null, "recipients": "Bei Ein- und Auszahlungen: Finanzbuchhaltung\nFinanzabt. Amt Leezen; Kreissozialamt", "storageDuration": "10 Jahre nach Beendigung d. Leistung", diff --git a/data/policies/antrag-auf-hilfe-fuer-bildung-u-teilhabe.json b/data/policies/antrag-auf-hilfe-fuer-bildung-u-teilhabe.json index b7d803f..a672f21 100644 --- a/data/policies/antrag-auf-hilfe-fuer-bildung-u-teilhabe.json +++ b/data/policies/antrag-auf-hilfe-fuer-bildung-u-teilhabe.json @@ -4,7 +4,7 @@ "title": "Antrag auf Hilfe für Bildung u. Teilhabe", "processingDescription": "**Antrag auf Hilfe für Bildung u. Teilhabe**\n\nFachbereich: FB II\nFachdienst: Sozialamt\nAufgabenbereich: Sozialamt\nDienstleistung: Sozialhilfe: Hilfe in anderen Lebenslagen\nFormularnummer: FBII_Sozial_004\n\nWir verarbeiten Ihre notwendigen personenbezogenen Daten zur Erfüllung unserer Aufgaben stets im Einklang mit den jeweils anwendbaren gesetzlichen Datenschutzanforderungen zu den nachfolgend aufgeführten Zwecken. Personenbezogene Daten sind sämtliche Informationen, die einen Bezug zu einer Person aufweisen.", "processingPurposes": "Gewährung v. Sozialleistungen n. SGB", - "legalBasis": "**Art. 6 Abs. 1 lit. e DSGVO** i. V. m. **§ 3 LDSG SH** – Verarbeitung zur Wahrnehmung einer Aufgabe, die im öffentlichen Interesse liegt oder in Ausübung öffentlicher Gewalt erfolgt.\n\nKonkrete Rechtsgrundlage: SGB XII, BKKG", + "legalBasis": "**Art. 6 Abs. 1 lit. e DSGVO** i. V. m. **§ 3 LDSG SH** – Verarbeitung zur Wahrnehmung einer Aufgabe, die im öffentlichen Interesse liegt oder in Ausübung öffentlicher Gewalt erfolgt.\n\nKonkrete Rechtsgrundlage: § 34 SGB XII, § 6b BKGG", "legitimateInterests": null, "recipients": "Bei Ein- und Auszahlungen: Finanzbuchhaltung\nFinanzabt. Amt Leezen; Kreissozialamt", "storageDuration": "10 Jahre nach Beendigung d. Leistung", diff --git a/data/policies/arbeitsmedizinische-untersuchungen-unfallfuersorge.json b/data/policies/arbeitsmedizinische-untersuchungen-unfallfuersorge.json index b3a5104..8277d4f 100644 --- a/data/policies/arbeitsmedizinische-untersuchungen-unfallfuersorge.json +++ b/data/policies/arbeitsmedizinische-untersuchungen-unfallfuersorge.json @@ -4,7 +4,7 @@ "title": "Arbeitsmedizinische Untersuchungen, Unfallfürsorge", "processingDescription": "**Arbeitsmedizinische Untersuchungen, Unfallfürsorge**\n\nFachbereich: FB I\nFachdienst: Personalamt\nAufgabenbereich: Personal\nFormularnummer: FBI_Personal_007\n\nWir verarbeiten Ihre notwendigen personenbezogenen Daten zur Erfüllung unserer Aufgaben stets im Einklang mit den jeweils anwendbaren gesetzlichen Datenschutzanforderungen zu den nachfolgend aufgeführten Zwecken. Personenbezogene Daten sind sämtliche Informationen, die einen Bezug zu einer Person aufweisen.", "processingPurposes": "Untersuchungen durch Betriebsärzte, Sicherheitsingenieur und Versicherung bei Betriebsunfall", - "legalBasis": "**Art. 6 Abs. 1 lit. b DSGVO** i. V. m. **§ 15 LDSG SH** – Verarbeitung für Zwecke des Beschäftigungsverhältnisses.\n\nKonkrete Rechtsgrundlage: ArbMedVV", + "legalBasis": "**Art. 6 Abs. 1 lit. b DSGVO** i. V. m. **§ 15 LDSG SH** – Verarbeitung für Zwecke des Beschäftigungsverhältnisses.\n\nKonkrete Rechtsgrundlage: ArbMedVV\n\nSoweit Gesundheitsdaten verarbeitet werden: **Art. 9 Abs. 2 lit. b DSGVO** i. V. m. **§ 15 LDSG SH** – Verarbeitung besonderer Kategorien personenbezogener Daten zur Erfüllung von Pflichten aus dem Arbeits- und Sozialrecht.", "legitimateInterests": null, "recipients": "Bei Ein- und Auszahlungen: Finanzbuchhaltung\nBAD, Unfallkasse Nord, Sicherheitsingenier", "storageDuration": "min. aktive Dienstzeit zzgl. ggf. Ruhe- u. Hinterbliebenenbezüge", diff --git a/data/policies/ausschreibungsunterlagen.json b/data/policies/ausschreibungsunterlagen.json index 7903e7e..3bec404 100644 --- a/data/policies/ausschreibungsunterlagen.json +++ b/data/policies/ausschreibungsunterlagen.json @@ -4,7 +4,7 @@ "title": "Ausschreibungsunterlagen", "processingDescription": "**Ausschreibungsunterlagen**\n\nFachbereich: FB II\nFachdienst: Ordnungsamt\nAufgabenbereich: Ordnungsamt\nDienstleistung: Feuerwehrwesen/Brandschutz\nFormularnummer: FBII_Ordnung_005\n\nWir verarbeiten Ihre notwendigen personenbezogenen Daten zur Erfüllung unserer Aufgaben stets im Einklang mit den jeweils anwendbaren gesetzlichen Datenschutzanforderungen zu den nachfolgend aufgeführten Zwecken. Personenbezogene Daten sind sämtliche Informationen, die einen Bezug zu einer Person aufweisen.", "processingPurposes": "Ausschreibung Beschaffung", - "legalBasis": "**Art. 6 Abs. 1 lit. e DSGVO** i. V. m. **§ 3 LDSG SH** – Verarbeitung zur Wahrnehmung einer Aufgabe, die im öffentlichen Interesse liegt oder in Ausübung öffentlicher Gewalt erfolgt.\n\nKonkrete Rechtsgrundlage: VOL/VgV/UVGO/VGO S-H", + "legalBasis": "**Art. 6 Abs. 1 lit. e DSGVO** i. V. m. **§ 3 LDSG SH** – Verarbeitung zur Wahrnehmung einer Aufgabe, die im öffentlichen Interesse liegt oder in Ausübung öffentlicher Gewalt erfolgt.\n\nKonkrete Rechtsgrundlage: VgV/UVgO/VGO S-H", "legitimateInterests": null, "recipients": "Bei Ein- und Auszahlungen: Finanzbuchhaltung\nBieter", "storageDuration": null, diff --git a/data/policies/bauantrag.json b/data/policies/bauantrag.json index 7078f92..358294c 100644 --- a/data/policies/bauantrag.json +++ b/data/policies/bauantrag.json @@ -4,7 +4,7 @@ "title": "Bauantrag", "processingDescription": "**Bauantrag**\n\nFachbereich: FB I\nFachdienst: Bauamt\nAufgabenbereich: Bauantrag, Genehmigungsfreistellung, Anzeige Beseitigung von Anlagen, Bauvoranfragen, Befreiung- u. Abweichungen\nDienstleistung: Bauantrag, Genehmigungsfreistellung, Anzeige Beseitigung von Anlagen\nFormularnummer: FBI_Bau_001\n\nWir verarbeiten Ihre notwendigen personenbezogenen Daten zur Erfüllung unserer Aufgaben stets im Einklang mit den jeweils anwendbaren gesetzlichen Datenschutzanforderungen zu den nachfolgend aufgeführten Zwecken. Personenbezogene Daten sind sämtliche Informationen, die einen Bezug zu einer Person aufweisen.", "processingPurposes": "Genehmigung eines Bauvorhabens", - "legalBasis": "**Art. 6 Abs. 1 lit. e DSGVO** i. V. m. **§ 3 LDSG SH** – Verarbeitung zur Wahrnehmung einer Aufgabe, die im öffentlichen Interesse liegt oder in Ausübung öffentlicher Gewalt erfolgt.\n\nKonkrete Rechtsgrundlage: § 64 LBO", + "legalBasis": "**Art. 6 Abs. 1 lit. e DSGVO** i. V. m. **§ 3 LDSG SH** – Verarbeitung zur Wahrnehmung einer Aufgabe, die im öffentlichen Interesse liegt oder in Ausübung öffentlicher Gewalt erfolgt.\n\nKonkrete Rechtsgrundlage: §§ 64, 68 LBO", "legitimateInterests": null, "recipients": "Bei Ein- und Auszahlungen: Finanzbuchhaltung", "storageDuration": null, diff --git a/data/policies/bauvoranfrage.json b/data/policies/bauvoranfrage.json index 58e229b..0ed3ef3 100644 --- a/data/policies/bauvoranfrage.json +++ b/data/policies/bauvoranfrage.json @@ -4,7 +4,7 @@ "title": "Bauvoranfrage", "processingDescription": "**Bauvoranfrage**\n\nFachbereich: FB I\nFachdienst: Bauamt\nAufgabenbereich: Bauantrag, Genehmigungsfreistellung, Anzeige Beseitigung von Anlagen, Bauvoranfragen, Befreiung- u. Abweichungen\nDienstleistung: Bauantrag, Genehmigungsfreistellung, Anzeige Beseitigung von Anlagen\nFormularnummer: FBI_Bau_002\n\nWir verarbeiten Ihre notwendigen personenbezogenen Daten zur Erfüllung unserer Aufgaben stets im Einklang mit den jeweils anwendbaren gesetzlichen Datenschutzanforderungen zu den nachfolgend aufgeführten Zwecken. Personenbezogene Daten sind sämtliche Informationen, die einen Bezug zu einer Person aufweisen.", "processingPurposes": "Vollzug der baurechtlichen Vorschriften", - "legalBasis": "**Art. 6 Abs. 1 lit. e DSGVO** i. V. m. **§ 3 LDSG SH** – Verarbeitung zur Wahrnehmung einer Aufgabe, die im öffentlichen Interesse liegt oder in Ausübung öffentlicher Gewalt erfolgt.\n\nKonkrete Rechtsgrundlage: § 61 LBO", + "legalBasis": "**Art. 6 Abs. 1 lit. e DSGVO** i. V. m. **§ 3 LDSG SH** – Verarbeitung zur Wahrnehmung einer Aufgabe, die im öffentlichen Interesse liegt oder in Ausübung öffentlicher Gewalt erfolgt.\n\nKonkrete Rechtsgrundlage: § 75 LBO", "legitimateInterests": null, "recipients": "Bei Ein- und Auszahlungen: Finanzbuchhaltung\n1. Bgm´s, Gemeindevertreter u. Ausschüsse, sofern Sie an der Einvernehmenserteilung gem. Hauptsatzung vorgesehen sind. 2. Untere Bauaufsicht, wenn die Anträge im Amt o. bei der Gemeinde abgegeben werden, da diese die genehmigende Behörde ist.", "storageDuration": "auf Dauer", diff --git a/data/policies/befreiungsantrag-abweichungsantrag-ausnahmeantrag.json b/data/policies/befreiungsantrag-abweichungsantrag-ausnahmeantrag.json index a96fd21..77db743 100644 --- a/data/policies/befreiungsantrag-abweichungsantrag-ausnahmeantrag.json +++ b/data/policies/befreiungsantrag-abweichungsantrag-ausnahmeantrag.json @@ -4,7 +4,7 @@ "title": "Befreiungsantrag /Abweichungsantrag/Ausnahmeantrag", "processingDescription": "**Befreiungsantrag /Abweichungsantrag/Ausnahmeantrag**\n\nFachbereich: FB I\nFachdienst: Bauamt\nAufgabenbereich: Bauantrag, Genehmigungsfreistellung, Anzeige Beseitigung von Anlagen, Bauvoranfragen, Befreiung- u. Abweichungen\nDienstleistung: Bauantrag, Genehmigungsfreistellung, Anzeige Beseitigung von Anlagen\nFormularnummer: FBI_Bau_003\n\nWir verarbeiten Ihre notwendigen personenbezogenen Daten zur Erfüllung unserer Aufgaben stets im Einklang mit den jeweils anwendbaren gesetzlichen Datenschutzanforderungen zu den nachfolgend aufgeführten Zwecken. Personenbezogene Daten sind sämtliche Informationen, die einen Bezug zu einer Person aufweisen.", "processingPurposes": "Vollzug der baurechtlichen Vorschriften", - "legalBasis": "**Art. 6 Abs. 1 lit. e DSGVO** i. V. m. **§ 3 LDSG SH** – Verarbeitung zur Wahrnehmung einer Aufgabe, die im öffentlichen Interesse liegt oder in Ausübung öffentlicher Gewalt erfolgt.\n\nKonkrete Rechtsgrundlage: § 61 LBO", + "legalBasis": "**Art. 6 Abs. 1 lit. e DSGVO** i. V. m. **§ 3 LDSG SH** – Verarbeitung zur Wahrnehmung einer Aufgabe, die im öffentlichen Interesse liegt oder in Ausübung öffentlicher Gewalt erfolgt.\n\nKonkrete Rechtsgrundlage: § 67 LBO, § 31 BauGB", "legitimateInterests": null, "recipients": "Bei Ein- und Auszahlungen: Finanzbuchhaltung\n1. Bgm´s, Gemeindevertreter u. Ausschüsse, sofern Sie an der Einvernehmenserteilung gem. Hauptsatzung vorgesehen sind. 2. Untere Bauaufsicht, wenn die Anträge im Amt o. bei der Gemeinde abgegeben werden, da diese die genehmigende Behörde ist.", "storageDuration": "auf Dauer", diff --git a/data/policies/beihilferecht.json b/data/policies/beihilferecht.json index 97dc8ff..871aa68 100644 --- a/data/policies/beihilferecht.json +++ b/data/policies/beihilferecht.json @@ -4,7 +4,7 @@ "title": "Beihilferecht", "processingDescription": "**Beihilferecht**\n\nFachbereich: FB I\nFachdienst: Personalamt\nAufgabenbereich: Personal\nFormularnummer: FBI_Personal_005\n\nWir verarbeiten Ihre notwendigen personenbezogenen Daten zur Erfüllung unserer Aufgaben stets im Einklang mit den jeweils anwendbaren gesetzlichen Datenschutzanforderungen zu den nachfolgend aufgeführten Zwecken. Personenbezogene Daten sind sämtliche Informationen, die einen Bezug zu einer Person aufweisen.", "processingPurposes": "Überprüfung der Umlagen, Verwaltungskosten und Beihilfeberechnungen", - "legalBasis": "**Art. 6 Abs. 1 lit. b DSGVO** i. V. m. **§ 15 LDSG SH** – Verarbeitung für Zwecke des Beschäftigungsverhältnisses.\n\nKonkrete Rechtsgrundlage: LBG, Landesbesoldungsgesetz S.-H.", + "legalBasis": "**Art. 6 Abs. 1 lit. b DSGVO** i. V. m. **§ 15 LDSG SH** – Verarbeitung für Zwecke des Beschäftigungsverhältnisses.\n\nKonkrete Rechtsgrundlage: LBG, Landesbesoldungsgesetz S.-H.\n\nSoweit Gesundheitsdaten verarbeitet werden: **Art. 9 Abs. 2 lit. b DSGVO** i. V. m. **§ 15 LDSG SH** – Verarbeitung besonderer Kategorien personenbezogener Daten zur Erfüllung von Pflichten aus dem Arbeits- und Sozialrecht.", "legitimateInterests": null, "recipients": "Bei Ein- und Auszahlungen: Finanzbuchhaltung\nVersorgungsausgleichskasse", "storageDuration": "5 Jahre nach Zahlbarmachung", diff --git a/data/policies/mutterschutz-elternzeit.json b/data/policies/mutterschutz-elternzeit.json index 18a6af3..f82c298 100644 --- a/data/policies/mutterschutz-elternzeit.json +++ b/data/policies/mutterschutz-elternzeit.json @@ -4,7 +4,7 @@ "title": "Mutterschutz, Elternzeit", "processingDescription": "**Mutterschutz, Elternzeit**\n\nFachbereich: FB I\nFachdienst: Personalamt\nAufgabenbereich: Personal\nFormularnummer: FBI_Personal_006\n\nWir verarbeiten Ihre notwendigen personenbezogenen Daten zur Erfüllung unserer Aufgaben stets im Einklang mit den jeweils anwendbaren gesetzlichen Datenschutzanforderungen zu den nachfolgend aufgeführten Zwecken. Personenbezogene Daten sind sämtliche Informationen, die einen Bezug zu einer Person aufweisen.", "processingPurposes": "Berechnung Mutterschaftsgeldzuschuss und Mutterschutzfrist, Anträge auf Elternzeit", - "legalBasis": "**Art. 6 Abs. 1 lit. b DSGVO** i. V. m. **§ 15 LDSG SH** – Verarbeitung für Zwecke des Beschäftigungsverhältnisses.\n\nKonkrete Rechtsgrundlage: Mutterschutzgesetz, TVöD", + "legalBasis": "**Art. 6 Abs. 1 lit. b DSGVO** i. V. m. **§ 15 LDSG SH** – Verarbeitung für Zwecke des Beschäftigungsverhältnisses.\n\nKonkrete Rechtsgrundlage: Mutterschutzgesetz, TVöD\n\nSoweit Gesundheitsdaten verarbeitet werden: **Art. 9 Abs. 2 lit. b DSGVO** i. V. m. **§ 15 LDSG SH** – Verarbeitung besonderer Kategorien personenbezogener Daten zur Erfüllung von Pflichten aus dem Arbeits- und Sozialrecht.", "legitimateInterests": null, "recipients": "Bei Ein- und Auszahlungen: Finanzbuchhaltung\nKrankenkasse, Familienkasse, Amtsvorsteher, LVB, Fachbereichsleiter", "storageDuration": "5 Jahre nach Beendigung der Elternzeit", diff --git a/data/policies/stellungnahme-bauantrag.json b/data/policies/stellungnahme-bauantrag.json index 56516ac..d302883 100644 --- a/data/policies/stellungnahme-bauantrag.json +++ b/data/policies/stellungnahme-bauantrag.json @@ -4,7 +4,7 @@ "title": "Stellungnahme Bauantrag", "processingDescription": "**Stellungnahme Bauantrag**\n\nFachbereich: FB I\nAufgabenbereich: Bauantrag Gemeindliches Einvernehmen\nDienstleistung: Bauantrag, Genehmigungsfreistellung, Anzeige Beseitigung von Anlagen\nFormularnummer: FBI_Sonstige_010\n\nWir verarbeiten Ihre notwendigen personenbezogenen Daten zur Erfüllung unserer Aufgaben stets im Einklang mit den jeweils anwendbaren gesetzlichen Datenschutzanforderungen zu den nachfolgend aufgeführten Zwecken. Personenbezogene Daten sind sämtliche Informationen, die einen Bezug zu einer Person aufweisen.", "processingPurposes": "Vollzug der baurechtlichen Vorschriften", - "legalBasis": "**Art. 6 Abs. 1 lit. e DSGVO** i. V. m. **§ 3 LDSG SH** – Verarbeitung zur Wahrnehmung einer Aufgabe, die im öffentlichen Interesse liegt oder in Ausübung öffentlicher Gewalt erfolgt.\n\nKonkrete Rechtsgrundlage: § 61 LBO", + "legalBasis": "**Art. 6 Abs. 1 lit. e DSGVO** i. V. m. **§ 3 LDSG SH** – Verarbeitung zur Wahrnehmung einer Aufgabe, die im öffentlichen Interesse liegt oder in Ausübung öffentlicher Gewalt erfolgt.\n\nKonkrete Rechtsgrundlage: § 36 BauGB, § 71 LBO", "legitimateInterests": null, "recipients": "Bei Ein- und Auszahlungen: Finanzbuchhaltung\n1. Bgm´s, Gemeindevertreter u. Ausschüsse, sofern Sie an der Einvernehmenserteilung gem. Hauptsatzung vorgesehen sind. 2. Untere Bauaufsicht, wenn die Anträge im Amt o. bei der Gemeinde abgegeben werden, da diese die genehmigende Behörde ist.", "storageDuration": "auf Dauer", diff --git a/package.json b/package.json index 71aadb1..4b6c8d0 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,9 @@ "analyze-pdfs": "node scripts/analyze-pdfs.js", "import-csv": "node scripts/import-csv.js", "compare-csv-pdf": "node scripts/compare-csv-pdf.js", - "check-completeness": "node scripts/check-completeness.js" + "check-completeness": "node scripts/check-completeness.js", + "enrich-legal-basis": "node scripts/enrich-legal-basis.js", + "fix-legal-citations": "node scripts/fix-legal-citations.js" }, "dependencies": { "@auth/prisma-adapter": "^2.10.0", diff --git a/scripts/fix-legal-citations.js b/scripts/fix-legal-citations.js new file mode 100644 index 0000000..06fe92f --- /dev/null +++ b/scripts/fix-legal-citations.js @@ -0,0 +1,213 @@ +/** + * Korrigiert einzelne fachrechtliche Zitate, die gegen den geltenden + * Normbestand geprüft wurden. + * + * node scripts/fix-legal-citations.js --dry-run + * node scripts/fix-legal-citations.js + * + * Geändert wird ausschließlich, wofür eine belegte, eindeutige Fassung + * vorliegt. Alles Übrige – nicht zitierfähige Satzungen, unklare Zuordnungen, + * fehlende Fristen – bleibt unangetastet und geht an die Datenschutz- + * beauftragte. + * + * Der Lauf ist wiederholbar und setzt nur an, wo der alte Wortlaut noch steht. + */ +const fs = require("fs") +const path = require("path") +const { PrismaClient } = require("@prisma/client") + +const prisma = new PrismaClient() +const JSON_DIR = path.join(process.cwd(), "data", "policies") + +/** Trennzeile, hinter der das Fachrecht in `legalBasis` steht. */ +const MARKER = "Konkrete Rechtsgrundlage: " + +/** + * Belegte Korrekturen. `von` muss exakt dem heutigen Fachrechts-Text + * entsprechen, sonst wird der Datensatz übersprungen. + */ +const KORREKTUREN = [ + // --- Landesbauordnung SH, neu gefasst am 6.12.2021, gültig ab 01.09.2022 --- + // Die Paragraphen wurden dabei umnummeriert. + { + titel: "Bauantrag", + von: "§ 64 LBO", + nach: "§§ 64, 68 LBO", + grund: + "§ 64 LBO regelt das Baugenehmigungsverfahren, der Bauantrag selbst steht in § 68 LBO (Bauantrag, Bauvorlagen). Ergänzt statt ersetzt, da beide einschlägig sind.", + }, + { + titel: "Bauvoranfrage", + von: "§ 61 LBO", + nach: "§ 75 LBO", + grund: + "§ 61 LBO ist seit 01.09.2022 „Verfahrensfreie Bauvorhaben“. Der Vorbescheid – die Bauvoranfrage – steht in § 75 LBO.", + }, + { + titel: "Befreiungsantrag /Abweichungsantrag/Ausnahmeantrag", + von: "§ 61 LBO", + nach: "§ 67 LBO, § 31 BauGB", + grund: + "Abweichungen, Ausnahmen und Befreiungen stehen in § 67 LBO; bauplanungsrechtliche Befreiungen zusätzlich in § 31 BauGB.", + }, + { + titel: "Stellungnahme Bauantrag", + von: "§ 61 LBO", + nach: "§ 36 BauGB, § 71 LBO", + grund: + "Das gemeindliche Einvernehmen regelt § 36 BauGB, seine Ersetzung § 71 LBO. § 61 LBO betrifft verfahrensfreie Vorhaben.", + }, + + // --- Wohnberechtigungsschein --- + { + titel: "Antrag auf Ausstellung eines Wohnberechtigungsscheines", + von: "Wohnberechtigungsschein", + nach: "§ 27 WoFG i. V. m. § 5 WoBindG", + grund: + "„Wohnberechtigungsschein“ benennt das Dokument, keine Norm. Der Schein wird nach § 27 WoFG i. V. m. § 5 WoBindG erteilt.", + }, + + // --- Bildung und Teilhabe --- + { + titel: "Antrag auf Hilfe für Bildung u. Teilhabe", + von: "SGB XII, BKKG", + nach: "§ 34 SGB XII, § 6b BKGG", + grund: + "„BKKG“ ist ein Schreibfehler für BKGG. Leistungen für Bildung und Teilhabe stehen in § 34 SGB XII bzw. § 6b BKGG.", + }, + { + titel: "Antrag auf Hilfe für Bildung u. Teilhabe: Hilfe f. mehrtägige Klassenfahrten", + von: "SGB XII", + nach: "§ 34 SGB XII", + grund: "Präzisierung: Leistungen für Bildung und Teilhabe stehen in § 34 SGB XII.", + }, + { + titel: "Änderungsmitteilung auf Hilfe für Bildung u. Teilhabe", + von: "SGB XII", + nach: "§ 34 SGB XII", + grund: "Präzisierung: Leistungen für Bildung und Teilhabe stehen in § 34 SGB XII.", + }, + + // --- Vergaberecht --- + { + titel: "Ausschreibungsunterlagen", + von: "VOL/VgV/UVGO/VGO S-H", + nach: "VgV/UVgO/VGO S-H", + grund: + "Die VOL/A ist für Liefer- und Dienstleistungen durch die UVgO abgelöst. Nur das überholte Kürzel entfernt; die Landesvorschrift sollte noch mit vollem Titel benannt werden.", + }, +] + +/** + * Zusätzliche Erlaubnisnorm, wo besondere Kategorien personenbezogener Daten + * verarbeitet werden. Art. 9 Abs. 1 DSGVO verbietet das grundsätzlich; die + * Verarbeitung braucht deshalb eine eigene Grundlage nach Art. 9 Abs. 2. + */ +const ART9_ZUSATZ = + "Soweit Gesundheitsdaten verarbeitet werden: **Art. 9 Abs. 2 lit. b DSGVO** i. V. m. **§ 15 LDSG SH** – Verarbeitung besonderer Kategorien personenbezogener Daten zur Erfüllung von Pflichten aus dem Arbeits- und Sozialrecht." + +const ART9_TITEL = [ + "Beihilferecht", + "Mutterschutz, Elternzeit", + "Arbeitsmedizinische Untersuchungen, Unfallfürsorge", +] + +function fachrechtErsetzen(legalBasis, von, nach) { + const stelle = legalBasis.indexOf(MARKER) + if (stelle === -1) return null + + const kopf = legalBasis.slice(0, stelle + MARKER.length) + const rest = legalBasis.slice(stelle + MARKER.length) + + if (rest.trim() !== von) return null + return kopf + nach +} + +async function main() { + const dryRun = process.argv.includes("--dry-run") + const policies = await prisma.privacyPolicy.findMany() + const nachTitel = new Map(policies.map((p) => [p.title, p])) + + const geplant = [] + const uebersprungen = [] + + for (const korrektur of KORREKTUREN) { + const policy = nachTitel.get(korrektur.titel) + if (!policy) { + uebersprungen.push(`${korrektur.titel} – Erklärung nicht gefunden`) + continue + } + + const neu = fachrechtErsetzen(policy.legalBasis || "", korrektur.von, korrektur.nach) + if (!neu) { + uebersprungen.push( + `${korrektur.titel} – Wortlaut weicht ab (erwartet „${korrektur.von}“), bereits geändert?` + ) + continue + } + + geplant.push({ policy, korrektur, neu }) + } + + const art9 = [] + for (const titel of ART9_TITEL) { + const policy = nachTitel.get(titel) + if (!policy) { + uebersprungen.push(`${titel} – Erklärung nicht gefunden`) + continue + } + if ((policy.legalBasis || "").includes("Art. 9 Abs. 2")) { + uebersprungen.push(`${titel} – Art. 9 bereits ergänzt`) + continue + } + art9.push({ policy, neu: `${policy.legalBasis}\n\n${ART9_ZUSATZ}` }) + } + + console.log(`=== Fachrechtliche Zitate (${geplant.length}) ===`) + for (const { korrektur } of geplant) { + console.log(`\n ${korrektur.titel}`) + console.log(` vorher : ${korrektur.von}`) + console.log(` nachher: ${korrektur.nach}`) + console.log(` Grund : ${korrektur.grund}`) + } + + console.log(`\n=== Besondere Datenkategorien, Art. 9 Abs. 2 lit. b (${art9.length}) ===`) + art9.forEach(({ policy }) => console.log(` ${policy.title}`)) + + if (uebersprungen.length) { + console.log(`\n=== Übersprungen (${uebersprungen.length}) ===`) + uebersprungen.forEach((z) => console.log(` ${z}`)) + } + + if (dryRun) { + console.log("\n--dry-run: nichts geschrieben.") + return + } + + const schreiben = async (policy, legalBasis) => { + await prisma.privacyPolicy.update({ where: { id: policy.id }, data: { legalBasis } }) + const datei = path.join(JSON_DIR, `${policy.slug}.json`) + try { + if (fs.existsSync(datei)) { + const inhalt = JSON.parse(fs.readFileSync(datei, "utf8")) + inhalt.legalBasis = legalBasis + fs.writeFileSync(datei, JSON.stringify(inhalt, null, 2), "utf8") + } + } catch { + // Die Datenbank ist maßgeblich; die Ablage ist nur Nachweis. + } + } + + for (const { policy, neu } of geplant) await schreiben(policy, neu) + for (const { policy, neu } of art9) await schreiben(policy, neu) + + console.log(`\nZitate korrigiert: ${geplant.length}`) + console.log(`Art. 9 ergänzt: ${art9.length}`) +} + +main() + .catch((e) => { + console.error(e) + process.exitCode = 1 + }) + .finally(() => prisma.$disconnect())