Files
schulos/scripts/generate-privacy-notice.mjs
T
2026-08-02 12:33:19 +02:00

140 lines
5.1 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/**
* Generate Datenschutzerklärung (Privacy Notice) for parents
* Plain-language German, based on school configuration
*/
import fs from "node:fs";
import path from "node:path";
function generatePrivacyNotice(params, outputPath = "docs/legal") {
if (!fs.existsSync(outputPath)) {
fs.mkdirSync(outputPath, { recursive: true });
}
const lines = [
"# Datenschutzerklärung",
"# (Privacy Notice for Parents & Students)",
"",
`**Schule**: ${params.schoolName}`,
`**Bundesland**: ${params.bundesland}`,
`**Schulträger**: ${params.schultragerName}`,
`**Datenschutzbeauftragter (DPO)**: ${params.dpoName} (${params.dpoEmail})`,
"",
"---",
"",
"## 1. Wer ist verantwortlich für die Verarbeitung Ihrer Daten?",
"",
`Die **${params.schoolName}** ist die Schule, die ihre Daten verarbeitet.`,
`Der Schulträger ist: **${params.schultragerName}**`,
"",
"Der Datenschutzbeauftragte (DPO) ist:",
`- **Name**: ${params.dpoName}`,
`- **Email**: ${params.dpoEmail}`,
"",
"Sie können den DPO jederzeit kontaktieren, wenn Sie Fragen zu Ihren Daten haben.",
"",
"## 2. Welche Daten werden verarbeitet?",
"",
"Wir verarbeiten folgende personenbezogene Daten:",
"",
"### Schülerdaten",
"- Name, Vorname, Geburtsdatum",
"- Kontaktinformationen (Email, Telefon)",
"- Adresse",
"- Schulleistungen, Noten, Zeugnisse",
"- Verhalten und Disziplin",
"- Medizinische Informationen (falls relevant)",
"",
"### Lehrerdaten",
"- Name, Email, Telefon",
"- Unterrichtsvertrag und Stundenpläne",
"- Aktivitätsprotokoll (Audit Logs)",
"",
"### Elterndaten",
"- Name, Kontaktinformationen",
"- Nachrichten mit Lehrern",
"",
"## 3. Warum verarbeiten wir Ihre Daten?",
"",
"Wir verarbeiten Ihre Daten für folgende Zwecke:",
"",
"- **Schulverwaltung**: Verwaltung von Schülereinträgen und Klassengruppen",
"- **Unterricht & Bewertung**: Verfolgung von Lernfortschritten und Noten",
"- **Kommunikation**: Nachrichten zwischen Lehrern, Eltern und Schülern",
"- **Sicherheit**: Überwachung von Prüfungen und Schulsicherheit",
"- **Rechtliche Verpflichtungen**: Einhaltung des Schulgesetzes und der DSGVO",
"",
"## 4. Was ist die Rechtsgrundlage?",
"",
"Die Verarbeitung erfolgt auf Grundlage von:",
"",
"- **Schulgesetz** (Schulgesetz des Bundeslandes): Rechtliche Verpflichtung zur Führung von Schülerdaten",
"- **DSGVO Art. 6(1)(a)**: Ihre Zustimmung (z.B. für Messaging)",
"- **DSGVO Art. 6(1)(c)**: Erfüllung rechtlicher Verpflichtungen",
"- **DSGVO Art. 9(2)(h)**: Zwecke der Gesundheit und Sicherheit (z.B. Wellness-Überprüfungen)",
"",
"Für Minderjährige: **Eltern erteilen die Zustimmung** gemäß DSGVO Art. 8.",
"",
"## 5. Wie lange werden die Daten gespeichert?",
"",
"Die Speicherdauer hängt von der Datenkategorie ab:",
"",
"| Datentyp | Speicherdauer |",
"|----------|--------------|",
"| Lernfortschritt | 1–2 Jahre nach Schulabgang |",
"| Zeugnisse/Endbewertungen | Dauerhaft (Schulgesetz erforderlich) |",
"| Disziplinarberichte | 3–10 Jahre (je nach Bundesland) |",
"| Nachrichten | 1–2 Jahre |",
"| Audit Logs | 1–2 Jahre |",
"",
"Nach Ablauf der Aufbewahrungsfrist werden Ihre Daten gelöscht.",
"",
"## 6. Ihre Rechte",
"",
"Sie haben folgende Rechte unter der DSGVO:",
"",
"- **Auskunftsrecht** (Art. 15): Sie können fragen, welche Daten wir speichern",
"- **Berichtigungsrecht** (Art. 16): Sie können falsche Daten korrigieren lassen",
"- **Löschungsrecht** (Art. 17): Sie können verlangen, dass Ihre Daten gelöscht werden (sofern nicht gesetzlich erforderlich)",
"- **Datenportabilität** (Art. 20): Sie können Ihre Daten exportieren",
"- **Beschwerderecht**: Sie können sich an die Datenschutzbehörde beschweren",
"",
"Um diese Rechte auszuüben, kontaktieren Sie bitte den DPO.",
"",
"## 7. Sicherheit Ihrer Daten",
"",
"Wir schützen Ihre Daten durch:",
"",
"- Verschlüsselung (TLS) bei der Übertragung",
"- Verschlüsselung bei der Speicherung",
"- Rollenbasierte Zugriffskontrolle",
"- Regelmäßige Sicherheitsprüfungen",
"- Audit-Logs aller Datenzugriffe",
"",
"## 8. Kontakt",
"",
`Bei Fragen zum Datenschutz kontaktieren Sie bitte:`,
`- **DPO**: ${params.dpoName}`,
`- **Email**: ${params.dpoEmail}`,
"",
"---",
"",
`**Gültig ab**: ${new Date().toISOString().split("T")[0]}`,
"**Generiertaus**: ExaMetra Module L Compliance Framework",
];
const filePath = path.join(outputPath, "privacy-notice-de.md");
fs.writeFileSync(filePath, lines.join("\n"), "utf-8");
console.log(`[v0] Generated privacy notice at ${filePath}`);
}
if (process.argv[1] && path.resolve(process.argv[1]) === new URL(import.meta.url).pathname) {
generatePrivacyNotice({
schoolName: "Gymnasium Berlin",
dpoName: "Max Mustermann",
dpoEmail: "dpo@gymnasium-berlin.de",
schultragerName: "Stadt Berlin",
bundesland: "BERLIN",
});
}