'use client' /** * DSGVO-Audit-Dokumentation Seite * * Zeigt die vollständige Audit-Dokumentation für Datenschutzbeauftragte * und Auditoren mit schöner Markdown-Darstellung inkl. Tabellen. */ import { useState, useEffect, useRef } from 'react' import AdminLayout from '@/components/admin/AdminLayout' // Table of contents sections for navigation const SECTIONS = [ { id: '1', title: 'Management Summary', level: 2 }, { id: '1-1', title: 'Systemübersicht', level: 3 }, { id: '1-2', title: 'Datenschutz-Garantien', level: 3 }, { id: '1-3', title: 'Compliance-Status', level: 3 }, { id: '2', title: 'Verzeichnis der Verarbeitungstätigkeiten', level: 2 }, { id: '2-1', title: 'Verantwortlicher', level: 3 }, { id: '2-2', title: 'Datenschutzbeauftragter', level: 3 }, { id: '2-3', title: 'Verarbeitungstätigkeiten', level: 3 }, { id: '3', title: 'Rechtsgrundlagen (Art. 6)', level: 2 }, { id: '3-1', title: 'Primäre Rechtsgrundlagen', level: 3 }, { id: '3-2', title: 'Landesrechtliche Grundlagen', level: 3 }, { id: '3-3', title: 'Besondere Kategorien (Art. 9)', level: 3 }, { id: '4', title: 'Datenschutz-Folgenabschätzung', level: 2 }, { id: '4-1', title: 'Schwellwertanalyse', level: 3 }, { id: '4-2', title: 'Systematische Beschreibung', level: 3 }, { id: '4-3', title: 'Notwendigkeit und Verhältnismäßigkeit', level: 3 }, { id: '4-4', title: 'Risikobewertung', level: 3 }, { id: '4-5', title: 'Maßnahmen zur Risikominderung', level: 3 }, { id: '5', title: 'Informationspflichten', level: 2 }, { id: '6', title: 'Automatisierte Entscheidungsfindung', level: 2 }, { id: '7', title: 'Privacy by Design', level: 2 }, { id: '8', title: 'Technisch-Organisatorische Maßnahmen', level: 2 }, { id: '9', title: 'BSI-Anforderungen', level: 2 }, { id: '10', title: 'EU AI Act Compliance', level: 2 }, { id: '11', title: 'ML/AI Training Dokumentation', level: 2 }, { id: '12', title: 'Betroffenenrechte', level: 2 }, { id: '13', title: 'Schulung und Awareness', level: 2 }, { id: '14', title: 'Review und Audit', level: 2 }, { id: '15', title: 'Vorfallmanagement', level: 2 }, { id: '16', title: 'Kontakte', level: 2 }, { id: '17', title: 'Voice Service DSGVO', level: 2 }, { id: '17-1', title: 'Architektur & Datenfluss', level: 3 }, { id: '17-2', title: 'Datenklassifizierung', level: 3 }, { id: '17-3', title: 'Verschlüsselung', level: 3 }, { id: '17-4', title: 'TTL & Auto-Löschung', level: 3 }, { id: '17-5', title: 'Audit-Logs', level: 3 }, { id: '18', title: 'BQAS Lokaler Scheduler', level: 2 }, { id: '18-1', title: 'GitHub Actions Alternative', level: 3 }, { id: '18-2', title: 'Datenschutz-Vorteile', level: 3 }, { id: '18-3', title: 'Komponenten', level: 3 }, { id: '18-4', title: 'Datenverarbeitung', level: 3 }, { id: '18-5', title: 'Benachrichtigungen', level: 3 }, ] // Helper component for tables function Table({ headers, rows }: { headers: string[], rows: string[][] }) { return (
{headers.map((header, i) => ( ))} {rows.map((row, i) => ( {row.map((cell, j) => ( ))} ))}
{header}
{cell}
) } // Helper for code blocks function CodeBlock({ children }: { children: string }) { return (
      {children}
    
) } export default function AuditDocumentationPage() { const [showToc, setShowToc] = useState(true) const [activeSection, setActiveSection] = useState('1') const contentRef = useRef(null) const scrollToSection = (sectionId: string) => { const element = document.getElementById(`section-${sectionId}`) if (element) { element.scrollIntoView({ behavior: 'smooth', block: 'start' }) setActiveSection(sectionId) } } // Track active section on scroll useEffect(() => { const handleScroll = () => { const sections = SECTIONS.map(s => ({ id: s.id, element: document.getElementById(`section-${s.id}`) })).filter(s => s.element) for (const section of sections.reverse()) { if (section.element) { const rect = section.element.getBoundingClientRect() if (rect.top <= 150) { setActiveSection(section.id) break } } } } window.addEventListener('scroll', handleScroll) return () => window.removeEventListener('scroll', handleScroll) }, []) return (
{/* Table of Contents Sidebar */} {showToc && ( )} {/* Main Content */}
{/* Header */}

DSGVO-Audit-Dokumentation

OCR-Labeling-System | Version 1.0.0 | 21. Januar 2026

{/* Document Content */}
{/* Title */}

DSGVO-Audit-Dokumentation: OCR-Labeling-System für Handschrifterkennung

Dokumentversion: 1.0.0
Datum: 21. Januar 2026
Klassifizierung: Vertraulich - Nur für internen Gebrauch und Auditoren
Nächste Überprüfung: 21. Januar 2027
{/* Section 1: Management Summary */}

1. Management Summary

1.1 Systemübersicht

Das OCR-Labeling-System ist eine vollständig lokal betriebene Lösung zur Digitalisierung und Auswertung handschriftlicher Schülerarbeiten (Klausuren, Aufsätze). Das System nutzt:

  • llama3.2-vision:11b - Open-Source Vision-Language-Modell für OCR (lokal via Ollama)
  • TrOCR - Microsoft Transformer OCR für Handschrifterkennung (lokal)
  • qwen2.5:14b - Open-Source LLM für Korrekturassistenz (lokal via Ollama)

1.2 Datenschutz-Garantien

1.3 Compliance-Status

Das System erfüllt die Anforderungen der:

  • DSGVO (Verordnung (EU) 2016/679)
  • BDSG (Bundesdatenschutzgesetz)
  • Niedersächsisches Schulgesetz (NSchG) §31
  • EU AI Act (Verordnung (EU) 2024/1689)
{/* Section 2: Verzeichnis der Verarbeitungstätigkeiten */}

2. Verzeichnis der Verarbeitungstätigkeiten (Art. 30 DSGVO)

2.1 Verantwortlicher

2.2 Datenschutzbeauftragter

2.3 Verarbeitungstätigkeiten

2.3.1 OCR-Verarbeitung von Klausuren

2.3.2 Labeling für Modell-Training

{/* Section 3: Rechtsgrundlagen */}

3. Rechtsgrundlagen (Art. 6 DSGVO)

3.1 Primäre Rechtsgrundlagen

3.2 Landesrechtliche Grundlagen

Niedersachsen:

  • §31 NSchG: Erhebung, Verarbeitung und Nutzung personenbezogener Daten
  • Ergänzende Bestimmungen zur VO-DV I

Interesse-Abwägung für Training (Art. 6 Abs. 1 lit. f):

3.3 Besondere Kategorien (Art. 9 DSGVO)

Prüfung auf besondere Kategorien:

Handschriftproben könnten theoretisch Rückschlüsse auf Gesundheitszustände ermöglichen (z.B. Tremor). Dies wird wie folgt adressiert:

  • OCR-Modelle analysieren ausschließlich Textinhalt, nicht Handschriftcharakteristiken
  • Keine Speicherung von Handschriftanalysen
  • Bei Training werden nur Textinhalte verwendet, keine biometrischen Merkmale

Ergebnis: Art. 9 ist nicht anwendbar, da keine Verarbeitung besonderer Kategorien erfolgt.

{/* Section 4: DSFA */}

4. Datenschutz-Folgenabschätzung (Art. 35 DSGVO)

4.1 Schwellwertanalyse - Erforderlichkeit der DSFA

Ergebnis: DSFA erforderlich aufgrund KI-Einsatz und Verarbeitung von Daten Minderjähriger.

4.2 Systematische Beschreibung der Verarbeitung

Datenfluss-Diagramm

{`┌─────────────────────────────────────────────────────────────────────────────────┐ │ OCR-LABELING DATENFLUSS │ ├─────────────────────────────────────────────────────────────────────────────────┤ │ │ │ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ │ │ 1. SCAN │───►│ 2. UPLOAD │───►│ 3. OCR │───►│ 4. LABELING │ │ │ │ (Lehrkraft) │ │ (MinIO) │ │ (Ollama) │ │ (Lehrkraft) │ │ │ └──────────────┘ └──────────────┘ └──────────────┘ └──────────────┘ │ │ │ │ │ │ │ │ ▼ ▼ ▼ ▼ │ │ Papierdokument Verschlüsselte Lokale LLM- Bestätigung/ │ │ → digitaler Scan Bildspeicherung Verarbeitung Korrektur │ │ │ │ ┌──────────────────────────────────────────────────────────────────────────┐ │ │ │ SPEICHERUNG (PostgreSQL) │ │ │ │ • Session-ID (UUID) • Status (pending/confirmed/corrected) │ │ │ │ • Bild-Hash (SHA256) • Ground Truth (korrigierter Text) │ │ │ │ • OCR-Text • Zeitstempel │ │ │ └──────────────────────────────────────────────────────────────────────────┘ │ │ │ │ ┌──────────────┐ │ │ │ 5. EXPORT │ Pseudonymisierte Trainingsdaten (JSONL) │ │ │ (Optional) │ → Lokal gespeichert für Fine-Tuning │ │ └──────────────┘ │ └─────────────────────────────────────────────────────────────────────────────────┘`}

Verarbeitungsschritte im Detail

4.3 Notwendigkeit und Verhältnismäßigkeit

Prüfung der Erforderlichkeit

Alternativenprüfung

4.4 Risikobewertung

Identifizierte Risiken

4.5 Maßnahmen zur Risikominderung

{/* Section 5: Informationspflichten */}

5. Informationspflichten (Art. 13/14 DSGVO)

5.1 Pflichtangaben nach Art. 13 DSGVO

5.2 KI-spezifische Transparenz

{/* Section 6: Automatisierte Entscheidungsfindung */}

6. Automatisierte Entscheidungsfindung (Art. 22 DSGVO)

6.1 Anwendbarkeitsprüfung

Ergebnis: Art. 22 DSGVO ist nicht anwendbar, da keine automatisierte Entscheidung mit rechtlicher Wirkung erfolgt.

6.2 Teacher-in-the-Loop Garantie

Das System implementiert obligatorische menschliche Aufsicht:

{`┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ OCR-System │────►│ Lehrkraft │────►│ Bewertung │ │ (Vorschlag) │ │ (Prüfung) │ │ (Final) │ └──────────────┘ └──────────────┘ └──────────────┘ │ │ │ │ ▼ │ │ ┌──────────────┐ │ └───────────►│ Korrektur │◄───────────┘ │ (Optional) │ └──────────────┘`}

Workflow-Garantien:

  1. Kein OCR-Ergebnis wird automatisch als korrekt übernommen
  2. Lehrkraft muss explizit bestätigen ODER korrigieren
  3. Bewertungsentscheidung liegt ausschließlich bei der Lehrkraft
  4. System gibt keine Notenvorschläge
{/* Section 7: Privacy by Design */}

7. Privacy by Design und Default (Art. 25 DSGVO)

7.1 Design-Prinzipien

7.2 Vendor-Auswahl

Die verwendeten KI-Modelle wurden nach Datenschutzkriterien ausgewählt:

{/* Section 8: TOM */}

8. Technisch-Organisatorische Maßnahmen (Art. 32 DSGVO)

8.1 Vertraulichkeit

8.1.1 Zutrittskontrolle

8.1.2 Zugangskontrolle

8.1.3 Zugriffskontrolle (RBAC)

8.1.4 Verschlüsselung

8.2 Integrität

8.3 Verfügbarkeit

{/* Section 9: BSI */}

9. BSI-Anforderungen und Sicherheitsrichtlinien

9.1 Angewandte BSI-Publikationen

9.2 KI-Sicherheitsanforderungen (BSI Kriterienkatalog)

9.3 Trainingsdaten-Qualität (QUAIDAL)

{/* Section 10: EU AI Act */}

10. EU AI Act Compliance (KI-Verordnung)

10.1 Risikoklassifizierung

Prüfung nach Anhang III der KI-Verordnung:

Das System wird nicht für folgende Hochrisiko-Anwendungen genutzt:

  • ✗ Entscheidung über Zugang zu Bildungseinrichtungen
  • ✗ Zuweisung zu Bildungseinrichtungen oder -programmen
  • ✗ Bewertung von Lernergebnissen (nur Unterstützung, keine automatische Bewertung)
  • ✗ Überwachung von Prüfungen

Ergebnis: Kein Hochrisiko-KI-System nach aktuellem Stand.

10.2 Verbotsprüfung (Art. 5)

{/* Section 11: ML/AI Training */}

11. ML/AI Training Dokumentation

11.1 Trainingsdaten-Quellen

11.2 Datenqualitätsmaßnahmen

11.3 Labeling-Prozess

{`┌─────────────────────────────────────────────────────────────────────┐ │ LABELING WORKFLOW │ ├─────────────────────────────────────────────────────────────────────┤ │ │ │ 1. Bild-Upload 2. OCR-Vorschlag 3. Review │ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │ │ Scan │─────────►│ LLM-OCR │─────────►│ Lehrkraft │ │ │ │ Upload │ │ (lokal) │ │ prüft │ │ │ └─────────────┘ └─────────────┘ └──────┬──────┘ │ │ │ │ │ ┌──────────────────────┴─────┐ │ │ ▼ ▼ │ │ ┌─────────────┐ ┌─────────┐ │ │ │ Bestätigt │ │Korrigiert│ │ │ │ (korrekt) │ │(manuell) │ │ │ └─────────────┘ └─────────┘ │ │ │ │ │ │ └──────────┬─────────────────┘ │ │ ▼ │ │ ┌─────────────────┐ │ │ │ Ground Truth │ │ │ │ (verifiziert) │ │ │ └─────────────────┘ │ └─────────────────────────────────────────────────────────────────────┘`}

11.4 Export-Prozeduren

{/* Section 12: Betroffenenrechte */}

12. Betroffenenrechte

12.1 Implementierte Rechte

12.2 Sonderrechte bei KI-Training

{/* Section 13: Schulung */}

13. Schulung und Awareness

13.1 Schulungskonzept

{/* Section 14: Review */}

14. Review und Audit

14.1 Regelmäßige Überprüfungen

14.2 Audit-Trail

{/* Section 15: Vorfallmanagement */}

15. Vorfallmanagement

15.1 Datenpannen-Prozess

{`┌─────────────────────────────────────────────────────────────────────┐ │ INCIDENT RESPONSE │ ├─────────────────────────────────────────────────────────────────────┤ │ │ │ Erkennung ──► Bewertung ──► Meldung ──► Eindämmung ──► Behebung │ │ │ │ │ │ │ │ │ ▼ ▼ ▼ ▼ ▼ │ │ Monitoring Risiko- 72h an LfD Isolation Ursachen- │ │ Audit-Log einschätzung (Art.33) Forensik analyse │ └─────────────────────────────────────────────────────────────────────┘`}

15.2 Meldepflichten

15.3 KI-spezifische Vorfälle

{/* Section 16: Kontakte */}

16. Kontakte

16.1 Interne Kontakte

16.2 Externe Kontakte

{/* Section 17: Voice Service DSGVO */}

17. Voice Service DSGVO-Compliance

NEU: Das Voice Service implementiert eine Voice-First Schnittstelle fuer Lehrkraefte mit PersonaPlex-7B (Full-Duplex Speech-to-Speech) und TaskOrchestrator (Agent-Orchestrierung). Alle Audiodaten werden ausschliesslich transient im RAM verarbeitet und niemals persistiert.

17.1 Architektur & Datenfluss

{`┌──────────────────────────────────────────────────────────────────┐ │ LEHRERGERÄT (PWA / App) │ │ ┌────────────────────────────────────────────────────────────┐ │ │ │ VoiceCapture.tsx │ voice-encryption.ts │ voice-api.ts │ │ │ │ Mikrofon │ AES-256-GCM │ WebSocket Client │ │ │ └────────────────────────────────────────────────────────────┘ │ │ Namespace-Key: NIEMALS verlässt dieses Gerät │ └───────────────────────────┬──────────────────────────────────────┘ │ WebSocket (wss://) - verschlüsselt ▼ ┌──────────────────────────────────────────────────────────────────┐ │ VOICE SERVICE (Port 8091) │ │ ┌────────────────────────────────────────────────────────────┐ │ │ │ TRANSIENT ONLY: Audio nur im RAM, nie persistiert! │ │ │ │ Kein Klartext-PII: Nur Pseudonyme serverseitig erlaubt │ │ │ └────────────────────────────────────────────────────────────┘ │ └───────────────────────────┬──────────────────────────────────────┘ │ ┌──────────────────┼──────────────────┐ ▼ ▼ ▼ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ PersonaPlex-7B │ │ Ollama Fallback │ │ Valkey Cache │ │ (A100 GPU) │ │ (Mac Mini) │ │ (nur Session- │ │ Full-Duplex │ │ Text-only │ │ Metadaten) │ └─────────────────┘ └─────────────────┘ └─────────────────┘`}

17.2 Datenklassifizierung

KRITISCH: Audio-Daten dürfen unter keinen Umständen persistiert werden (AUDIO_PERSISTENCE=false). Dies ist eine harte DSGVO-Anforderung zum Schutz der Privatsphäre.

17.3 Verschlüsselung

Wichtig: Der Server erhält niemals den Klartext-Schlüssel. Es wird nur ein SHA-256 Hash zur Verifizierung übermittelt. Alle sensiblen Daten werden vor der Übertragung client-seitig verschlüsselt.

17.4 TTL & Automatische Löschung

Compliance: Die TTL-basierte Auto-Löschung ist durch Valkey-Mechanismen sichergestellt und erfordert keine manuelle Intervention.

17.5 Audit-Logs (ohne PII)

Audit-Logs enthalten ausschließlich nicht-personenbezogene Metadaten:

{`// Beispiel: Erlaubter Audit-Log-Eintrag { "ref_id": "abc123...", // truncated "content_type": "transcript", "size_bytes": 1234, "ttl_hours": 168, // 7 Tage "timestamp": "2026-01-26T10:30:00Z" } // VERBOTEN: // user_name, content, transcript, email, student_name, audio_data`} {/* Section 18: BQAS Lokaler Scheduler */}

18. BQAS Lokaler Scheduler (QA-System)

18.1 GitHub Actions Alternative

Das BQAS (Breakpilot Quality Assurance System) nutzt einen lokalen Scheduler anstelle von GitHub Actions. Dies gewährleistet, dass keine Testdaten oder Ergebnisse an externe Cloud-Dienste übertragen werden.

18.2 Datenschutz-Vorteile

DSGVO-Konformität: Der lokale Scheduler verarbeitet alle Testdaten ausschließlich auf dem schuleigenen Mac Mini. Es erfolgt keine Übertragung von Schülerdaten, Testergebnissen oder Modell-Outputs an externe Server.

18.3 Komponenten

Der lokale Scheduler besteht aus folgenden Komponenten:

{`# Dateistruktur voice-service/ ├── scripts/ │ ├── run_bqas.sh # Haupt-Runner │ ├── install_bqas_scheduler.sh # Installation │ ├── com.breakpilot.bqas.plist # launchd Template │ └── post-commit.hook # Git Hook │ └── bqas/ ├── judge.py # LLM Judge ├── rag_judge.py # RAG Judge ├── notifier.py # Benachrichtigungen └── regression_tracker.py # Score-Historie`}

18.4 Datenverarbeitung

Folgende Daten werden während der Test-Ausführung verarbeitet:

Wichtig: Die Test-Inputs (Golden Suite YAML-Dateien) enthalten keine echten Schülerdaten, sondern ausschließlich synthetische Beispiele zur Qualitätssicherung der Intent-Erkennung und RAG-Funktionalität.

18.5 Benachrichtigungen

Das Notifier-Modul unterstützt verschiedene Benachrichtigungskanäle:

Empfohlene Konfiguration für maximale Datenschutz-Konformität:

{`# Nur lokale Benachrichtigungen (Standard) BQAS_NOTIFY_DESKTOP=true BQAS_NOTIFY_SLACK=false BQAS_NOTIFY_EMAIL=false # Benachrichtigungs-Inhalt (ohne PII): # - Status: success/failure/warning # - Anzahl bestandener/fehlgeschlagener Tests # - Test-IDs (keine Schülernamen oder Inhalte)`} {/* Anhänge */}

Anhänge

Anhang B: TOM-Checkliste

Anhang E: Vendor-Dokumentation

  • llama3.2-vision: https://llama.meta.com/
  • TrOCR: https://github.com/microsoft/unilm/tree/master/trocr
  • Ollama: https://ollama.ai/
  • PersonaPlex-7B: https://developer.nvidia.com (MIT + NVIDIA Open Model License)
  • TaskOrchestrator: Proprietary - Agent-Orchestrierung
  • Mimi Codec: MIT License - 24kHz Audio, 80ms Frames

Anhang F: Voice Service TOM

{/* Footer */}

Dokumentende

Diese Dokumentation wird jährlich oder bei wesentlichen Änderungen aktualisiert.

Letzte Aktualisierung: 26. Januar 2026

) }