package training // ============================================================================ // Constants / Enums // ============================================================================ // RegulationArea represents a compliance regulation area type RegulationArea string const ( RegulationDSGVO RegulationArea = "dsgvo" RegulationNIS2 RegulationArea = "nis2" RegulationISO27001 RegulationArea = "iso27001" RegulationAIAct RegulationArea = "ai_act" RegulationGeschGehG RegulationArea = "geschgehg" RegulationHinSchG RegulationArea = "hinschg" ) // FrequencyType represents the training frequency type FrequencyType string const ( FrequencyOnboarding FrequencyType = "onboarding" FrequencyAnnual FrequencyType = "annual" FrequencyEventTrigger FrequencyType = "event_trigger" FrequencyMicro FrequencyType = "micro" ) // AssignmentStatus represents the status of a training assignment type AssignmentStatus string const ( AssignmentStatusPending AssignmentStatus = "pending" AssignmentStatusInProgress AssignmentStatus = "in_progress" AssignmentStatusCompleted AssignmentStatus = "completed" AssignmentStatusOverdue AssignmentStatus = "overdue" AssignmentStatusExpired AssignmentStatus = "expired" ) // TriggerType represents how a training was assigned type TriggerType string const ( TriggerOnboarding TriggerType = "onboarding" TriggerAnnual TriggerType = "annual" TriggerEvent TriggerType = "event" TriggerManual TriggerType = "manual" ) // ContentFormat represents the format of module content type ContentFormat string const ( ContentFormatMarkdown ContentFormat = "markdown" ContentFormatHTML ContentFormat = "html" ) // Difficulty represents the difficulty level of a quiz question type Difficulty string const ( DifficultyEasy Difficulty = "easy" DifficultyMedium Difficulty = "medium" DifficultyHard Difficulty = "hard" ) // AuditAction represents an action in the audit trail type AuditAction string const ( AuditActionAssigned AuditAction = "assigned" AuditActionStarted AuditAction = "started" AuditActionCompleted AuditAction = "completed" AuditActionQuizSubmitted AuditAction = "quiz_submitted" AuditActionEscalated AuditAction = "escalated" AuditActionCertificateIssued AuditAction = "certificate_issued" AuditActionContentGenerated AuditAction = "content_generated" ) // AuditEntityType represents the type of entity in audit log type AuditEntityType string const ( AuditEntityAssignment AuditEntityType = "assignment" AuditEntityModule AuditEntityType = "module" AuditEntityQuiz AuditEntityType = "quiz" AuditEntityCertificate AuditEntityType = "certificate" ) // ============================================================================ // Role Constants // ============================================================================ const ( RoleR1 = "R1" // Geschaeftsfuehrung RoleR2 = "R2" // IT-Leitung RoleR3 = "R3" // DSB RoleR4 = "R4" // ISB RoleR5 = "R5" // HR RoleR6 = "R6" // Einkauf RoleR7 = "R7" // Fachabteilung RoleR8 = "R8" // IT-Admin RoleR9 = "R9" // Alle Mitarbeiter RoleR10 = "R10" // Behoerden / Oeffentlicher Dienst ) // RoleLabels maps role codes to human-readable labels var RoleLabels = map[string]string{ RoleR1: "Geschaeftsfuehrung", RoleR2: "IT-Leitung", RoleR3: "Datenschutzbeauftragter", RoleR4: "Informationssicherheitsbeauftragter", RoleR5: "HR / Personal", RoleR6: "Einkauf / Beschaffung", RoleR7: "Fachabteilung", RoleR8: "IT-Administration", RoleR9: "Alle Mitarbeiter", RoleR10: "Behoerden / Oeffentlicher Dienst", } // NIS2RoleMapping maps internal roles to NIS2 levels var NIS2RoleMapping = map[string]string{ RoleR1: "N1", // Geschaeftsfuehrung RoleR2: "N2", // IT-Leitung RoleR3: "N3", // DSB RoleR4: "N3", // ISB RoleR5: "N4", // HR RoleR6: "N4", // Einkauf RoleR7: "N5", // Fachabteilung RoleR8: "N2", // IT-Admin RoleR9: "N5", // Alle Mitarbeiter RoleR10: "N4", // Behoerden } // TargetAudienceRoleMapping maps canonical control target_audience values to CTM roles var TargetAudienceRoleMapping = map[string][]string{ "enterprise": {RoleR1, RoleR4, RoleR5, RoleR6, RoleR7, RoleR9}, "authority": {RoleR10}, "provider": {RoleR2, RoleR8}, "all": {RoleR1, RoleR2, RoleR3, RoleR4, RoleR5, RoleR6, RoleR7, RoleR8, RoleR9, RoleR10}, } // CategoryRoleMapping provides additional role hints based on control category var CategoryRoleMapping = map[string][]string{ "encryption": {RoleR2, RoleR8}, "authentication": {RoleR2, RoleR8, RoleR9}, "network": {RoleR2, RoleR8}, "data_protection": {RoleR3, RoleR5, RoleR9}, "logging": {RoleR2, RoleR4, RoleR8}, "incident": {RoleR1, RoleR4}, "continuity": {RoleR1, RoleR2, RoleR4}, "compliance": {RoleR1, RoleR3, RoleR4}, "supply_chain": {RoleR6}, "physical": {RoleR7}, "personnel": {RoleR5, RoleR9}, "application": {RoleR8}, "system": {RoleR2, RoleR8}, "risk": {RoleR1, RoleR4}, "governance": {RoleR1, RoleR4}, "hardware": {RoleR2, RoleR8}, "identity": {RoleR2, RoleR3, RoleR8}, }