Phase 1 — Python (klausur-service): 5 monoliths → 36 files - dsfa_corpus_ingestion.py (1,828 LOC → 5 files) - cv_ocr_engines.py (2,102 LOC → 7 files) - cv_layout.py (3,653 LOC → 10 files) - vocab_worksheet_api.py (2,783 LOC → 8 files) - grid_build_core.py (1,958 LOC → 6 files) Phase 2 — Go (edu-search-service, school-service): 8 monoliths → 19 files - staff_crawler.go (1,402 → 4), policy/store.go (1,168 → 3) - policy_handlers.go (700 → 2), repository.go (684 → 2) - search.go (592 → 2), ai_extraction_handlers.go (554 → 2) - seed_data.go (591 → 2), grade_service.go (646 → 2) Phase 3 — TypeScript (admin-lehrer): 45 monoliths → 220+ files - sdk/types.ts (2,108 → 16 domain files) - ai/rag/page.tsx (2,686 → 14 files) - 22 page.tsx files split into _components/ + _hooks/ - 11 component files split into sub-components - 10 SDK data catalogs added to loc-exceptions - Deleted dead backup index_original.ts (4,899 LOC) All original public APIs preserved via re-export facades. Zero new errors: Python imports verified, Go builds clean, TypeScript tsc --noEmit shows only pre-existing errors. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
378 lines
12 KiB
TypeScript
378 lines
12 KiB
TypeScript
/**
|
|
* Control Definitions - Compliance Domains
|
|
*
|
|
* Controls for: TRANSFER, AUDIT, DELETION, INCIDENT
|
|
*/
|
|
|
|
import { Control } from '../types'
|
|
|
|
// ==========================================
|
|
// TRANSFER - Drittlandtransfer Controls
|
|
// ==========================================
|
|
|
|
export const TRANSFER_CONTROLS: Control[] = [
|
|
{
|
|
id: 'VND-TRF-01',
|
|
domain: 'TRANSFER',
|
|
title: {
|
|
de: 'Drittlandtransfer nur mit Rechtsgrundlage',
|
|
en: 'Third country transfer with legal basis',
|
|
},
|
|
description: {
|
|
de: 'Drittlandtransfers erfolgen nur auf Basis von SCC, BCR oder Angemessenheitsbeschluss',
|
|
en: 'Third country transfers only based on SCC, BCR or adequacy decision',
|
|
},
|
|
passCriteria: {
|
|
de: 'SCC oder BCR vertraglich vereinbart ODER Angemessenheitsbeschluss vorhanden',
|
|
en: 'SCC or BCR contractually agreed OR adequacy decision exists',
|
|
},
|
|
requirements: ['Art. 44-49 DSGVO', 'ISO 27001 A.15.1.2'],
|
|
isRequired: true,
|
|
defaultFrequency: 'ANNUAL',
|
|
},
|
|
{
|
|
id: 'VND-TRF-02',
|
|
domain: 'TRANSFER',
|
|
title: {
|
|
de: 'Aktuelle Standardvertragsklauseln',
|
|
en: 'Current Standard Contractual Clauses',
|
|
},
|
|
description: {
|
|
de: 'Bei SCC-Nutzung: Verwendung der aktuellen EU-Kommission-Klauseln (2021)',
|
|
en: 'When using SCC: Current EU Commission clauses (2021) are used',
|
|
},
|
|
passCriteria: {
|
|
de: 'SCC 2021 (Durchführungsbeschluss (EU) 2021/914) verwendet',
|
|
en: 'SCC 2021 (Implementing Decision (EU) 2021/914) used',
|
|
},
|
|
requirements: ['Art. 46 Abs. 2 lit. c DSGVO'],
|
|
isRequired: true,
|
|
defaultFrequency: 'ANNUAL',
|
|
},
|
|
{
|
|
id: 'VND-TRF-03',
|
|
domain: 'TRANSFER',
|
|
title: {
|
|
de: 'Transfer Impact Assessment (TIA)',
|
|
en: 'Transfer Impact Assessment (TIA)',
|
|
},
|
|
description: {
|
|
de: 'Bei Transfers in Drittländer ohne Angemessenheitsbeschluss ist TIA durchzuführen',
|
|
en: 'TIA required for transfers to third countries without adequacy decision',
|
|
},
|
|
passCriteria: {
|
|
de: 'TIA dokumentiert und bewertet Risiken als akzeptabel',
|
|
en: 'TIA documented and risks assessed as acceptable',
|
|
},
|
|
requirements: ['Schrems II Urteil', 'EDSA Empfehlungen 01/2020'],
|
|
isRequired: true,
|
|
defaultFrequency: 'ANNUAL',
|
|
},
|
|
{
|
|
id: 'VND-TRF-04',
|
|
domain: 'TRANSFER',
|
|
title: {
|
|
de: 'Zusätzliche Schutzmaßnahmen',
|
|
en: 'Supplementary Measures',
|
|
},
|
|
description: {
|
|
de: 'Bei Bedarf sind zusätzliche technische/organisatorische Maßnahmen implementiert',
|
|
en: 'Supplementary technical/organizational measures implemented where needed',
|
|
},
|
|
passCriteria: {
|
|
de: 'Ergänzende Maßnahmen dokumentiert (Verschlüsselung, Pseudonymisierung, etc.)',
|
|
en: 'Supplementary measures documented (encryption, pseudonymization, etc.)',
|
|
},
|
|
requirements: ['EDSA Empfehlungen 01/2020'],
|
|
isRequired: false,
|
|
defaultFrequency: 'ANNUAL',
|
|
},
|
|
{
|
|
id: 'VND-TRF-05',
|
|
domain: 'TRANSFER',
|
|
title: {
|
|
de: 'Überwachung Angemessenheitsbeschlüsse',
|
|
en: 'Monitoring Adequacy Decisions',
|
|
},
|
|
description: {
|
|
de: 'Änderungen bei Angemessenheitsbeschlüssen werden überwacht',
|
|
en: 'Changes to adequacy decisions are monitored',
|
|
},
|
|
passCriteria: {
|
|
de: 'Prozess zur Überwachung und Reaktion auf Änderungen etabliert',
|
|
en: 'Process for monitoring and responding to changes established',
|
|
},
|
|
requirements: ['Art. 45 DSGVO'],
|
|
isRequired: false,
|
|
defaultFrequency: 'QUARTERLY',
|
|
},
|
|
]
|
|
|
|
// ==========================================
|
|
// AUDIT - Auditrechte Controls
|
|
// ==========================================
|
|
|
|
export const AUDIT_CONTROLS: Control[] = [
|
|
{
|
|
id: 'VND-AUD-01',
|
|
domain: 'AUDIT',
|
|
title: {
|
|
de: 'Auditrecht vertraglich vereinbart',
|
|
en: 'Audit right contractually agreed',
|
|
},
|
|
description: {
|
|
de: 'Vertrag enthält wirksames Auditrecht ohne unangemessene Einschränkungen',
|
|
en: 'Contract contains effective audit right without unreasonable restrictions',
|
|
},
|
|
passCriteria: {
|
|
de: 'Auditrecht im AVV enthalten, max. 30 Tage Vorlaufzeit, keine Ausschlussklausel',
|
|
en: 'Audit right in DPA, max 30 days notice, no exclusion clause',
|
|
},
|
|
requirements: ['Art. 28 Abs. 3 lit. h DSGVO'],
|
|
isRequired: true,
|
|
defaultFrequency: 'ANNUAL',
|
|
},
|
|
{
|
|
id: 'VND-AUD-02',
|
|
domain: 'AUDIT',
|
|
title: {
|
|
de: 'Vor-Ort-Inspektionen möglich',
|
|
en: 'On-site inspections possible',
|
|
},
|
|
description: {
|
|
de: 'Vertrag erlaubt Vor-Ort-Inspektionen bei dem Auftragsverarbeiter',
|
|
en: 'Contract allows on-site inspections at the processor',
|
|
},
|
|
passCriteria: {
|
|
de: 'Vor-Ort-Audit explizit erlaubt, Zugang zu relevanten Bereichen',
|
|
en: 'On-site audit explicitly allowed, access to relevant areas',
|
|
},
|
|
requirements: ['Art. 28 Abs. 3 lit. h DSGVO'],
|
|
isRequired: true,
|
|
defaultFrequency: 'ANNUAL',
|
|
},
|
|
{
|
|
id: 'VND-AUD-03',
|
|
domain: 'AUDIT',
|
|
title: {
|
|
de: 'Aktuelle Zertifizierungen',
|
|
en: 'Current Certifications',
|
|
},
|
|
description: {
|
|
de: 'Relevante Sicherheitszertifizierungen sind aktuell und gültig',
|
|
en: 'Relevant security certifications are current and valid',
|
|
},
|
|
passCriteria: {
|
|
de: 'ISO 27001, SOC 2 oder vergleichbar, nicht abgelaufen',
|
|
en: 'ISO 27001, SOC 2 or equivalent, not expired',
|
|
},
|
|
requirements: ['Art. 32 DSGVO', 'ISO 27001 A.15.1.1'],
|
|
isRequired: false,
|
|
defaultFrequency: 'ANNUAL',
|
|
},
|
|
{
|
|
id: 'VND-AUD-04',
|
|
domain: 'AUDIT',
|
|
title: {
|
|
de: 'Letzte Prüfung durchgeführt',
|
|
en: 'Last review conducted',
|
|
},
|
|
description: {
|
|
de: 'Vendor wurde innerhalb des Review-Zyklus geprüft',
|
|
en: 'Vendor was reviewed within the review cycle',
|
|
},
|
|
passCriteria: {
|
|
de: 'Dokumentierte Prüfung innerhalb des festgelegten Intervalls',
|
|
en: 'Documented review within the defined interval',
|
|
},
|
|
requirements: ['Art. 28 Abs. 3 lit. h DSGVO'],
|
|
isRequired: true,
|
|
defaultFrequency: 'ANNUAL',
|
|
},
|
|
{
|
|
id: 'VND-AUD-05',
|
|
domain: 'AUDIT',
|
|
title: {
|
|
de: 'Prüfberichte verfügbar',
|
|
en: 'Audit reports available',
|
|
},
|
|
description: {
|
|
de: 'Aktuelle Prüfberichte (SOC 2, Penetrationstest, etc.) liegen vor',
|
|
en: 'Current audit reports (SOC 2, penetration test, etc.) are available',
|
|
},
|
|
passCriteria: {
|
|
de: 'Prüfberichte nicht älter als 12 Monate',
|
|
en: 'Audit reports not older than 12 months',
|
|
},
|
|
requirements: ['ISO 27001 A.18.2.1'],
|
|
isRequired: false,
|
|
defaultFrequency: 'ANNUAL',
|
|
},
|
|
]
|
|
|
|
// ==========================================
|
|
// DELETION - Löschung Controls
|
|
// ==========================================
|
|
|
|
export const DELETION_CONTROLS: Control[] = [
|
|
{
|
|
id: 'VND-DEL-01',
|
|
domain: 'DELETION',
|
|
title: {
|
|
de: 'Löschung/Rückgabe nach Vertragsende',
|
|
en: 'Deletion/return after contract end',
|
|
},
|
|
description: {
|
|
de: 'Klare Regelung zur Löschung oder Rückgabe aller Daten nach Vertragsende',
|
|
en: 'Clear provision for deletion or return of all data after contract end',
|
|
},
|
|
passCriteria: {
|
|
de: 'Löschfrist max. 30 Tage, Löschbestätigung vorgesehen',
|
|
en: 'Deletion within max 30 days, deletion confirmation provided',
|
|
},
|
|
requirements: ['Art. 28 Abs. 3 lit. g DSGVO'],
|
|
isRequired: true,
|
|
defaultFrequency: 'ANNUAL',
|
|
},
|
|
{
|
|
id: 'VND-DEL-02',
|
|
domain: 'DELETION',
|
|
title: {
|
|
de: 'Löschbestätigung',
|
|
en: 'Deletion confirmation',
|
|
},
|
|
description: {
|
|
de: 'Schriftliche Bestätigung der vollständigen Datenlöschung',
|
|
en: 'Written confirmation of complete data deletion',
|
|
},
|
|
passCriteria: {
|
|
de: 'Löschbestätigung vertraglich vereinbart und einforderbar',
|
|
en: 'Deletion confirmation contractually agreed and enforceable',
|
|
},
|
|
requirements: ['Art. 28 Abs. 3 lit. g DSGVO'],
|
|
isRequired: true,
|
|
defaultFrequency: 'ANNUAL',
|
|
},
|
|
{
|
|
id: 'VND-DEL-03',
|
|
domain: 'DELETION',
|
|
title: {
|
|
de: 'Löschung bei Unterauftragnehmern',
|
|
en: 'Deletion at sub-processors',
|
|
},
|
|
description: {
|
|
de: 'Löschpflicht erstreckt sich auf alle Unterauftragnehmer',
|
|
en: 'Deletion obligation extends to all sub-processors',
|
|
},
|
|
passCriteria: {
|
|
de: 'Weitergabe der Löschpflicht an Unterauftragnehmer vertraglich vereinbart',
|
|
en: 'Transfer of deletion obligation to sub-processors contractually agreed',
|
|
},
|
|
requirements: ['Art. 28 Abs. 3 lit. g, d DSGVO'],
|
|
isRequired: true,
|
|
defaultFrequency: 'ANNUAL',
|
|
},
|
|
{
|
|
id: 'VND-DEL-04',
|
|
domain: 'DELETION',
|
|
title: {
|
|
de: 'Backup-Löschung',
|
|
en: 'Backup deletion',
|
|
},
|
|
description: {
|
|
de: 'Daten werden auch aus Backups gelöscht',
|
|
en: 'Data is also deleted from backups',
|
|
},
|
|
passCriteria: {
|
|
de: 'Backup-Löschung geregelt, max. Aufbewahrungsfrist für Backups definiert',
|
|
en: 'Backup deletion regulated, max retention period for backups defined',
|
|
},
|
|
requirements: ['Art. 28 Abs. 3 lit. g DSGVO'],
|
|
isRequired: false,
|
|
defaultFrequency: 'ANNUAL',
|
|
},
|
|
]
|
|
|
|
// ==========================================
|
|
// INCIDENT - Incident Response Controls
|
|
// ==========================================
|
|
|
|
export const INCIDENT_CONTROLS: Control[] = [
|
|
{
|
|
id: 'VND-INC-01',
|
|
domain: 'INCIDENT',
|
|
title: {
|
|
de: 'Meldepflicht bei Datenpannen',
|
|
en: 'Data breach notification obligation',
|
|
},
|
|
description: {
|
|
de: 'Unverzügliche Meldung von Datenschutzverletzungen',
|
|
en: 'Immediate notification of data protection violations',
|
|
},
|
|
passCriteria: {
|
|
de: 'Meldepflicht vereinbart, Frist max. 24-48h, Mindestinhalte definiert',
|
|
en: 'Notification obligation agreed, deadline max 24-48h, minimum content defined',
|
|
},
|
|
requirements: ['Art. 33 Abs. 2 DSGVO'],
|
|
isRequired: true,
|
|
defaultFrequency: 'ANNUAL',
|
|
},
|
|
{
|
|
id: 'VND-INC-02',
|
|
domain: 'INCIDENT',
|
|
title: {
|
|
de: 'Incident Response Plan',
|
|
en: 'Incident Response Plan',
|
|
},
|
|
description: {
|
|
de: 'Vendor hat dokumentierten Incident Response Plan',
|
|
en: 'Vendor has documented incident response plan',
|
|
},
|
|
passCriteria: {
|
|
de: 'Incident Response Plan liegt vor und wurde getestet',
|
|
en: 'Incident response plan exists and has been tested',
|
|
},
|
|
requirements: ['ISO 27001 A.16.1'],
|
|
isRequired: false,
|
|
defaultFrequency: 'ANNUAL',
|
|
},
|
|
{
|
|
id: 'VND-INC-03',
|
|
domain: 'INCIDENT',
|
|
title: {
|
|
de: 'Kontaktstelle für Incidents',
|
|
en: 'Contact point for incidents',
|
|
},
|
|
description: {
|
|
de: 'Definierte Kontaktstelle für Datenschutzvorfälle',
|
|
en: 'Defined contact point for data protection incidents',
|
|
},
|
|
passCriteria: {
|
|
de: 'Kontaktdaten für Incident-Meldungen bekannt und aktuell',
|
|
en: 'Contact details for incident reporting known and current',
|
|
},
|
|
requirements: ['Art. 33 Abs. 2 DSGVO'],
|
|
isRequired: true,
|
|
defaultFrequency: 'QUARTERLY',
|
|
},
|
|
{
|
|
id: 'VND-INC-04',
|
|
domain: 'INCIDENT',
|
|
title: {
|
|
de: 'Unterstützung bei Incident-Dokumentation',
|
|
en: 'Support with incident documentation',
|
|
},
|
|
description: {
|
|
de: 'Vendor unterstützt bei der Dokumentation von Vorfällen',
|
|
en: 'Vendor supports documentation of incidents',
|
|
},
|
|
passCriteria: {
|
|
de: 'Unterstützungspflicht bei Dokumentation vertraglich vereinbart',
|
|
en: 'Support obligation for documentation contractually agreed',
|
|
},
|
|
requirements: ['Art. 33 Abs. 5 DSGVO'],
|
|
isRequired: true,
|
|
defaultFrequency: 'ANNUAL',
|
|
},
|
|
]
|