refactor(admin): split lib document generators and data catalogs into domain barrels
obligations-document, tom-document, loeschfristen-document, compliance-scope-triggers, sdk-flow/flow-data, processing-activities, loeschfristen-baseline-catalog, catalog-registry, dsfa mitigation-library + risk-catalog, vvt-baseline-catalog, vendor contract-review checklists + findings, demo-data, tom-compliance. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
191
admin-compliance/lib/sdk/vvt-baseline-catalog/hr-finance.ts
Normal file
191
admin-compliance/lib/sdk/vvt-baseline-catalog/hr-finance.ts
Normal file
@@ -0,0 +1,191 @@
|
||||
/**
|
||||
* VVT Baseline-Katalog — HR & Finanzen
|
||||
*/
|
||||
|
||||
import type { BaselineTemplate } from './types'
|
||||
|
||||
export const HR_VVT_TEMPLATES: BaselineTemplate[] = [
|
||||
{
|
||||
templateId: 'hr-mitarbeiterverwaltung',
|
||||
businessFunction: 'hr',
|
||||
name: 'Mitarbeiterverwaltung',
|
||||
description: 'Verwaltung von Stammdaten, Vertraegen und Personalakten der Beschaeftigten',
|
||||
purposes: ['Durchfuehrung des Beschaeftigungsverhaeltnisses', 'Personalverwaltung und -planung'],
|
||||
legalBases: [
|
||||
{ type: 'CONTRACT', description: 'Arbeitsvertrag', reference: 'Art. 6 Abs. 1 lit. b DSGVO' },
|
||||
{ type: 'LEGAL_OBLIGATION', description: 'Arbeitsrechtliche Pflichten', reference: '§ 26 BDSG' },
|
||||
],
|
||||
dataSubjectCategories: ['EMPLOYEES'],
|
||||
personalDataCategories: ['NAME', 'CONTACT', 'ADDRESS', 'DOB', 'SOCIAL_SECURITY', 'TAX_ID', 'BANK_ACCOUNT', 'EMPLOYMENT_DATA'],
|
||||
recipientCategories: [
|
||||
{ type: 'INTERNAL', name: 'Personalabteilung' },
|
||||
{ type: 'AUTHORITY', name: 'Finanzamt' },
|
||||
{ type: 'AUTHORITY', name: 'Sozialversicherungstraeger' },
|
||||
],
|
||||
retentionPeriod: { duration: 10, durationUnit: 'YEARS', description: '10 Jahre nach Ende des Beschaeftigungsverhaeltnisses', legalBasis: 'HGB § 257, AO § 147', deletionProcedure: 'Sichere Loeschung nach Ablauf' },
|
||||
tomDescription: 'Zugriffskontrolle auf Personalakten, Verschluesselung, Protokollierung',
|
||||
structuredToms: {
|
||||
accessControl: ['RBAC', 'Need-to-know-Prinzip', 'Personalakten nur fuer HR'],
|
||||
confidentiality: ['Verschluesselung personenbezogener Daten', 'Vertraulichkeitsvereinbarungen'],
|
||||
integrity: ['Aenderungsprotokollierung', 'Vier-Augen-Prinzip bei Gehaltsaenderungen'],
|
||||
availability: ['Regelmaessige Backups', 'Redundante Speicherung'],
|
||||
separation: ['Trennung Personal-/Gehaltsdaten'],
|
||||
},
|
||||
typicalSystems: ['HR-Software', 'Gehaltsabrechnung', 'Dokumentenmanagement'],
|
||||
protectionLevel: 'HIGH',
|
||||
dpiaRequired: false,
|
||||
tags: ['hr', 'mitarbeiter', 'personal'],
|
||||
},
|
||||
{
|
||||
templateId: 'hr-gehaltsabrechnung',
|
||||
businessFunction: 'hr',
|
||||
name: 'Gehaltsabrechnung',
|
||||
description: 'Berechnung und Auszahlung von Gehaeltern, Sozialabgaben und Steuern',
|
||||
purposes: ['Lohn- und Gehaltsabrechnung', 'Erfuellung steuer- und sozialversicherungsrechtlicher Pflichten'],
|
||||
legalBases: [
|
||||
{ type: 'CONTRACT', description: 'Arbeitsvertrag', reference: 'Art. 6 Abs. 1 lit. b DSGVO' },
|
||||
{ type: 'LEGAL_OBLIGATION', description: 'Steuer-/Sozialversicherungsrecht', reference: 'Art. 6 Abs. 1 lit. c DSGVO' },
|
||||
],
|
||||
dataSubjectCategories: ['EMPLOYEES'],
|
||||
personalDataCategories: ['NAME', 'ADDRESS', 'SOCIAL_SECURITY', 'TAX_ID', 'BANK_ACCOUNT', 'SALARY_DATA'],
|
||||
recipientCategories: [
|
||||
{ type: 'PROCESSOR', name: 'Lohnbuero / Steuerberater' },
|
||||
{ type: 'AUTHORITY', name: 'Finanzamt' },
|
||||
{ type: 'AUTHORITY', name: 'Krankenkassen' },
|
||||
],
|
||||
retentionPeriod: { duration: 10, durationUnit: 'YEARS', description: '10 Jahre (steuerrechtlich)', legalBasis: 'AO § 147 Abs. 1 Nr. 1', deletionProcedure: 'Automatische Loeschung nach Fristablauf' },
|
||||
tomDescription: 'Strenge Zugriffskontrolle, Verschluesselung, Trennung von Stamm- und Gehaltsdaten',
|
||||
structuredToms: {
|
||||
accessControl: ['Nur Lohnbuchhaltung/Steuerberater', 'MFA'],
|
||||
confidentiality: ['Verschluesselung at-rest und in-transit', 'Vertraulichkeitsklausel'],
|
||||
integrity: ['Revisionssichere Ablage', 'Pruefprotokoll'],
|
||||
availability: ['Monatliche Backups', 'Jahresabschluss-Archiv'],
|
||||
separation: ['Gehaltsdaten getrennt von allgemeinen Personaldaten'],
|
||||
},
|
||||
typicalSystems: ['DATEV', 'Lohnabrechnungssoftware'],
|
||||
protectionLevel: 'HIGH',
|
||||
dpiaRequired: false,
|
||||
tags: ['hr', 'gehalt', 'lohn', 'steuer'],
|
||||
},
|
||||
{
|
||||
templateId: 'hr-bewerbermanagement',
|
||||
businessFunction: 'hr',
|
||||
name: 'Bewerbermanagement',
|
||||
description: 'Entgegennahme, Verwaltung und Bewertung von Bewerbungen',
|
||||
purposes: ['Bearbeitung eingehender Bewerbungen', 'Bewerberauswahl'],
|
||||
legalBases: [
|
||||
{ type: 'CONTRACT', description: 'Vorvertragliche Massnahmen', reference: 'Art. 6 Abs. 1 lit. b DSGVO' },
|
||||
{ type: 'LEGITIMATE_INTEREST', description: 'Bewerberauswahl', reference: '§ 26 Abs. 1 BDSG' },
|
||||
],
|
||||
dataSubjectCategories: ['APPLICANTS'],
|
||||
personalDataCategories: ['NAME', 'CONTACT', 'ADDRESS', 'EDUCATION_DATA', 'EMPLOYMENT_DATA', 'PHOTO_VIDEO'],
|
||||
recipientCategories: [
|
||||
{ type: 'INTERNAL', name: 'Personalabteilung' },
|
||||
{ type: 'INTERNAL', name: 'Fachabteilung' },
|
||||
],
|
||||
retentionPeriod: { duration: 6, durationUnit: 'MONTHS', description: '6 Monate nach Absage (AGG-Frist)', legalBasis: 'AGG § 15 Abs. 4', deletionProcedure: 'Automatische Loeschung 6 Monate nach Absage' },
|
||||
tomDescription: 'Zugriffsbeschraenkung auf beteiligte Entscheidungstraeger, verschluesselte Uebertragung',
|
||||
structuredToms: {
|
||||
accessControl: ['Nur HR + Fachabteilung', 'Zeitlich begrenzter Zugriff'],
|
||||
confidentiality: ['TLS fuer Bewerbungsportale', 'Verschluesselter E-Mail-Empfang'],
|
||||
integrity: ['Unveraenderbare Bewerbungseingaenge'],
|
||||
availability: ['Regelmaessige Backups'],
|
||||
separation: ['Getrennte Bewerberdatenbank'],
|
||||
},
|
||||
typicalSystems: ['Bewerbermanagementsystem', 'E-Mail'],
|
||||
protectionLevel: 'MEDIUM',
|
||||
dpiaRequired: false,
|
||||
tags: ['hr', 'bewerbung', 'recruiting'],
|
||||
},
|
||||
{
|
||||
templateId: 'hr-zeiterfassung',
|
||||
businessFunction: 'hr',
|
||||
name: 'Zeiterfassung',
|
||||
description: 'Erfassung von Arbeitszeiten, Urlaub und Fehlzeiten',
|
||||
purposes: ['Arbeitszeiterfassung gemaess ArbZG', 'Urlaubsverwaltung'],
|
||||
legalBases: [
|
||||
{ type: 'LEGAL_OBLIGATION', description: 'Arbeitszeitgesetz', reference: 'Art. 6 Abs. 1 lit. c DSGVO, ArbZG § 16 Abs. 2' },
|
||||
],
|
||||
dataSubjectCategories: ['EMPLOYEES'],
|
||||
personalDataCategories: ['NAME', 'EMPLOYMENT_DATA'],
|
||||
recipientCategories: [
|
||||
{ type: 'INTERNAL', name: 'Personalabteilung' },
|
||||
{ type: 'INTERNAL', name: 'Vorgesetzte' },
|
||||
],
|
||||
retentionPeriod: { duration: 2, durationUnit: 'YEARS', description: '2 Jahre (ArbZG)', legalBasis: 'ArbZG § 16 Abs. 2', deletionProcedure: 'Automatische Loeschung' },
|
||||
tomDescription: 'Zugriffskontrolle nach Abteilung, Protokollierung von Aenderungen',
|
||||
structuredToms: {
|
||||
accessControl: ['Vorgesetzte sehen nur eigene Abteilung', 'HR sieht alle'],
|
||||
confidentiality: ['Krankmeldungen nur HR'],
|
||||
integrity: ['Aenderungshistorie'],
|
||||
availability: ['Taegliches Backup'],
|
||||
separation: ['Trennung Zeitdaten / Gehaltsdaten'],
|
||||
},
|
||||
typicalSystems: ['Zeiterfassungssystem', 'HR-Software'],
|
||||
protectionLevel: 'MEDIUM',
|
||||
dpiaRequired: false,
|
||||
tags: ['hr', 'zeiterfassung', 'arbeitszeit'],
|
||||
},
|
||||
]
|
||||
|
||||
export const FINANCE_VVT_TEMPLATES: BaselineTemplate[] = [
|
||||
{
|
||||
templateId: 'finance-buchhaltung',
|
||||
businessFunction: 'finance',
|
||||
name: 'Buchhaltung & Rechnungswesen',
|
||||
description: 'Finanzbuchhaltung, Rechnungsstellung und Zahlungsverkehr',
|
||||
purposes: ['Finanzbuchhaltung', 'Rechnungsstellung', 'Erfuellung handels-/steuerrechtlicher Aufbewahrungspflichten'],
|
||||
legalBases: [
|
||||
{ type: 'LEGAL_OBLIGATION', description: 'HGB, AO', reference: 'Art. 6 Abs. 1 lit. c DSGVO' },
|
||||
{ type: 'CONTRACT', description: 'Vertragserfuellung', reference: 'Art. 6 Abs. 1 lit. b DSGVO' },
|
||||
],
|
||||
dataSubjectCategories: ['CUSTOMERS', 'SUPPLIERS', 'BUSINESS_PARTNERS'],
|
||||
personalDataCategories: ['NAME', 'CONTACT', 'ADDRESS', 'BANK_ACCOUNT', 'PAYMENT_DATA', 'CONTRACT_DATA', 'TAX_ID'],
|
||||
recipientCategories: [
|
||||
{ type: 'PROCESSOR', name: 'Steuerberater / Wirtschaftspruefer' },
|
||||
{ type: 'AUTHORITY', name: 'Finanzamt' },
|
||||
],
|
||||
retentionPeriod: { duration: 10, durationUnit: 'YEARS', description: '10 Jahre (HGB) / 6 Jahre (Geschaeftsbriefe)', legalBasis: 'HGB § 257, AO § 147', deletionProcedure: 'Loeschung nach Ablauf der jeweiligen Frist' },
|
||||
tomDescription: 'Zugriffskontrolle nach Vier-Augen-Prinzip, revisionssichere Archivierung',
|
||||
structuredToms: {
|
||||
accessControl: ['Vier-Augen-Prinzip', 'RBAC nach Buchhaltungsrollen'],
|
||||
confidentiality: ['Verschluesselung Finanzdaten'],
|
||||
integrity: ['Revisionssichere Archivierung (GoBD)', 'Aenderungsprotokoll'],
|
||||
availability: ['Redundante Speicherung', 'Jaehrliche Backups'],
|
||||
separation: ['Trennung Debitoren/Kreditoren'],
|
||||
},
|
||||
typicalSystems: ['DATEV', 'ERP-System', 'Buchhaltungssoftware'],
|
||||
protectionLevel: 'MEDIUM',
|
||||
dpiaRequired: false,
|
||||
tags: ['finance', 'buchhaltung', 'rechnungswesen'],
|
||||
},
|
||||
{
|
||||
templateId: 'finance-zahlungsverkehr',
|
||||
businessFunction: 'finance',
|
||||
name: 'Zahlungsverkehr',
|
||||
description: 'Abwicklung von Zahlungen, SEPA-Lastschriften und Ueberweisungen',
|
||||
purposes: ['Zahlungsabwicklung', 'Mahnwesen'],
|
||||
legalBases: [
|
||||
{ type: 'CONTRACT', description: 'Vertragserfuellung', reference: 'Art. 6 Abs. 1 lit. b DSGVO' },
|
||||
],
|
||||
dataSubjectCategories: ['CUSTOMERS', 'SUPPLIERS'],
|
||||
personalDataCategories: ['NAME', 'BANK_ACCOUNT', 'PAYMENT_DATA'],
|
||||
recipientCategories: [
|
||||
{ type: 'PROCESSOR', name: 'Zahlungsdienstleister' },
|
||||
{ type: 'PROCESSOR', name: 'Kreditinstitut' },
|
||||
],
|
||||
retentionPeriod: { duration: 10, durationUnit: 'YEARS', description: '10 Jahre', legalBasis: 'HGB § 257', deletionProcedure: 'Automatische Loeschung' },
|
||||
tomDescription: 'PCI-DSS-konforme Verarbeitung, Verschluesselung, Zugriffsbeschraenkung',
|
||||
structuredToms: {
|
||||
accessControl: ['Streng limitierter Zugriff', 'MFA'],
|
||||
confidentiality: ['TLS 1.3', 'Tokenisierung von Zahlungsdaten'],
|
||||
integrity: ['Transaktionsprotokoll'],
|
||||
availability: ['Hochverfuegbarer Zahlungsservice'],
|
||||
separation: ['Zahlungsdaten getrennt von CRM'],
|
||||
},
|
||||
typicalSystems: ['Banking-Software', 'Payment Gateway'],
|
||||
protectionLevel: 'HIGH',
|
||||
dpiaRequired: false,
|
||||
tags: ['finance', 'zahlung', 'payment'],
|
||||
},
|
||||
]
|
||||
30
admin-compliance/lib/sdk/vvt-baseline-catalog/types.ts
Normal file
30
admin-compliance/lib/sdk/vvt-baseline-catalog/types.ts
Normal file
@@ -0,0 +1,30 @@
|
||||
/**
|
||||
* VVT Baseline-Katalog — Types
|
||||
*/
|
||||
|
||||
import type { BusinessFunction } from '../vvt-types'
|
||||
|
||||
export interface BaselineTemplate {
|
||||
templateId: string
|
||||
businessFunction: BusinessFunction
|
||||
name: string
|
||||
description: string
|
||||
purposes: string[]
|
||||
legalBases: { type: string; description?: string; reference?: string }[]
|
||||
dataSubjectCategories: string[]
|
||||
personalDataCategories: string[]
|
||||
recipientCategories: { type: string; name: string; description?: string }[]
|
||||
retentionPeriod: { duration?: number; durationUnit?: string; description: string; legalBasis?: string; deletionProcedure?: string }
|
||||
tomDescription: string
|
||||
structuredToms: {
|
||||
accessControl: string[]
|
||||
confidentiality: string[]
|
||||
integrity: string[]
|
||||
availability: string[]
|
||||
separation: string[]
|
||||
}
|
||||
typicalSystems: string[]
|
||||
protectionLevel: 'LOW' | 'MEDIUM' | 'HIGH'
|
||||
dpiaRequired: boolean
|
||||
tags: string[]
|
||||
}
|
||||
Reference in New Issue
Block a user