feat(#28): Initialize backend with application form template

This commit is contained in:
2025-12-23 19:19:06 +01:00
parent c64ed6a749
commit 46d6431747
5 changed files with 82 additions and 3 deletions

View File

@@ -1,6 +1,7 @@
package com.betriebsratkanzlei.legalconsenthub.application_form
import com.betriebsratkanzlei.legalconsenthub.form_element.FormElementSectionMapper
import com.betriebsratkanzlei.legalconsenthub.user.User
import com.betriebsratkanzlei.legalconsenthub.user.UserMapper
import com.betriebsratkanzlei.legalconsenthub.user.UserService
import com.betriebsratkanzlei.legalconsenthub_api.model.ApplicationFormDto
@@ -37,6 +38,13 @@ class ApplicationFormMapper(
fun toNewApplicationForm(applicationFormDto: ApplicationFormDto): ApplicationForm {
val currentUser = userService.getCurrentUser()
return toNewApplicationForm(applicationFormDto, currentUser)
}
fun toNewApplicationForm(
applicationFormDto: ApplicationFormDto,
user: User,
): ApplicationForm {
val applicationForm =
ApplicationForm(
id = null,
@@ -46,8 +54,8 @@ class ApplicationFormMapper(
status =
applicationFormDto.status
?: com.betriebsratkanzlei.legalconsenthub_api.model.ApplicationFormStatus.DRAFT,
createdBy = currentUser,
lastModifiedBy = currentUser,
createdBy = user,
lastModifiedBy = user,
)
applicationForm.formElementSections =
applicationFormDto.formElementSections

View File

@@ -11,6 +11,8 @@ import java.util.UUID
interface ApplicationFormRepository : JpaRepository<ApplicationForm, UUID> {
fun findAllByIsTemplateTrue(page: Pageable): Page<ApplicationForm>
fun existsByIsTemplateTrue(): Boolean
@Query(
"SELECT c FROM ApplicationForm c WHERE (c.isTemplate IS false) AND (:organizationId is null or c.organizationId = :organizationId)",
)

View File

@@ -0,0 +1,69 @@
package com.betriebsratkanzlei.legalconsenthub.seed
import com.betriebsratkanzlei.legalconsenthub.application_form.ApplicationFormMapper
import com.betriebsratkanzlei.legalconsenthub.application_form.ApplicationFormRepository
import com.betriebsratkanzlei.legalconsenthub.user.User
import com.betriebsratkanzlei.legalconsenthub.user.UserRepository
import com.betriebsratkanzlei.legalconsenthub_api.model.ApplicationFormDto
import com.fasterxml.jackson.databind.ObjectMapper
import org.slf4j.LoggerFactory
import org.springframework.boot.ApplicationArguments
import org.springframework.boot.ApplicationRunner
import org.springframework.core.io.ClassPathResource
import org.springframework.stereotype.Component
import org.springframework.transaction.annotation.Transactional
@Component
class InitialApplicationFormTemplateSeeder(
private val applicationFormRepository: ApplicationFormRepository,
private val applicationFormMapper: ApplicationFormMapper,
private val userRepository: UserRepository,
private val objectMapper: ObjectMapper,
) : ApplicationRunner {
override fun run(args: ApplicationArguments) {
seedInitialTemplateIfMissing()
}
@Transactional
fun seedInitialTemplateIfMissing() {
if (applicationFormRepository.existsByIsTemplateTrue()) {
log.info(
"At least one application form template already present, skipping initial template seed",
)
return
}
val seedingUser = getOrCreateSeedingUser()
val dto = loadInitialTemplateDto()
val applicationForm = applicationFormMapper.toNewApplicationForm(dto.copy(isTemplate = true), seedingUser)
applicationFormRepository.save(applicationForm)
log.info("Seeded initial application form template (name={})", applicationForm.name)
}
private fun loadInitialTemplateDto(): ApplicationFormDto =
ClassPathResource(INITIAL_TEMPLATE_RESOURCE_PATH).inputStream.use { inputStream ->
objectMapper.readValue(inputStream, ApplicationFormDto::class.java)
}
private fun getOrCreateSeedingUser(): User {
val existing = userRepository.findById(SEEDING_USER_ID)
if (existing.isPresent) return existing.get()
val user =
User(
keycloakId = SEEDING_USER_ID,
name = "System Seeder",
organizationId = null,
email = null,
)
return userRepository.save(user)
}
companion object {
private val log = LoggerFactory.getLogger(InitialApplicationFormTemplateSeeder::class.java)
private const val INITIAL_TEMPLATE_RESOURCE_PATH = "seed/initial_application_form_template.json"
private const val SEEDING_USER_ID = "system-seeder"
}
}

View File

@@ -0,0 +1,765 @@
{
"isTemplate": true,
"name": "Name des IT-Systems",
"formElementSections": [
{
"title": "Angaben zum IT-System",
"shortTitle": "IT-System",
"description": "Alle Angaben zum IT-System",
"formElementSubSections": [
{
"title": "Art der Maßnahme",
"subtitle": "",
"formElements": [
{
"reference": "art_der_massnahme",
"title": "Art der IT-System Maßnahme",
"description": "Handelt es sich um eine Einführung, Änderung, Erweiterung oder Ablösung/Einstellung eines IT-Systems?",
"options": [
{
"value": "Einführung",
"label": "Einführung",
"processingPurpose": "SYSTEM_OPERATION",
"employeeDataCategory": "NON_CRITICAL"
},
{
"value": "Änderung IT-System",
"label": "Änderung IT-System",
"processingPurpose": "SYSTEM_OPERATION",
"employeeDataCategory": "NON_CRITICAL"
},
{
"value": "Erweiterung",
"label": "Erweiterung",
"processingPurpose": "SYSTEM_OPERATION",
"employeeDataCategory": "NON_CRITICAL"
},
{
"value": "Ablösung/Einstellung IT-System",
"label": "Ablösung/Einstellung IT-System",
"processingPurpose": "SYSTEM_OPERATION",
"employeeDataCategory": "NON_CRITICAL"
}
],
"type": "RADIOBUTTON"
}
]
},
{
"title": "Allgemeine Information",
"subtitle": "Grundlegende Informationen zum IT-System",
"formElements": [
{
"reference": "einfuehrungszeitpunkt",
"title": "Einführungszeitpunkt",
"description": "Geplanter Termin Going Live",
"options": [
{
"value": "",
"label": "Einführungszeitpunkt",
"processingPurpose": "SYSTEM_OPERATION",
"employeeDataCategory": "NON_CRITICAL"
}
],
"type": "DATE",
"visibilityCondition": {
"formElementConditionType": "SHOW",
"sourceFormElementReference": "art_der_massnahme",
"formElementExpectedValue": "Einführung",
"formElementOperator": "EQUALS"
}
},
{
"reference": "testphase_findet_statt",
"title": "Testphase findet statt",
"description": "Findet eine Testphase statt?",
"options": [
{
"value": "Ja",
"label": "Ja",
"processingPurpose": "SYSTEM_OPERATION",
"employeeDataCategory": "NON_CRITICAL"
},
{
"value": "Nein",
"label": "Nein",
"processingPurpose": "SYSTEM_OPERATION",
"employeeDataCategory": "NON_CRITICAL"
}
],
"type": "RADIOBUTTON",
"visibilityCondition": {
"formElementConditionType": "HIDE",
"sourceFormElementReference": "art_der_massnahme",
"formElementExpectedValue": "Ablösung/Einstellung IT-System",
"formElementOperator": "EQUALS"
}
},
{
"reference": "testphase_zeitraum",
"title": "Testphase Zeitraum",
"description": "Zeitraum der Testphase (von ... bis)",
"options": [
{
"value": "",
"label": "Testphase Zeitraum",
"processingPurpose": "SYSTEM_OPERATION",
"employeeDataCategory": "NON_CRITICAL"
}
],
"type": "TEXTAREA",
"visibilityCondition": {
"formElementConditionType": "SHOW",
"sourceFormElementReference": "testphase_findet_statt",
"formElementExpectedValue": "Ja",
"formElementOperator": "EQUALS"
}
},
{
"reference": "verwendung_anonymisierter_daten",
"title": "Verwendung anonymisierter/fiktiver Daten",
"description": "Während der Testphase/n wird mit anonymisierten bzw. fiktiven Daten gearbeitet",
"options": [
{
"value": "Ja",
"label": "Ja",
"processingPurpose": "SYSTEM_OPERATION",
"employeeDataCategory": "NON_CRITICAL"
},
{
"value": "Nein",
"label": "Nein",
"processingPurpose": "DATA_ANALYSIS",
"employeeDataCategory": "REVIEW_REQUIRED"
}
],
"type": "RADIOBUTTON",
"visibilityCondition": {
"formElementConditionType": "SHOW",
"sourceFormElementReference": "testphase_findet_statt",
"formElementExpectedValue": "Ja",
"formElementOperator": "EQUALS"
}
},
{
"reference": "art_der_mitarbeiterdaten",
"title": "Art der Mitarbeiterdaten (falls Echtdaten)",
"description": "Welche Art von Mitarbeiterdaten werden verwendet?",
"options": [
{
"value": "",
"label": "Art der Mitarbeiterdaten",
"processingPurpose": "DATA_ANALYSIS",
"employeeDataCategory": "SENSITIVE"
}
],
"type": "TEXTAREA",
"visibilityCondition": {
"formElementConditionType": "SHOW",
"sourceFormElementReference": "verwendung_anonymisierter_daten",
"formElementExpectedValue": "Nein",
"formElementOperator": "EQUALS"
}
},
{
"reference": "anzahl_betroffener_mitarbeiter",
"title": "Anzahl betroffener Mitarbeiter (Testphase)",
"description": "Wie viele Mitarbeiter sind von der Testphase betroffen?",
"options": [
{
"value": "",
"label": "Anzahl betroffener Mitarbeiter",
"processingPurpose": "DATA_ANALYSIS",
"employeeDataCategory": "REVIEW_REQUIRED"
}
],
"type": "TEXTAREA",
"visibilityCondition": {
"formElementConditionType": "SHOW",
"sourceFormElementReference": "verwendung_anonymisierter_daten",
"formElementExpectedValue": "Nein",
"formElementOperator": "EQUALS"
}
},
{
"reference": "umfang_der_mitarbeiterdatenverarbeitung",
"title": "Umfang der Mitarbeiterdatenverarbeitung",
"description": "In welchem Umfang werden Mitarbeiterdaten verarbeitet?",
"options": [
{
"value": "",
"label": "Umfang der Verarbeitung",
"processingPurpose": "DATA_ANALYSIS",
"employeeDataCategory": "SENSITIVE"
}
],
"type": "TEXTAREA",
"visibilityCondition": {
"formElementConditionType": "SHOW",
"sourceFormElementReference": "verwendung_anonymisierter_daten",
"formElementExpectedValue": "Nein",
"formElementOperator": "EQUALS"
}
},
{
"reference": "name_des_abgeloesten_systems",
"title": "Name des abgelösten Systems",
"description": "Bezeichnung des abgelösten Systems",
"options": [
{
"value": "",
"label": "Name des abgelösten Systems",
"processingPurpose": "SYSTEM_OPERATION",
"employeeDataCategory": "NON_CRITICAL"
}
],
"type": "TEXTAREA",
"visibilityCondition": {
"formElementConditionType": "SHOW",
"sourceFormElementReference": "art_der_massnahme",
"formElementExpectedValue": "Ablösung/Einstellung IT-System",
"formElementOperator": "EQUALS"
}
},
{
"reference": "name_des_geaenderten_systems",
"title": "Name des geänderten Systems",
"description": "Bezeichnung des geänderten Systems",
"options": [
{
"value": "",
"label": "Name des geänderten Systems",
"processingPurpose": "SYSTEM_OPERATION",
"employeeDataCategory": "NON_CRITICAL"
}
],
"type": "TEXTAREA",
"visibilityCondition": {
"formElementConditionType": "SHOW",
"sourceFormElementReference": "art_der_massnahme",
"formElementExpectedValue": "Änderung IT-System",
"formElementOperator": "EQUALS"
}
}
]
},
{
"title": "Verantwortlicher und betroffene Betriebe / Betriebsteile",
"subtitle": "Informationen zu Verantwortlichen und betroffenen Bereichen",
"formElements": [
{
"reference": "verantwortlicher_fachbereich",
"title": "Verantwortlicher Fachbereich und Ansprechpartner",
"description": "Bitte geben Sie den verantwortlichen Fachbereich und Ansprechpartner an",
"options": [
{
"value": "",
"label": "Fachbereich und Ansprechpartner",
"processingPurpose": "BUSINESS_PROCESS",
"employeeDataCategory": "NON_CRITICAL"
}
],
"type": "TEXTAREA",
"visibilityCondition": {
"formElementConditionType": "HIDE",
"sourceFormElementReference": "art_der_massnahme",
"formElementExpectedValue": "Ablösung/Einstellung IT-System",
"formElementOperator": "EQUALS"
}
},
{
"reference": "betroffene_betriebe",
"title": "Betroffene Betriebe/Betriebsteile",
"description": "Für welche Betriebe/Betriebsteile wird das IT-System eingeführt?",
"options": [
{
"value": "",
"label": "Betroffene Betriebe/Betriebsteile",
"processingPurpose": "BUSINESS_PROCESS",
"employeeDataCategory": "REVIEW_REQUIRED"
}
],
"type": "TEXTAREA",
"visibilityCondition": {
"formElementConditionType": "HIDE",
"sourceFormElementReference": "art_der_massnahme",
"formElementExpectedValue": "Ablösung/Einstellung IT-System",
"formElementOperator": "EQUALS"
}
},
{
"reference": "betroffene_bereiche",
"title": "Betroffene Bereiche/Abteilungen",
"description": "Für welche Bereiche bzw. Abteilungen soll das IT-System zum Einsatz kommen?",
"options": [
{
"value": "",
"label": "Bereiche/Abteilungen",
"processingPurpose": "BUSINESS_PROCESS",
"employeeDataCategory": "REVIEW_REQUIRED"
}
],
"type": "TEXTAREA",
"visibilityCondition": {
"formElementConditionType": "HIDE",
"sourceFormElementReference": "art_der_massnahme",
"formElementExpectedValue": "Ablösung/Einstellung IT-System",
"formElementOperator": "EQUALS"
}
}
]
},
{
"title": "Angaben zum IT-System",
"subtitle": "Detaillierte Informationen zum IT-System",
"formElements": [
{
"reference": "systembeschreibung",
"title": "Systembeschreibung",
"description": "Beschreibung des IT-Systems",
"options": [
{
"value": "",
"label": "Systembeschreibung",
"processingPurpose": "SYSTEM_OPERATION",
"employeeDataCategory": "NON_CRITICAL"
}
],
"type": "TEXTAREA",
"visibilityCondition": {
"formElementConditionType": "HIDE",
"sourceFormElementReference": "art_der_massnahme",
"formElementExpectedValue": "Ablösung/Einstellung IT-System",
"formElementOperator": "EQUALS"
}
},
{
"reference": "zielsetzung",
"title": "Zielsetzung des Systemeinsatzes",
"description": "Zielsetzung und Zweck des IT-Systems",
"options": [
{
"value": "",
"label": "Zielsetzung",
"processingPurpose": "SYSTEM_OPERATION",
"employeeDataCategory": "NON_CRITICAL"
}
],
"type": "TEXTAREA",
"visibilityCondition": {
"formElementConditionType": "HIDE",
"sourceFormElementReference": "art_der_massnahme",
"formElementExpectedValue": "Ablösung/Einstellung IT-System",
"formElementOperator": "EQUALS"
}
},
{
"reference": "hersteller",
"title": "Hersteller/Anbieter",
"description": "Hersteller oder Anbieter des IT-Systems",
"options": [
{
"value": "",
"label": "Hersteller/Anbieter",
"processingPurpose": "SYSTEM_OPERATION",
"employeeDataCategory": "NON_CRITICAL"
}
],
"type": "TEXTAREA",
"visibilityCondition": {
"formElementConditionType": "HIDE",
"sourceFormElementReference": "art_der_massnahme",
"formElementExpectedValue": "Ablösung/Einstellung IT-System",
"formElementOperator": "EQUALS"
}
},
{
"reference": "speicherort",
"title": "Speicherort",
"description": "Wo werden die Daten gespeichert?",
"options": [
{
"value": "Server im Rechenzentrum",
"label": "Server im Rechenzentrum",
"processingPurpose": "SYSTEM_OPERATION",
"employeeDataCategory": "REVIEW_REQUIRED"
},
{
"value": "Cloud",
"label": "Cloud",
"processingPurpose": "SYSTEM_OPERATION",
"employeeDataCategory": "SENSITIVE"
}
],
"type": "RADIOBUTTON",
"visibilityCondition": {
"formElementConditionType": "HIDE",
"sourceFormElementReference": "art_der_massnahme",
"formElementExpectedValue": "Ablösung/Einstellung IT-System",
"formElementOperator": "EQUALS"
}
},
{
"reference": "geraeteart",
"title": "Zugriff auf die Daten erfolgt über (Geräteart)",
"description": "Über welche Art von Gerät erfolgt der Zugriff?",
"options": [
{
"value": "stationäres Endgerät",
"label": "stationäres Endgerät",
"processingPurpose": "SYSTEM_OPERATION",
"employeeDataCategory": "NON_CRITICAL"
},
{
"value": "mobile App",
"label": "mobile App",
"processingPurpose": "SYSTEM_OPERATION",
"employeeDataCategory": "REVIEW_REQUIRED"
},
{
"value": "Browser",
"label": "Browser",
"processingPurpose": "SYSTEM_OPERATION",
"employeeDataCategory": "NON_CRITICAL"
}
],
"type": "SELECT",
"visibilityCondition": {
"formElementConditionType": "HIDE",
"sourceFormElementReference": "art_der_massnahme",
"formElementExpectedValue": "Ablösung/Einstellung IT-System",
"formElementOperator": "EQUALS"
}
},
{
"reference": "geraetebesitz",
"title": "Zugriff auf die Daten erfolgt über (Gerätebesitz)",
"description": "Mit welchen Geräten wird auf die Daten zugegriffen?",
"options": [
{
"value": "dienstliche Endgeräte",
"label": "dienstliche Endgeräte",
"processingPurpose": "SYSTEM_OPERATION",
"employeeDataCategory": "NON_CRITICAL"
},
{
"value": "private Endgeräte",
"label": "private Endgeräte",
"processingPurpose": "SYSTEM_OPERATION",
"employeeDataCategory": "SENSITIVE"
}
],
"type": "RADIOBUTTON",
"visibilityCondition": {
"formElementConditionType": "HIDE",
"sourceFormElementReference": "art_der_massnahme",
"formElementExpectedValue": "Ablösung/Einstellung IT-System",
"formElementOperator": "EQUALS"
}
},
{
"reference": "modulbasiertes_system",
"title": "Modulbasiertes System",
"description": "Ist das IT-System modulbasiert?",
"options": [
{
"value": "Ja",
"label": "Ja",
"processingPurpose": "SYSTEM_OPERATION",
"employeeDataCategory": "NON_CRITICAL"
},
{
"value": "Nein",
"label": "Nein",
"processingPurpose": "SYSTEM_OPERATION",
"employeeDataCategory": "NON_CRITICAL"
}
],
"type": "RADIOBUTTON",
"visibilityCondition": {
"formElementConditionType": "HIDE",
"sourceFormElementReference": "art_der_massnahme",
"formElementExpectedValue": "Ablösung/Einstellung IT-System",
"formElementOperator": "EQUALS"
}
},
{
"reference": "modul_1",
"title": "Modulname",
"description": "Name des Moduls eingeben",
"options": [
{
"value": "",
"label": "Modulname",
"processingPurpose": "SYSTEM_OPERATION",
"employeeDataCategory": "NON_CRITICAL"
}
],
"type": "TEXTAREA",
"isClonable": true,
"sectionSpawnTrigger": {
"templateReference": "module_details_template",
"sectionSpawnConditionType": "SHOW",
"sectionSpawnOperator": "IS_NOT_EMPTY"
},
"visibilityCondition": {
"formElementConditionType": "SHOW",
"sourceFormElementReference": "modulbasiertes_system",
"formElementExpectedValue": "Ja",
"formElementOperator": "EQUALS"
}
},
{
"reference": "ki_einsatz",
"title": "Einsatz Künstlicher Intelligenz",
"description": "Kommt im IT-System Künstliche Intelligenz zum Einsatz?",
"options": [
{
"value": "Nein",
"label": "Nein",
"processingPurpose": "SYSTEM_OPERATION",
"employeeDataCategory": "NON_CRITICAL"
},
{
"value": "Ja",
"label": "Ja",
"processingPurpose": "DATA_ANALYSIS",
"employeeDataCategory": "SENSITIVE"
}
],
"type": "RADIOBUTTON",
"isClonable": false,
"sectionSpawnTrigger": {
"templateReference": "ki_details_template",
"sectionSpawnConditionType": "SHOW",
"sectionSpawnExpectedValue": "Ja",
"sectionSpawnOperator": "EQUALS"
},
"visibilityCondition": {
"formElementConditionType": "HIDE",
"sourceFormElementReference": "art_der_massnahme",
"formElementExpectedValue": "Ablösung/Einstellung IT-System",
"formElementOperator": "EQUALS"
}
},
{
"reference": "wirtschaftliche_auswirkungen",
"title": "Wirtschaftliche Auswirkungen",
"description": "Zu erwartende wirtschaftliche Auswirkungen auf das Unternehmen",
"options": [
{
"value": "Keine",
"label": "Keine",
"processingPurpose": "BUSINESS_PROCESS",
"employeeDataCategory": "NON_CRITICAL"
},
{
"value": "Ja",
"label": "Ja",
"processingPurpose": "BUSINESS_PROCESS",
"employeeDataCategory": "REVIEW_REQUIRED"
}
],
"type": "RADIOBUTTON",
"visibilityCondition": {
"formElementConditionType": "HIDE",
"sourceFormElementReference": "art_der_massnahme",
"formElementExpectedValue": "Ablösung/Einstellung IT-System",
"formElementOperator": "EQUALS"
}
},
{
"reference": "beschreibung_wirtschaftliche_auswirkungen",
"title": "Beschreibung wirtschaftliche Auswirkungen",
"description": "Bitte beschreiben Sie die wirtschaftlichen Auswirkungen",
"options": [
{
"value": "",
"label": "Beschreibung der Auswirkungen",
"processingPurpose": "BUSINESS_PROCESS",
"employeeDataCategory": "REVIEW_REQUIRED"
}
],
"type": "TEXTAREA",
"visibilityCondition": {
"formElementConditionType": "SHOW",
"sourceFormElementReference": "wirtschaftliche_auswirkungen",
"formElementExpectedValue": "Ja",
"formElementOperator": "EQUALS"
}
}
]
}
]
},
{
"title": "Moduldetails",
"shortTitle": "{{triggerValue}}",
"description": "Detaillierte Informationen zum Modul",
"isTemplate": true,
"templateReference": "module_details_template",
"titleTemplate": "Modul: {{triggerValue}}",
"formElementSubSections": [
{
"title": "Modulinformationen",
"formElements": [
{
"reference": "modul_beschreibung",
"title": "Modulbeschreibung",
"description": "Beschreiben Sie die Funktionalität des Moduls",
"type": "TEXTAREA",
"options": [
{
"value": "",
"label": "Beschreibung",
"processingPurpose": "SYSTEM_OPERATION",
"employeeDataCategory": "NON_CRITICAL"
}
]
},
{
"reference": "modul_nutzergruppen",
"title": "Nutzergruppen",
"description": "Welche Nutzergruppen verwenden dieses Modul?",
"type": "TEXTAREA",
"options": [
{
"value": "",
"label": "Nutzergruppen",
"processingPurpose": "SYSTEM_OPERATION",
"employeeDataCategory": "REVIEW_REQUIRED"
}
]
},
{
"reference": "modul_datenkategorien",
"title": "Verarbeitete Datenkategorien",
"type": "CHECKBOX",
"options": [
{
"value": "false",
"label": "Stammdaten",
"processingPurpose": "SYSTEM_OPERATION",
"employeeDataCategory": "NON_CRITICAL"
},
{
"value": "false",
"label": "Leistungsdaten",
"processingPurpose": "DATA_ANALYSIS",
"employeeDataCategory": "SENSITIVE"
},
{
"value": "false",
"label": "Verhaltensdaten",
"processingPurpose": "DATA_ANALYSIS",
"employeeDataCategory": "SENSITIVE"
}
]
}
]
}
]
},
{
"title": "Details zum KI-Einsatz",
"shortTitle": "KI-Einsatz",
"description": "Informationen zum Einsatz künstlicher Intelligenz",
"isTemplate": true,
"templateReference": "ki_details_template",
"titleTemplate": "Details zum KI-Einsatz",
"formElementSubSections": [
{
"title": "KI-Informationen",
"formElements": [
{
"reference": "ki_art",
"title": "Art der KI",
"description": "Um welche Art von KI handelt es sich?",
"type": "CHECKBOX",
"options": [
{
"value": "false",
"label": "Machine Learning",
"processingPurpose": "DATA_ANALYSIS",
"employeeDataCategory": "SENSITIVE"
},
{
"value": "false",
"label": "Generative KI (LLM)",
"processingPurpose": "DATA_ANALYSIS",
"employeeDataCategory": "SENSITIVE"
},
{
"value": "false",
"label": "Regelbasierte KI",
"processingPurpose": "DATA_ANALYSIS",
"employeeDataCategory": "REVIEW_REQUIRED"
}
]
},
{
"reference": "ki_zweck",
"title": "Einsatzzweck der KI",
"description": "Für welchen Zweck wird die KI eingesetzt?",
"type": "TEXTAREA",
"options": [
{
"value": "",
"label": "Einsatzzweck",
"processingPurpose": "DATA_ANALYSIS",
"employeeDataCategory": "SENSITIVE"
}
]
},
{
"reference": "ki_entscheidungen",
"title": "Automatisierte Entscheidungen",
"description": "Werden durch die KI automatisierte Entscheidungen getroffen, die Beschäftigte betreffen?",
"type": "RADIOBUTTON",
"options": [
{
"value": "Nein",
"label": "Nein",
"processingPurpose": "DATA_ANALYSIS",
"employeeDataCategory": "NON_CRITICAL"
},
{
"value": "Ja, mit menschlicher Überprüfung",
"label": "Ja, mit menschlicher Überprüfung",
"processingPurpose": "DATA_ANALYSIS",
"employeeDataCategory": "SENSITIVE"
},
{
"value": "Ja, vollautomatisch",
"label": "Ja, vollautomatisch",
"processingPurpose": "DATA_ANALYSIS",
"employeeDataCategory": "SENSITIVE"
}
]
},
{
"reference": "ki_trainingsdaten",
"title": "Trainingsdaten",
"description": "Werden Beschäftigtendaten für das Training der KI verwendet?",
"type": "RADIOBUTTON",
"options": [
{
"value": "Nein",
"label": "Nein",
"processingPurpose": "DATA_ANALYSIS",
"employeeDataCategory": "NON_CRITICAL"
},
{
"value": "Ja",
"label": "Ja",
"processingPurpose": "DATA_ANALYSIS",
"employeeDataCategory": "SENSITIVE"
}
]
}
]
}
]
}
]
}