import type { ScopeQuestionBlock, } from './compliance-scope-types' import { DEPARTMENT_DATA_CATEGORIES } from './vvt-profiling' import { BLOCK_1_ORGANISATION, BLOCK_2_DATA, BLOCK_3_PROCESSING, BLOCK_4_TECH, BLOCK_5_PROCESSES, BLOCK_6_PRODUCT, BLOCK_7_AI_SYSTEMS, } from './compliance-scope-profiling-blocks' /** * Block 8: Verarbeitungstätigkeiten (portiert aus Company Profile Step 6) */ const BLOCK_8_VVT: ScopeQuestionBlock = { id: 'vvt', title: 'Verarbeitungstätigkeiten', description: 'Übersicht der Datenverarbeitungen nach Art. 30 DSGVO', order: 8, questions: [ { id: 'vvt_departments', type: 'multi', question: 'In welchen Abteilungen werden personenbezogene Daten verarbeitet?', helpText: 'Wählen Sie alle Abteilungen, in denen Verarbeitungstätigkeiten stattfinden', required: true, options: [ { value: 'personal', label: 'Personal / HR' }, { value: 'finanzen', label: 'Finanzen / Buchhaltung' }, { value: 'vertrieb', label: 'Vertrieb / Sales' }, { value: 'marketing', label: 'Marketing' }, { value: 'it', label: 'IT / Administration' }, { value: 'recht', label: 'Recht / Compliance' }, { value: 'kundenservice', label: 'Kundenservice / Support' }, { value: 'produktion', label: 'Produktion / Fertigung' }, { value: 'logistik', label: 'Logistik / Versand' }, { value: 'einkauf', label: 'Einkauf / Beschaffung' }, { value: 'facility', label: 'Facility Management' }, ], scoreWeights: { risk: 10, complexity: 10, assurance: 8 }, }, { id: 'vvt_data_categories', type: 'multi', question: 'Welche Datenkategorien werden verarbeitet?', helpText: 'Wählen Sie alle zutreffenden Kategorien personenbezogener Daten', required: true, options: [ { value: 'stammdaten', label: 'Stammdaten (Name, Geburtsdatum)' }, { value: 'kontaktdaten', label: 'Kontaktdaten (E-Mail, Telefon, Adresse)' }, { value: 'vertragsdaten', label: 'Vertragsdaten' }, { value: 'zahlungsdaten', label: 'Zahlungs-/Bankdaten' }, { value: 'beschaeftigtendaten', label: 'Beschäftigtendaten (Gehalt, Arbeitszeiten)' }, { value: 'kommunikation', label: 'Kommunikationsdaten (E-Mail, Chat)' }, { value: 'nutzungsdaten', label: 'Nutzungs-/Logdaten (IP, Klicks)' }, { value: 'standortdaten', label: 'Standortdaten' }, { value: 'bilddaten', label: 'Bild-/Videodaten' }, { value: 'bewerberdaten', label: 'Bewerberdaten' }, ], scoreWeights: { risk: 8, complexity: 7, assurance: 7 }, }, { id: 'vvt_special_categories', type: 'boolean', question: 'Verarbeiten Sie besondere Kategorien (Art. 9 DSGVO) in Ihren Tätigkeiten?', helpText: 'Gesundheit, Biometrie, Religion, Gewerkschaft — über die bereits in Block 2 erfassten hinaus', required: true, scoreWeights: { risk: 10, complexity: 5, assurance: 8 }, }, { id: 'vvt_has_vvt', type: 'boolean', question: 'Haben Sie bereits ein Verarbeitungsverzeichnis (VVT)?', helpText: 'Dokumentation aller Verarbeitungstätigkeiten nach Art. 30 DSGVO', required: true, scoreWeights: { risk: -5, complexity: 3, assurance: 8 }, }, { id: 'vvt_external_processors', type: 'boolean', question: 'Setzen Sie externe Dienstleister als Auftragsverarbeiter ein?', helpText: 'Lohnbüro, Hosting-Provider, Cloud-Dienste, externe IT etc.', required: true, scoreWeights: { risk: 7, complexity: 6, assurance: 7 }, }, ], } /** * Block 9: Datenkategorien pro Abteilung * Generiert Fragen dynamisch aus DEPARTMENT_DATA_CATEGORIES */ const BLOCK_9_DATENKATEGORIEN: ScopeQuestionBlock = { id: 'datenkategorien_detail', title: 'Datenkategorien pro Abteilung', description: 'Detaillierte Erfassung der Datenkategorien je Abteilung — basierend auf Ihrer Abteilungswahl in Block 8', order: 9, questions: [ { id: 'dk_dept_hr', type: 'multi', question: 'Welche Datenkategorien verarbeitet Ihre Personalabteilung?', helpText: 'Waehlen Sie alle zutreffenden Datenkategorien fuer den HR-Bereich', required: false, options: DEPARTMENT_DATA_CATEGORIES.dept_hr.categories.map(c => ({ value: c.id, label: `${c.label}${c.isArt9 ? ' (Art. 9)' : ''}`, })), scoreWeights: { risk: 6, complexity: 4, assurance: 5 }, mapsToVVTQuestion: 'dept_hr_categories', }, { id: 'dk_dept_recruiting', type: 'multi', question: 'Welche Datenkategorien verarbeitet Ihr Recruiting?', helpText: 'Waehlen Sie alle zutreffenden Datenkategorien fuer das Bewerbermanagement', required: false, options: DEPARTMENT_DATA_CATEGORIES.dept_recruiting.categories.map(c => ({ value: c.id, label: `${c.label}${c.isArt9 ? ' (Art. 9)' : ''}`, })), scoreWeights: { risk: 5, complexity: 3, assurance: 4 }, mapsToVVTQuestion: 'dept_recruiting_categories', }, { id: 'dk_dept_finance', type: 'multi', question: 'Welche Datenkategorien verarbeitet Ihre Finanzabteilung?', helpText: 'Waehlen Sie alle zutreffenden Datenkategorien fuer Finanzen & Buchhaltung', required: false, options: DEPARTMENT_DATA_CATEGORIES.dept_finance.categories.map(c => ({ value: c.id, label: `${c.label}${c.isArt9 ? ' (Art. 9)' : ''}`, })), scoreWeights: { risk: 6, complexity: 4, assurance: 5 }, mapsToVVTQuestion: 'dept_finance_categories', }, { id: 'dk_dept_sales', type: 'multi', question: 'Welche Datenkategorien verarbeitet Ihr Vertrieb?', helpText: 'Waehlen Sie alle zutreffenden Datenkategorien fuer Vertrieb & CRM', required: false, options: DEPARTMENT_DATA_CATEGORIES.dept_sales.categories.map(c => ({ value: c.id, label: `${c.label}${c.isArt9 ? ' (Art. 9)' : ''}`, })), scoreWeights: { risk: 5, complexity: 4, assurance: 4 }, mapsToVVTQuestion: 'dept_sales_categories', }, { id: 'dk_dept_marketing', type: 'multi', question: 'Welche Datenkategorien verarbeitet Ihr Marketing?', helpText: 'Waehlen Sie alle zutreffenden Datenkategorien fuer Marketing', required: false, options: DEPARTMENT_DATA_CATEGORIES.dept_marketing.categories.map(c => ({ value: c.id, label: `${c.label}${c.isArt9 ? ' (Art. 9)' : ''}`, })), scoreWeights: { risk: 6, complexity: 5, assurance: 5 }, mapsToVVTQuestion: 'dept_marketing_categories', }, { id: 'dk_dept_support', type: 'multi', question: 'Welche Datenkategorien verarbeitet Ihr Kundenservice?', helpText: 'Waehlen Sie alle zutreffenden Datenkategorien fuer Support', required: false, options: DEPARTMENT_DATA_CATEGORIES.dept_support.categories.map(c => ({ value: c.id, label: `${c.label}${c.isArt9 ? ' (Art. 9)' : ''}`, })), scoreWeights: { risk: 5, complexity: 3, assurance: 4 }, mapsToVVTQuestion: 'dept_support_categories', }, { id: 'dk_dept_it', type: 'multi', question: 'Welche Datenkategorien verarbeitet Ihre IT-Abteilung?', helpText: 'Waehlen Sie alle zutreffenden Datenkategorien fuer IT / Administration', required: false, options: DEPARTMENT_DATA_CATEGORIES.dept_it.categories.map(c => ({ value: c.id, label: `${c.label}${c.isArt9 ? ' (Art. 9)' : ''}`, })), scoreWeights: { risk: 7, complexity: 5, assurance: 6 }, mapsToVVTQuestion: 'dept_it_categories', }, { id: 'dk_dept_recht', type: 'multi', question: 'Welche Datenkategorien verarbeitet Ihre Rechtsabteilung?', helpText: 'Waehlen Sie alle zutreffenden Datenkategorien fuer Recht / Compliance', required: false, options: DEPARTMENT_DATA_CATEGORIES.dept_recht.categories.map(c => ({ value: c.id, label: `${c.label}${c.isArt9 ? ' (Art. 9)' : ''}`, })), scoreWeights: { risk: 6, complexity: 4, assurance: 6 }, mapsToVVTQuestion: 'dept_recht_categories', }, { id: 'dk_dept_produktion', type: 'multi', question: 'Welche Datenkategorien verarbeitet Ihre Produktion?', helpText: 'Waehlen Sie alle zutreffenden Datenkategorien fuer Produktion / Fertigung', required: false, options: DEPARTMENT_DATA_CATEGORIES.dept_produktion.categories.map(c => ({ value: c.id, label: `${c.label}${c.isArt9 ? ' (Art. 9)' : ''}`, })), scoreWeights: { risk: 6, complexity: 4, assurance: 5 }, mapsToVVTQuestion: 'dept_produktion_categories', }, { id: 'dk_dept_logistik', type: 'multi', question: 'Welche Datenkategorien verarbeitet Ihre Logistik?', helpText: 'Waehlen Sie alle zutreffenden Datenkategorien fuer Logistik / Versand', required: false, options: DEPARTMENT_DATA_CATEGORIES.dept_logistik.categories.map(c => ({ value: c.id, label: `${c.label}${c.isArt9 ? ' (Art. 9)' : ''}`, })), scoreWeights: { risk: 5, complexity: 3, assurance: 4 }, mapsToVVTQuestion: 'dept_logistik_categories', }, { id: 'dk_dept_einkauf', type: 'multi', question: 'Welche Datenkategorien verarbeitet Ihr Einkauf?', helpText: 'Waehlen Sie alle zutreffenden Datenkategorien fuer Einkauf / Beschaffung', required: false, options: DEPARTMENT_DATA_CATEGORIES.dept_einkauf.categories.map(c => ({ value: c.id, label: `${c.label}${c.isArt9 ? ' (Art. 9)' : ''}`, })), scoreWeights: { risk: 4, complexity: 3, assurance: 4 }, mapsToVVTQuestion: 'dept_einkauf_categories', }, { id: 'dk_dept_facility', type: 'multi', question: 'Welche Datenkategorien verarbeitet Ihr Facility Management?', helpText: 'Waehlen Sie alle zutreffenden Datenkategorien fuer Facility Management', required: false, options: DEPARTMENT_DATA_CATEGORIES.dept_facility.categories.map(c => ({ value: c.id, label: `${c.label}${c.isArt9 ? ' (Art. 9)' : ''}`, })), scoreWeights: { risk: 5, complexity: 3, assurance: 4 }, mapsToVVTQuestion: 'dept_facility_categories', }, ], } /** * All question blocks in order */ export const SCOPE_QUESTION_BLOCKS: ScopeQuestionBlock[] = [ BLOCK_1_ORGANISATION, BLOCK_2_DATA, BLOCK_3_PROCESSING, BLOCK_4_TECH, BLOCK_5_PROCESSES, BLOCK_6_PRODUCT, BLOCK_7_AI_SYSTEMS, BLOCK_8_VVT, BLOCK_9_DATENKATEGORIEN, ]