/** * Loeschfristen Baseline-Katalog * * 18 vordefinierte Aufbewahrungsfristen-Templates fuer gaengige * Datenobjekte in deutschen Unternehmen. Basierend auf AO, HGB, * UStG, BGB, ArbZG, AGG, BDSG und BSIG. * * Werden genutzt, um neue Loeschfrist-Policies schnell aus * bewaehrten Vorlagen zu erstellen. */ import type { LoeschfristPolicy, RetentionDriverType, DeletionMethodType, StorageLocation, PolicyStatus, ReviewInterval, RetentionUnit, DeletionTriggerLevel, } from './loeschfristen-types' import { createEmptyPolicy } from './loeschfristen-types' // ============================================================================= // BASELINE TEMPLATE INTERFACE // ============================================================================= export interface BaselineTemplate { templateId: string dataObjectName: string description: string affectedGroups: string[] dataCategories: string[] primaryPurpose: string deletionTrigger: DeletionTriggerLevel retentionDriver: RetentionDriverType | null retentionDriverDetail: string retentionDuration: number | null retentionUnit: RetentionUnit | null retentionDescription: string startEvent: string deletionMethod: DeletionMethodType deletionMethodDetail: string responsibleRole: string reviewInterval: ReviewInterval tags: string[] } // ============================================================================= // BASELINE TEMPLATES (18 Vorlagen) // ============================================================================= export const BASELINE_TEMPLATES: BaselineTemplate[] = [ // ==================== 1. Personalakten ==================== { templateId: 'personal-akten', dataObjectName: 'Personalakten', description: 'Vollstaendige Personalakten inkl. Arbeitsvertraege, Zeugnisse, Abmahnungen und sonstige beschaeftigungsrelevante Dokumente.', affectedGroups: ['Mitarbeiter'], dataCategories: ['Stammdaten', 'Vertragsdaten', 'Gehaltsdaten', 'Zeugnisse'], primaryPurpose: 'Dokumentation und Nachweisfuehrung des Beschaeftigungsverhaeltnisses sowie Erfuellung steuerrechtlicher Aufbewahrungspflichten.', deletionTrigger: 'RETENTION_DRIVER', retentionDriver: 'AO_147', retentionDriverDetail: 'Aufbewahrungspflicht gemaess 147 AO fuer steuerlich relevante Unterlagen der Personalakte.', retentionDuration: 10, retentionUnit: 'YEARS', retentionDescription: '10 Jahre nach Ende des Beschaeftigungsverhaeltnisses', startEvent: 'Ende des Beschaeftigungsverhaeltnisses', deletionMethod: 'AUTO_DELETE', deletionMethodDetail: 'Automatische Loeschung aller digitalen Personalakten-Dokumente nach Ablauf der Aufbewahrungsfrist. Papierakten werden datenschutzkonform vernichtet.', responsibleRole: 'HR-Abteilung', reviewInterval: 'ANNUAL', tags: ['hr', 'steuer'], }, // ==================== 2. Buchhaltungsbelege ==================== { templateId: 'buchhaltungsbelege', dataObjectName: 'Buchhaltungsbelege', description: 'Buchungsbelege, Kontoauszuege, Kassenbuecher und sonstige Belege der laufenden Buchhaltung.', affectedGroups: ['Kunden', 'Lieferanten'], dataCategories: ['Finanzdaten', 'Transaktionsdaten', 'Kontodaten'], primaryPurpose: 'Ordnungsgemaesse Buchfuehrung und Erfuellung handelsrechtlicher Aufbewahrungspflichten nach HGB.', deletionTrigger: 'RETENTION_DRIVER', retentionDriver: 'HGB_257', retentionDriverDetail: 'Aufbewahrungspflicht gemaess 257 HGB fuer Handelsbuecher und Buchungsbelege.', retentionDuration: 10, retentionUnit: 'YEARS', retentionDescription: '10 Jahre nach Ende des Geschaeftsjahres', startEvent: 'Ende des Geschaeftsjahres', deletionMethod: 'MANUAL_REVIEW_DELETE', deletionMethodDetail: 'Manuelle Pruefung durch die Buchhaltung vor Loeschung, um sicherzustellen, dass keine laufenden Pruefungen oder Rechtsstreitigkeiten bestehen.', responsibleRole: 'Buchhaltung', reviewInterval: 'ANNUAL', tags: ['finanzen', 'hgb'], }, // ==================== 3. Rechnungen ==================== { templateId: 'rechnungen', dataObjectName: 'Rechnungen', description: 'Eingangs- und Ausgangsrechnungen inkl. Rechnungsanhaenge und rechnungsbegruendende Unterlagen.', affectedGroups: ['Kunden', 'Lieferanten'], dataCategories: ['Rechnungsdaten', 'Umsatzsteuerdaten', 'Adressdaten'], primaryPurpose: 'Dokumentation umsatzsteuerrelevanter Vorgaenge und Erfuellung der Aufbewahrungspflicht nach UStG.', deletionTrigger: 'RETENTION_DRIVER', retentionDriver: 'USTG_14B', retentionDriverDetail: 'Aufbewahrungspflicht gemaess 14b UStG fuer Rechnungen und rechnungsbegruendende Unterlagen.', retentionDuration: 10, retentionUnit: 'YEARS', retentionDescription: '10 Jahre ab Rechnungsdatum', startEvent: 'Rechnungsdatum', deletionMethod: 'AUTO_DELETE', deletionMethodDetail: 'Automatische Loeschung nach Ablauf der 10-Jahres-Frist. Vor Loeschung wird geprueft, ob Rechnungen in laufenden Betriebspruefungen benoetigt werden.', responsibleRole: 'Buchhaltung', reviewInterval: 'ANNUAL', tags: ['finanzen', 'ustg'], }, // ==================== 4. Geschaeftsbriefe ==================== { templateId: 'geschaeftsbriefe', dataObjectName: 'Geschaeftsbriefe', description: 'Empfangene und versandte Handelsbriefe, Geschaeftskorrespondenz und geschaeftsrelevante E-Mails.', affectedGroups: ['Kunden', 'Lieferanten'], dataCategories: ['Korrespondenz', 'Vertragskommunikation', 'Angebote'], primaryPurpose: 'Nachweisfuehrung geschaeftlicher Kommunikation und Erfuellung der handelsrechtlichen Aufbewahrungspflicht fuer Handelsbriefe.', deletionTrigger: 'RETENTION_DRIVER', retentionDriver: 'HGB_257', retentionDriverDetail: 'Aufbewahrungspflicht gemaess 257 HGB fuer empfangene und versandte Handelsbriefe (6 Jahre).', retentionDuration: 6, retentionUnit: 'YEARS', retentionDescription: '6 Jahre ab Eingang oder Versand des Geschaeftsbriefes', startEvent: 'Eingang bzw. Versand des Geschaeftsbriefes', deletionMethod: 'MANUAL_REVIEW_DELETE', deletionMethodDetail: 'Manuelle Pruefung durch die Geschaeftsleitung, da Geschaeftsbriefe ggf. als Beweismittel in Rechtsstreitigkeiten dienen koennen.', responsibleRole: 'Geschaeftsleitung', reviewInterval: 'ANNUAL', tags: ['kommunikation', 'hgb'], }, // ==================== 5. Bewerbungsunterlagen ==================== { templateId: 'bewerbungsunterlagen', dataObjectName: 'Bewerbungsunterlagen', description: 'Eingereichte Bewerbungsunterlagen inkl. Anschreiben, Lebenslauf, Zeugnisse und Korrespondenz mit Bewerbern.', affectedGroups: ['Bewerber'], dataCategories: ['Bewerbungsdaten', 'Qualifikationen', 'Kontaktdaten'], primaryPurpose: 'Durchfuehrung des Bewerbungsverfahrens und Absicherung gegen Entschaedigungsansprueche nach dem AGG.', deletionTrigger: 'RETENTION_DRIVER', retentionDriver: 'AGG_15', retentionDriverDetail: 'Aufbewahrung fuer 6 Monate nach Absage gemaess 15 Abs. 4 AGG (Frist fuer Geltendmachung von Entschaedigungsanspruechen).', retentionDuration: 6, retentionUnit: 'MONTHS', retentionDescription: '6 Monate nach Absage oder Stellenbesetzung', startEvent: 'Absage oder endgueltige Stellenbesetzung', deletionMethod: 'AUTO_DELETE', deletionMethodDetail: 'Automatische Loeschung aller Bewerbungsunterlagen und zugehoeriger Kommunikation nach Ablauf der 6-Monats-Frist.', responsibleRole: 'HR-Abteilung', reviewInterval: 'QUARTERLY', tags: ['hr', 'bewerbung'], }, // ==================== 6. Kundenstammdaten ==================== { templateId: 'kundenstammdaten', dataObjectName: 'Kundenstammdaten', description: 'Stammdaten von Kunden inkl. Kontaktdaten, Anschrift, Kundennummer und Kommunikationspraeferenzen.', affectedGroups: ['Kunden'], dataCategories: ['Stammdaten', 'Kontaktdaten', 'Adressdaten'], primaryPurpose: 'Pflege der Kundenbeziehung, Vertragserfuellung und Absicherung gegen Verjaehrung vertraglicher Ansprueche.', deletionTrigger: 'RETENTION_DRIVER', retentionDriver: 'BGB_195', retentionDriverDetail: 'Aufbewahrung fuer die Dauer der regelmaessigen Verjaehrungsfrist gemaess 195 BGB (3 Jahre).', retentionDuration: 3, retentionUnit: 'YEARS', retentionDescription: '3 Jahre nach letzter geschaeftlicher Interaktion', startEvent: 'Letzte geschaeftliche Interaktion mit dem Kunden', deletionMethod: 'MANUAL_REVIEW_DELETE', deletionMethodDetail: 'Manuelle Pruefung durch den Vertrieb vor Loeschung, um sicherzustellen, dass keine aktiven Geschaeftsbeziehungen oder offenen Forderungen bestehen.', responsibleRole: 'Vertrieb', reviewInterval: 'ANNUAL', tags: ['crm', 'kunden'], }, // ==================== 7. Newsletter-Einwilligungen ==================== { templateId: 'newsletter-einwilligungen', dataObjectName: 'Newsletter-Einwilligungen', description: 'Einwilligungserklaerungen fuer den Newsletter-Versand inkl. Double-Opt-in-Nachweis und Abmeldezeitpunkt.', affectedGroups: ['Abonnenten'], dataCategories: ['Einwilligungsdaten', 'E-Mail-Adresse', 'Opt-in-Nachweis'], primaryPurpose: 'Nachweis der wirksamen Einwilligung zum Newsletter-Versand gemaess Art. 7 DSGVO und Dokumentation des Widerrufs.', deletionTrigger: 'PURPOSE_END', retentionDriver: null, retentionDriverDetail: 'Keine gesetzliche Aufbewahrungspflicht. Daten werden bis zum Widerruf der Einwilligung gespeichert.', retentionDuration: null, retentionUnit: null, retentionDescription: 'Bis zum Widerruf der Einwilligung durch den Abonnenten', startEvent: 'Widerruf der Einwilligung durch den Abonnenten', deletionMethod: 'AUTO_DELETE', deletionMethodDetail: 'Automatische Loeschung der personenbezogenen Daten nach Eingang des Widerrufs. Der Einwilligungsnachweis selbst wird fuer die Dauer der Nachweispflicht aufbewahrt.', responsibleRole: 'Marketing', reviewInterval: 'SEMI_ANNUAL', tags: ['marketing', 'einwilligung'], }, // ==================== 8. Webserver-Logs ==================== { templateId: 'webserver-logs', dataObjectName: 'Webserver-Logs', description: 'Server-Zugriffsprotokolle inkl. IP-Adressen, Zeitstempel, aufgerufene URLs und HTTP-Statuscodes.', affectedGroups: ['Website-Besucher'], dataCategories: ['IP-Adressen', 'Zugriffszeitpunkte', 'User-Agent-Daten'], primaryPurpose: 'Sicherstellung der IT-Sicherheit, Erkennung von Angriffen und Stoerungen sowie Erfuellung der Protokollierungspflicht nach BSIG.', deletionTrigger: 'RETENTION_DRIVER', retentionDriver: 'BSIG', retentionDriverDetail: 'Aufbewahrung gemaess BSI-Gesetz / IT-Sicherheitsgesetz 2.0 fuer die Analyse von Sicherheitsvorfaellen.', retentionDuration: 7, retentionUnit: 'DAYS', retentionDescription: '7 Tage nach Zeitpunkt des Zugriffs', startEvent: 'Zeitpunkt des Server-Zugriffs', deletionMethod: 'AUTO_DELETE', deletionMethodDetail: 'Automatische Rotation und Loeschung der Logdateien nach 7 Tagen durch den Webserver (logrotate).', responsibleRole: 'IT-Abteilung', reviewInterval: 'QUARTERLY', tags: ['it', 'logs'], }, // ==================== 9. Videoueberwachung ==================== { templateId: 'videoueberwachung', dataObjectName: 'Videoueberwachung', description: 'Aufnahmen der Videoueberwachung in Geschaeftsraeumen, Eingangsbereichen und Parkplaetzen.', affectedGroups: ['Besucher', 'Mitarbeiter'], dataCategories: ['Videodaten', 'Bilddaten', 'Zeitstempel'], primaryPurpose: 'Schutz des Eigentums und der Sicherheit von Personen sowie Aufklaerung von Vorfaellen in den ueberwachten Bereichen.', deletionTrigger: 'RETENTION_DRIVER', retentionDriver: 'BDSG_35', retentionDriverDetail: 'Unverzuegliche Loeschung nach Zweckwegfall gemaess 35 BDSG bzw. Art. 17 DSGVO. Maximale Speicherdauer 48 Stunden.', retentionDuration: 2, retentionUnit: 'DAYS', retentionDescription: '48 Stunden (2 Tage) nach Aufnahmezeitpunkt', startEvent: 'Aufnahmezeitpunkt der Videosequenz', deletionMethod: 'AUTO_DELETE', deletionMethodDetail: 'Automatisches Ueberschreiben der Aufnahmen durch das Videomanagementsystem nach Ablauf der 48-Stunden-Frist.', responsibleRole: 'Facility Management', reviewInterval: 'QUARTERLY', tags: ['sicherheit', 'video'], }, // ==================== 10. Gehaltsabrechnungen ==================== { templateId: 'gehaltsabrechnungen', dataObjectName: 'Gehaltsabrechnungen', description: 'Monatliche Gehaltsabrechnungen, Lohnsteuerbescheinigungen und Sozialversicherungsmeldungen.', affectedGroups: ['Mitarbeiter'], dataCategories: ['Gehaltsdaten', 'Steuerdaten', 'Sozialversicherungsdaten'], primaryPurpose: 'Dokumentation der Lohn- und Gehaltszahlungen sowie Erfuellung steuerrechtlicher und sozialversicherungsrechtlicher Aufbewahrungspflichten.', deletionTrigger: 'RETENTION_DRIVER', retentionDriver: 'AO_147', retentionDriverDetail: 'Aufbewahrungspflicht gemaess 147 AO fuer lohnsteuerrelevante Unterlagen und Gehaltsbuchungen.', retentionDuration: 10, retentionUnit: 'YEARS', retentionDescription: '10 Jahre nach Ende des Geschaeftsjahres', startEvent: 'Ende des Geschaeftsjahres der jeweiligen Abrechnung', deletionMethod: 'AUTO_DELETE', deletionMethodDetail: 'Automatische Loeschung der digitalen Gehaltsabrechnungen nach Ablauf der Aufbewahrungsfrist. Papierbelege werden datenschutzkonform vernichtet.', responsibleRole: 'Lohnbuchhaltung', reviewInterval: 'ANNUAL', tags: ['hr', 'steuer'], }, // ==================== 11. Vertraege ==================== { templateId: 'vertraege', dataObjectName: 'Vertraege', description: 'Geschaeftsvertraege, Rahmenvereinbarungen, Dienstleistungsvertraege und zugehoerige Anlagen und Nachtraege.', affectedGroups: ['Vertragspartner'], dataCategories: ['Vertragsdaten', 'Kontaktdaten', 'Konditionen'], primaryPurpose: 'Dokumentation vertraglicher Vereinbarungen und Sicherung von Beweismitteln fuer die Dauer moeglicher Rechtsstreitigkeiten.', deletionTrigger: 'RETENTION_DRIVER', retentionDriver: 'HGB_257', retentionDriverDetail: 'Aufbewahrungspflicht gemaess 257 HGB fuer handelsrechtlich relevante Vertragsunterlagen.', retentionDuration: 10, retentionUnit: 'YEARS', retentionDescription: '10 Jahre nach Ende der Vertragslaufzeit', startEvent: 'Ende der Vertragslaufzeit bzw. Vertragsbeendigung', deletionMethod: 'MANUAL_REVIEW_DELETE', deletionMethodDetail: 'Manuelle Pruefung durch die Rechtsabteilung vor Loeschung, um sicherzustellen, dass keine laufenden oder angedrohten Rechtsstreitigkeiten bestehen.', responsibleRole: 'Rechtsabteilung', reviewInterval: 'ANNUAL', tags: ['recht', 'vertraege'], }, // ==================== 12. Zeiterfassungsdaten ==================== { templateId: 'zeiterfassung', dataObjectName: 'Zeiterfassungsdaten', description: 'Arbeitszeitaufzeichnungen inkl. Beginn, Ende, Pausen und Ueberstunden der Beschaeftigten.', affectedGroups: ['Mitarbeiter'], dataCategories: ['Arbeitszeiten', 'Pausenzeiten', 'Ueberstunden'], primaryPurpose: 'Erfuellung der gesetzlichen Aufzeichnungspflicht fuer Arbeitszeiten und Nachweis der Einhaltung des Arbeitszeitgesetzes.', deletionTrigger: 'RETENTION_DRIVER', retentionDriver: 'ARBZG_16', retentionDriverDetail: 'Aufbewahrungspflicht gemaess 16 Abs. 2 ArbZG fuer Aufzeichnungen ueber die Arbeitszeit.', retentionDuration: 2, retentionUnit: 'YEARS', retentionDescription: '2 Jahre nach Ende des Erfassungszeitraums', startEvent: 'Ende des jeweiligen Erfassungszeitraums', deletionMethod: 'AUTO_DELETE', deletionMethodDetail: 'Automatische Loeschung der Zeiterfassungsdaten nach Ablauf der 2-Jahres-Frist im Zeiterfassungssystem.', responsibleRole: 'HR-Abteilung', reviewInterval: 'ANNUAL', tags: ['hr', 'arbzg'], }, // ==================== 13. Krankmeldungen ==================== { templateId: 'krankmeldungen', dataObjectName: 'Krankmeldungen', description: 'Arbeitsunfaehigkeitsbescheinigungen, Krankmeldungen und zugehoerige Abwesenheitsdokumentationen.', affectedGroups: ['Mitarbeiter'], dataCategories: ['Gesundheitsdaten', 'Abwesenheitszeiten', 'AU-Bescheinigungen'], primaryPurpose: 'Dokumentation von Fehlzeiten, Entgeltfortzahlung im Krankheitsfall und Absicherung gegen Verjaehrung arbeitsrechtlicher Ansprueche.', deletionTrigger: 'RETENTION_DRIVER', retentionDriver: 'BGB_195', retentionDriverDetail: 'Aufbewahrung fuer die Dauer der regelmaessigen Verjaehrungsfrist gemaess 195 BGB zur Absicherung von Erstattungsanspruechen.', retentionDuration: 3, retentionUnit: 'YEARS', retentionDescription: '3 Jahre nach Ende des Beschaeftigungsverhaeltnisses', startEvent: 'Ende des Beschaeftigungsverhaeltnisses', deletionMethod: 'MANUAL_REVIEW_DELETE', deletionMethodDetail: 'Manuelle Pruefung durch die HR-Abteilung vor Loeschung, da Krankmeldungen besondere Kategorien personenbezogener Daten (Gesundheitsdaten) enthalten.', responsibleRole: 'HR-Abteilung', reviewInterval: 'ANNUAL', tags: ['hr', 'gesundheit'], }, // ==================== 14. Steuererklaerungen ==================== { templateId: 'steuererklaerungen', dataObjectName: 'Steuererklaerungen', description: 'Koerperschaftsteuer-, Gewerbesteuer- und Umsatzsteuererklaerungen inkl. Anlagen und Bescheide.', affectedGroups: ['Unternehmen'], dataCategories: ['Steuerdaten', 'Finanzkennzahlen', 'Bescheide'], primaryPurpose: 'Erfuellung steuerrechtlicher Dokumentationspflichten und Nachweisfuehrung gegenueber den Finanzbehoerden.', deletionTrigger: 'RETENTION_DRIVER', retentionDriver: 'AO_147', retentionDriverDetail: 'Aufbewahrungspflicht gemaess 147 AO fuer Steuererklaerungen und zugehoerige Unterlagen.', retentionDuration: 10, retentionUnit: 'YEARS', retentionDescription: '10 Jahre ab dem jeweiligen Steuerjahr', startEvent: 'Ende des betreffenden Steuerjahres', deletionMethod: 'AUTO_DELETE', deletionMethodDetail: 'Automatische Loeschung nach Ablauf der 10-Jahres-Frist, sofern keine laufende Betriebspruefung oder Einspruchsverfahren vorliegen.', responsibleRole: 'Steuerberater/Buchhaltung', reviewInterval: 'ANNUAL', tags: ['finanzen', 'steuer'], }, // ==================== 15. Gesellschafterprotokolle ==================== { templateId: 'protokolle-gesellschafter', dataObjectName: 'Gesellschafterprotokolle', description: 'Protokolle der Gesellschafterversammlungen, Beschluesse, Abstimmungsergebnisse und notarielle Urkunden.', affectedGroups: ['Gesellschafter'], dataCategories: ['Beschlussdaten', 'Abstimmungsergebnisse', 'Protokolle'], primaryPurpose: 'Dokumentation gesellschaftsrechtlicher Beschluesse und Erfuellung handelsrechtlicher Aufbewahrungspflichten.', deletionTrigger: 'RETENTION_DRIVER', retentionDriver: 'HGB_257', retentionDriverDetail: 'Aufbewahrungspflicht gemaess 257 HGB fuer Eroeffnungsbilanzen, Jahresabschluesse und zugehoerige Beschluesse.', retentionDuration: 10, retentionUnit: 'YEARS', retentionDescription: '10 Jahre ab Beschlussdatum', startEvent: 'Datum des jeweiligen Gesellschafterbeschlusses', deletionMethod: 'PHYSICAL_DESTROY', deletionMethodDetail: 'Physische Vernichtung der Papieroriginale durch zertifizierten Aktenvernichtungsdienstleister (DIN 66399, Sicherheitsstufe P-4). Digitale Kopien werden parallel geloescht.', responsibleRole: 'Geschaeftsleitung', reviewInterval: 'ANNUAL', tags: ['recht', 'gesellschaft'], }, // ==================== 16. CRM-Kontakthistorie ==================== { templateId: 'crm-kontakthistorie', dataObjectName: 'CRM-Kontakthistorie', description: 'Kontaktverlauf im CRM-System inkl. Anrufe, E-Mails, Termine, Notizen und Angebotsverlauf.', affectedGroups: ['Kunden', 'Interessenten'], dataCategories: ['Kommunikationsdaten', 'Interaktionshistorie', 'Angebotsdaten'], primaryPurpose: 'Pflege der Kundenbeziehung und Nachverfolgung geschaeftlicher Interaktionen fuer Vertriebs- und Servicezwecke.', deletionTrigger: 'RETENTION_DRIVER', retentionDriver: 'BGB_195', retentionDriverDetail: 'Aufbewahrung fuer die Dauer der regelmaessigen Verjaehrungsfrist gemaess 195 BGB zur Absicherung vertraglicher Ansprueche.', retentionDuration: 3, retentionUnit: 'YEARS', retentionDescription: '3 Jahre nach letztem Kontakt mit dem Kunden oder Interessenten', startEvent: 'Letzter dokumentierter Kontakt im CRM-System', deletionMethod: 'ANONYMIZATION', deletionMethodDetail: 'Anonymisierung der personenbezogenen Daten im CRM-System, sodass statistische Auswertungen weiterhin moeglich sind, aber kein Personenbezug mehr hergestellt werden kann.', responsibleRole: 'Vertrieb', reviewInterval: 'SEMI_ANNUAL', tags: ['crm', 'kunden'], }, // ==================== 17. Backup-Daten ==================== { templateId: 'backup-daten', dataObjectName: 'Backup-Daten', description: 'Vollstaendige und inkrementelle Sicherungskopien aller Systeme, Datenbanken und Dateisysteme.', affectedGroups: ['Alle Betroffenengruppen'], dataCategories: ['Systemsicherungen', 'Datenbankkopien', 'Dateisystemsicherungen'], primaryPurpose: 'Sicherstellung der Datenwiederherstellung im Katastrophenfall und Gewaehrleistung der Geschaeftskontinuitaet.', deletionTrigger: 'RETENTION_DRIVER', retentionDriver: 'BSIG', retentionDriverDetail: 'Aufbewahrung von Backups fuer 90 Tage gemaess BSI-Grundschutz-Empfehlungen zur Sicherstellung der Wiederherstellbarkeit.', retentionDuration: 90, retentionUnit: 'DAYS', retentionDescription: '90 Tage nach Erstellung des Backups', startEvent: 'Erstellungsdatum des jeweiligen Backups', deletionMethod: 'CRYPTO_ERASE', deletionMethodDetail: 'Kryptographische Loeschung durch Vernichtung der Verschluesselungsschluessel, sodass die verschluesselten Backup-Daten nicht mehr entschluesselt werden koennen.', responsibleRole: 'IT-Abteilung', reviewInterval: 'QUARTERLY', tags: ['it', 'backup'], }, // ==================== 18. Cookie-Consent-Nachweise ==================== { templateId: 'cookie-consent-logs', dataObjectName: 'Cookie-Consent-Nachweise', description: 'Nachweise ueber Cookie-Einwilligungen der Website-Besucher inkl. Consent-ID, Zeitstempel, gesetzte Praeferenzen und IP-Adresse.', affectedGroups: ['Website-Besucher'], dataCategories: ['Consent-Daten', 'IP-Adressen', 'Zeitstempel', 'Praeferenzen'], primaryPurpose: 'Nachweisfuehrung der Einwilligung in die Cookie-Nutzung gemaess Art. 7 Abs. 1 DSGVO und ePrivacy-Richtlinie.', deletionTrigger: 'RETENTION_DRIVER', retentionDriver: 'BGB_195', retentionDriverDetail: 'Aufbewahrung der Consent-Nachweise fuer die Dauer der regelmaessigen Verjaehrungsfrist gemaess 195 BGB zur Absicherung gegen Abmahnungen.', retentionDuration: 3, retentionUnit: 'YEARS', retentionDescription: '3 Jahre nach Zeitpunkt der Einwilligung', startEvent: 'Zeitpunkt der Cookie-Einwilligung (Consent-Zeitstempel)', deletionMethod: 'AUTO_DELETE', deletionMethodDetail: 'Automatische Loeschung der Consent-Nachweise nach Ablauf der 3-Jahres-Frist durch das Consent-Management-System.', responsibleRole: 'Datenschutzbeauftragter', reviewInterval: 'ANNUAL', tags: ['datenschutz', 'consent'], }, ] // ============================================================================= // HELPER FUNCTIONS // ============================================================================= /** * Erstellt eine vollstaendige LoeschfristPolicy aus einem BaselineTemplate. * Nutzt createEmptyPolicy() als Basis und ueberlagert die Template-Felder. */ export function templateToPolicy(template: BaselineTemplate): LoeschfristPolicy { const base = createEmptyPolicy() return { ...base, dataObjectName: template.dataObjectName, description: template.description, affectedGroups: [...template.affectedGroups], dataCategories: [...template.dataCategories], primaryPurpose: template.primaryPurpose, deletionTrigger: template.deletionTrigger, retentionDriver: template.retentionDriver, retentionDriverDetail: template.retentionDriverDetail, retentionDuration: template.retentionDuration, retentionUnit: template.retentionUnit, retentionDescription: template.retentionDescription, startEvent: template.startEvent, deletionMethod: template.deletionMethod, deletionMethodDetail: template.deletionMethodDetail, responsibleRole: template.responsibleRole, reviewInterval: template.reviewInterval, tags: [...template.tags], } } /** * Gibt alle Templates zurueck, die einen bestimmten Tag enthalten. */ export function getTemplatesByTag(tag: string): BaselineTemplate[] { return BASELINE_TEMPLATES.filter(t => t.tags.includes(tag)) } /** * Findet ein Template anhand seiner templateId. */ export function getTemplateById(templateId: string): BaselineTemplate | undefined { return BASELINE_TEMPLATES.find(t => t.templateId === templateId) } /** * Gibt alle im Katalog verwendeten Tags als sortierte Liste zurueck. */ export function getAllTemplateTags(): string[] { const tags = new Set() BASELINE_TEMPLATES.forEach(t => t.tags.forEach(tag => tags.add(tag))) return Array.from(tags).sort() }