From e3fb81fc0d86f309775131290c2b8ddbda2c9dd7 Mon Sep 17 00:00:00 2001 From: Benjamin Admin Date: Tue, 10 Mar 2026 13:11:00 +0100 Subject: [PATCH] feat(vvt): Aufklappbare Abteilungskacheln mit Datenkategorien + Wiki-Infoboxen Step 2 im VVT-Generator: Ja/Nein-Buttons durch expandierbare Kacheln ersetzt. Pro Abteilung werden typische Datenkategorien als Checkboxen angezeigt (isTypical vorausgefuellt), Art. 9 Kategorien orange hervorgehoben mit DSGVO-Warnung. 7 neue Wiki-Artikel fuer Datenkategorien pro Geschaeftsbereich (HR, Finanzen, Vertrieb, Marketing, Support, IT, Produktion). Co-Authored-By: Claude Opus 4.6 --- admin-compliance/app/sdk/vvt/page.tsx | 223 ++++++-- admin-compliance/lib/sdk/vvt-profiling.ts | 97 ++++ .../043_wiki_datenkategorien_abteilungen.sql | 496 ++++++++++++++++++ 3 files changed, 768 insertions(+), 48 deletions(-) create mode 100644 backend-compliance/migrations/043_wiki_datenkategorien_abteilungen.sql diff --git a/admin-compliance/app/sdk/vvt/page.tsx b/admin-compliance/app/sdk/vvt/page.tsx index 6f8a488..c79cb8b 100644 --- a/admin-compliance/app/sdk/vvt/page.tsx +++ b/admin-compliance/app/sdk/vvt/page.tsx @@ -34,6 +34,7 @@ import type { VVTActivity, VVTOrganizationHeader, BusinessFunction } from '@/lib import { PROFILING_STEPS, PROFILING_QUESTIONS, + DEPARTMENT_DATA_CATEGORIES, getQuestionsForStep, getStepProgress, getTotalProgress, @@ -1100,61 +1101,187 @@ function TabGenerator({

{currentStepInfo?.description}

- {questions.map(q => ( -
- - {q.helpText &&

{q.helpText}

} + {questions.map(q => { + const deptConfig = DEPARTMENT_DATA_CATEGORIES[q.id] + const isDeptQuestion = q.type === 'boolean' && q.step === 2 && deptConfig + const isActive = answers[q.id] === true + const categoriesKey = `${q.id}_categories` + const selectedCategories = (answers[categoriesKey] as string[] | undefined) || [] - {q.type === 'boolean' && ( -
- - + // Initialize typical categories when dept is activated + const handleDeptToggle = (value: boolean) => { + const updated = { ...answers, [q.id]: value } + if (value && deptConfig && !answers[categoriesKey]) { + // Prefill typical categories + updated[categoriesKey] = deptConfig.categories + .filter(c => c.isTypical) + .map(c => c.id) + } + setAnswers(updated) + } + + const handleCategoryToggle = (catId: string) => { + const current = (answers[categoriesKey] as string[] | undefined) || [] + const updated = current.includes(catId) + ? current.filter(id => id !== catId) + : [...current, catId] + setAnswers({ ...answers, [categoriesKey]: updated }) + } + + // Expandable department tile (Step 2) + if (isDeptQuestion) { + const hasArt9Selected = deptConfig.categories + .filter(c => c.isArt9) + .some(c => selectedCategories.includes(c.id)) + + return ( +
+ {/* Header row with Ja/Nein */} +
+
+ {deptConfig.icon} +
+ {deptConfig.label} + {q.helpText &&

{q.helpText}

} +
+
+
+ + +
+
+ + {/* Expandable categories panel */} + {isActive && ( +
+

+ Typische Datenkategorien +

+
+ {deptConfig.categories.map(cat => { + const isChecked = selectedCategories.includes(cat.id) + return ( + + ) + })} +
+ + {/* Art. 9 warning */} + {hasArt9Selected && ( +
+

+ Art. 9 DSGVO: Sie verarbeiten besondere Kategorien + personenbezogener Daten. Eine zusaetzliche Rechtsgrundlage nach Art. 9 Abs. 2 DSGVO ist + erforderlich (z.B. § 26 Abs. 3 BDSG fuer Beschaeftigtendaten). +

+
+ )} +
+ )}
- )} + ) + } - {q.type === 'single_choice' && q.options && ( -
- {q.options.map(opt => ( -
- ))} + {q.type === 'number' && ( + setAnswers({ ...answers, [q.id]: parseInt(e.target.value) || 0 })} + className="w-40 px-3 py-2 border border-gray-300 rounded-lg" + placeholder="Anzahl" /> + )} + + {q.type === 'text' && ( + setAnswers({ ...answers, [q.id]: e.target.value })} + className="w-full px-3 py-2 border border-gray-300 rounded-lg" /> + )} +
+ ) + })}
diff --git a/admin-compliance/lib/sdk/vvt-profiling.ts b/admin-compliance/lib/sdk/vvt-profiling.ts index 4eab601..be129b7 100644 --- a/admin-compliance/lib/sdk/vvt-profiling.ts +++ b/admin-compliance/lib/sdk/vvt-profiling.ts @@ -285,6 +285,103 @@ export const PROFILING_QUESTIONS: ProfilingQuestion[] = [ }, ] +// ============================================================================= +// DEPARTMENT DATA CATEGORIES (Aufklappbare Kacheln Step 2) +// ============================================================================= + +export interface DepartmentCategory { + id: string + label: string + info: string + isArt9?: boolean + isTypical?: boolean +} + +export interface DepartmentDataConfig { + label: string + icon: string + categories: DepartmentCategory[] +} + +export const DEPARTMENT_DATA_CATEGORIES: Record = { + dept_hr: { + label: 'Personal (HR)', + icon: '👥', + categories: [ + { id: 'NAME', label: 'Stammdaten', info: 'Vor-/Nachname, Titel, Geschlecht, Geburtsdatum', isTypical: true }, + { id: 'ADDRESS', label: 'Adressdaten', info: 'Wohn-/Melde-/Lieferadresse, Telefon, E-Mail', isTypical: true }, + { id: 'SOCIAL_SECURITY', label: 'Sozialversicherungsnr.', info: 'SV-Nummer fuer Meldungen an DRV, Krankenkasse', isTypical: true }, + { id: 'TAX_ID', label: 'Steuer-ID', info: 'Steueridentifikationsnummer, Steuerklasse, Freibetraege', isTypical: true }, + { id: 'BANK_ACCOUNT', label: 'Bankverbindung', info: 'IBAN, BIC fuer Gehaltsueberweisungen', isTypical: true }, + { id: 'SALARY_DATA', label: 'Gehaltsdaten', info: 'Bruttogehalt, Zulagen, Praemien, VWL, Abzuege', isTypical: true }, + { id: 'EMPLOYMENT_DATA', label: 'Beschaeftigungsdaten', info: 'Vertrag, Eintrittsdatum, Abteilung, Position, Arbeitszeitmodell', isTypical: true }, + { id: 'HEALTH_DATA', label: 'Gesundheitsdaten', info: 'Krankheitstage (AU-Bescheinigungen), BEM-Daten, Schwerbehinderung', isArt9: true }, + { id: 'RELIGIOUS_BELIEFS', label: 'Religionszugehoerigkeit', info: 'Konfession fuer Kirchensteuer-Abfuehrung', isArt9: true }, + { id: 'EDUCATION_DATA', label: 'Qualifikationen', info: 'Abschluesse, Zertifikate, Weiterbildungen, Schulungsnachweise' }, + { id: 'PHOTO_VIDEO', label: 'Mitarbeiterfotos', info: 'Passbilder fuer Ausweise, Intranet-Profilbilder' }, + ] + }, + dept_recruiting: { + label: 'Recruiting / Bewerbermanagement', + icon: '📋', + categories: [ + { id: 'NAME', label: 'Bewerberstammdaten', info: 'Name, Anschrift, Kontaktdaten der Bewerber', isTypical: true }, + { id: 'APPLICATION_DATA', label: 'Bewerbungsunterlagen', info: 'Lebenslauf, Anschreiben, Zeugnisse, Zertifikate', isTypical: true }, + { id: 'EDUCATION_DATA', label: 'Qualifikationen', info: 'Abschluesse, Berufserfahrung, Sprachkenntnisse', isTypical: true }, + { id: 'ASSESSMENT_DATA', label: 'Bewertungsdaten', info: 'Interviewnotizen, Assessment-Ergebnisse, Eignungstests' }, + { id: 'HEALTH_DATA', label: 'Gesundheitsdaten', info: 'Schwerbehinderung (freiwillige Angabe), Eignungsuntersuchung', isArt9: true }, + { id: 'PHOTO_VIDEO', label: 'Bewerbungsfotos', info: 'Bewerbungsfoto (freiwillig), Video-Interview-Aufnahmen' }, + ] + }, + dept_finance: { + label: 'Finanzen & Buchhaltung', + icon: '💰', + categories: [ + { id: 'NAME', label: 'Kunden-/Lieferantenstammdaten', info: 'Firmenname, Ansprechpartner, Kontaktdaten', isTypical: true }, + { id: 'ADDRESS', label: 'Rechnungsadressen', info: 'Rechnungs-/Lieferadressen, USt-IdNr.', isTypical: true }, + { id: 'BANK_ACCOUNT', label: 'Bankverbindungen', info: 'IBAN, BIC, SEPA-Mandate, Zahlungsbedingungen', isTypical: true }, + { id: 'TAX_ID', label: 'Steuer-IDs', info: 'Steuernummer, USt-IdNr., Steueridentifikationsnr.', isTypical: true }, + { id: 'INVOICE_DATA', label: 'Rechnungsdaten', info: 'Rechnungen, Gutschriften, Mahnungen, Zahlungshistorie', isTypical: true }, + { id: 'CONTRACT_DATA', label: 'Vertragsdaten', info: 'Vertragskonditionen, Laufzeiten, Kuendigungsfristen' }, + ] + }, + dept_sales: { + label: 'Vertrieb & CRM', + icon: '🤝', + categories: [ + { id: 'NAME', label: 'Kontaktdaten', info: 'Name, E-Mail, Telefon, Position der Ansprechpartner', isTypical: true }, + { id: 'ADDRESS', label: 'Firmenadresse', info: 'Firmenanschrift, Standorte', isTypical: true }, + { id: 'CRM_DATA', label: 'CRM-Daten', info: 'Lead-Status, Opportunities, Sales-Pipeline, Umsatzhistorie', isTypical: true }, + { id: 'COMMUNICATION_DATA', label: 'Kommunikation', info: 'E-Mail-Verlauf, Gespraechsnotizen, Meeting-Protokolle', isTypical: true }, + { id: 'CONTRACT_DATA', label: 'Vertragsdaten', info: 'Angebote, Bestellungen, Rahmenvertraege' }, + { id: 'PREFERENCE_DATA', label: 'Praeferenzen', info: 'Produktinteressen, Kaufhistorie, Kundensegmentierung' }, + ] + }, + dept_marketing: { + label: 'Marketing', + icon: '📢', + categories: [ + { id: 'EMAIL', label: 'E-Mail-Adressen', info: 'Newsletter-Abonnenten, Kampagnen-Empfaenger', isTypical: true }, + { id: 'TRACKING_DATA', label: 'Tracking-/Analytics-Daten', info: 'IP-Adressen, Cookies, Seitenaufrufe, Klickpfade', isTypical: true }, + { id: 'CONSENT_DATA', label: 'Einwilligungsdaten', info: 'Cookie-Consent, Newsletter-Opt-in, Widerrufe', isTypical: true }, + { id: 'SOCIAL_MEDIA_DATA', label: 'Social-Media-Daten', info: 'Follower-Interaktionen, Kommentare, Reichweitendaten' }, + { id: 'PREFERENCE_DATA', label: 'Interessenprofil', info: 'Produktinteressen, Segmentierung, A/B-Test-Zuordnungen' }, + { id: 'PHOTO_VIDEO', label: 'Bild-/Videomaterial', info: 'Kundenfotos (Testimonials), Event-Aufnahmen, UGC' }, + ] + }, + dept_support: { + label: 'Kundenservice / Support', + icon: '🎧', + categories: [ + { id: 'NAME', label: 'Kundenstammdaten', info: 'Name, E-Mail, Telefon, Kundennummer', isTypical: true }, + { id: 'TICKET_DATA', label: 'Ticket-/Anfragedaten', info: 'Ticketnummer, Betreff, Beschreibung, Status, Prioritaet', isTypical: true }, + { id: 'COMMUNICATION_DATA', label: 'Kommunikationsverlauf', info: 'E-Mails, Chat-Protokolle, Anrufnotizen', isTypical: true }, + { id: 'CONTRACT_DATA', label: 'Vertragsdaten', info: 'Produktversion, Lizenz, SLA-Status', isTypical: true }, + { id: 'TECHNICAL_DATA', label: 'Technische Daten', info: 'Systeminfos, Logdateien, Screenshots bei Fehlermeldungen' }, + ] + }, +} + // ============================================================================= // GENERATOR LOGIC // ============================================================================= diff --git a/backend-compliance/migrations/043_wiki_datenkategorien_abteilungen.sql b/backend-compliance/migrations/043_wiki_datenkategorien_abteilungen.sql new file mode 100644 index 0000000..f649133 --- /dev/null +++ b/backend-compliance/migrations/043_wiki_datenkategorien_abteilungen.sql @@ -0,0 +1,496 @@ +-- Migration 043: Wiki-Artikel fuer Datenkategorien pro Abteilung +-- Liefert Hintergrundwissen zu den typischen personenbezogenen Daten +-- je Geschaeftsbereich (Step 2 des VVT-Generators). + +-- ============================================================================= +-- 1. Artikel: Datenkategorien in der Personalabteilung +-- ============================================================================= + +INSERT INTO compliance_wiki_articles (id, category_id, title, summary, content, legal_refs, tags, relevance, version) +VALUES ( + 'dk-personal-hr', + 'datenkategorien', + 'Datenkategorien in der Personalabteilung', + 'Ueberblick ueber personenbezogene Daten, die typischerweise in HR verarbeitet werden — von Stammdaten bis Art. 9 Kategorien.', + '## Ueberblick + +Die Personalabteilung verarbeitet die **umfangreichsten** personenbezogenen Daten im Unternehmen. Die Rechtsgrundlage ist primaer **§ 26 BDSG** (Beschaeftigtendatenschutz) i.V.m. Art. 88 DSGVO. + +## Typische Datenkategorien + +### Stamm- und Kontaktdaten +- **Personalien:** Vor-/Nachname, Geburtsdatum, Geschlecht, Staatsangehoerigkeit +- **Kontaktdaten:** Wohnadresse, Telefon, E-Mail (privat + dienstlich) +- **Identifikation:** Personalnummer, Ausweis-/Passdaten (bei Auslandseinsatz) + +### Vertragsdaten +- Arbeitsvertrag, Eintrittsdatum, Befristung, Kuendigungsfristen +- Abteilung, Position, Vorgesetzter, Kostenstelle +- Arbeitszeitmodell (Vollzeit/Teilzeit/Gleitzeit) + +### Vergütungsdaten +- **Gehaltsdaten:** Bruttogehalt, Zulagen, Praemien, VWL +- **Bankverbindung:** IBAN, BIC fuer Lohn-/Gehaltszahlung +- **Steuer-ID:** IdNr., Steuerklasse, Freibetraege, Kirchensteuer +- **Sozialversicherung:** SV-Nummer, Krankenkasse, Beitragssaetze + +### Besondere Kategorien (Art. 9 DSGVO) +- **Gesundheitsdaten:** AU-Bescheinigungen (auch ohne Diagnose!), BEM-Daten, Schwerbehindertenausweis, arbeitsmedizinische Vorsorge +- **Religionszugehoerigkeit:** Konfession fuer Kirchensteuer-Abfuehrung (Pflichtfeld Lohnsteuer) +- **Gewerkschaftszugehoerigkeit:** Nur wenn Gewerkschaftsbeitrag ueber Gehalt abgefuehrt wird + +### Weitere Kategorien +- **Qualifikationen:** Abschluesse, Zertifikate, Weiterbildungsnachweise +- **Zeiterfassung:** Arbeitsstunden, Ueberstunden, Urlaubstage, Fehlzeiten +- **Fotos:** Mitarbeiterausweis, Intranet-Profilbild (Einwilligung!) + +## Rechtsgrundlagen + +| Verarbeitung | Rechtsgrundlage | +|--------------|-----------------| +| Personalverwaltung | § 26 Abs. 1 BDSG | +| Gehaltsabrechnung | Art. 6 Abs. 1 lit. b + c DSGVO | +| Gesundheitsdaten | § 26 Abs. 3 BDSG + Art. 9 Abs. 2 lit. b DSGVO | +| Kirchensteuer | Art. 6 Abs. 1 lit. c DSGVO (gesetzl. Pflicht) | +| Mitarbeiterfotos | Art. 6 Abs. 1 lit. a DSGVO (Einwilligung) | + +## Typische Systeme +SAP HCM/SuccessFactors, DATEV LODAS/Lohn&Gehalt, Personio, HRworks, ATOSS, Sage HR + +## Aufbewahrungsfristen +- **Lohnunterlagen:** 6 Jahre (§ 257 HGB) +- **Steuerunterlagen:** 10 Jahre (§ 147 AO) +- **Bewerbungsunterlagen:** 6 Monate nach Ablehnung (AGG-Frist) +- **AU-Bescheinigungen:** Bis 3 Jahre nach Ende des Kalenderjahrests +- **BEM-Akten:** 3 Jahre nach Abschluss des BEM', + ARRAY['§ 26 BDSG', 'Art. 88 DSGVO', 'Art. 9 Abs. 2 lit. b DSGVO', 'Art. 6 Abs. 1 DSGVO', '§ 257 HGB', '§ 147 AO'], + ARRAY['personal', 'hr', 'stammdaten', 'gehalt', 'gesundheit', 'art9', 'beschaeftigtendaten'], + 'critical', + 1 +) ON CONFLICT (id) DO UPDATE SET + content = EXCLUDED.content, + summary = EXCLUDED.summary, + legal_refs = EXCLUDED.legal_refs, + tags = EXCLUDED.tags, + version = compliance_wiki_articles.version + 1, + updated_at = NOW(); + +-- ============================================================================= +-- 2. Artikel: Datenkategorien in Finanzen & Buchhaltung +-- ============================================================================= + +INSERT INTO compliance_wiki_articles (id, category_id, title, summary, content, legal_refs, tags, relevance, version) +VALUES ( + 'dk-finanzen', + 'datenkategorien', + 'Datenkategorien in Finanzen & Buchhaltung', + 'Personenbezogene Daten in der Buchhaltung: Kunden-/Lieferantenstammdaten, Bankverbindungen, Rechnungsdaten und steuerliche Pflichten.', + '## Ueberblick + +Die Finanz- und Buchhaltungsabteilung verarbeitet personenbezogene Daten von **Kunden, Lieferanten und Mitarbeitern** im Rahmen gesetzlicher Buchfuehrungs- und Aufbewahrungspflichten. + +## Typische Datenkategorien + +### Stammdaten (Debitoren/Kreditoren) +- Firmenname, Rechtsform, Ansprechpartner +- Rechnungs- und Lieferadressen +- USt-IdNr., Steuernummer +- Kundennummer, Lieferantennummer + +### Zahlungsverkehr +- **Bankverbindungen:** IBAN, BIC, Kontoinhaber +- **SEPA-Mandate:** Mandatsreferenz, Unterschriftsdatum +- **Zahlungsbedingungen:** Skonto, Zahlungsziel, Kreditlimit + +### Rechnungsdaten +- Eingangs-/Ausgangsrechnungen mit Personenbezug +- Gutschriften, Mahnungen, Zahlungshistorie +- Reisekostenabrechnungen (Mitarbeiter) + +### Steuerrelevante Daten +- Steuer-IDs (Arbeitnehmer, Freelancer) +- Lohnsteuerabzugsmerkmale (ELStAM) +- Umsatzsteuer-Voranmeldungen + +## Rechtsgrundlagen + +| Verarbeitung | Rechtsgrundlage | +|--------------|-----------------| +| Buchfuehrungspflicht | Art. 6 Abs. 1 lit. c DSGVO + §§ 238, 257 HGB | +| Rechnungsstellung | Art. 6 Abs. 1 lit. b DSGVO (Vertragserfuellung) | +| Steuerliche Pflichten | Art. 6 Abs. 1 lit. c DSGVO + §§ 140-148 AO | +| Zahlungsverkehr | Art. 6 Abs. 1 lit. b DSGVO | + +## Typische Systeme +DATEV, SAP FI, Lexware, Sage, ERPNext, Microsoft Dynamics + +## Aufbewahrungsfristen +- **Buchungsbelege:** 10 Jahre (§ 147 Abs. 1 Nr. 1 AO) +- **Handelsbriefe:** 6 Jahre (§ 257 Abs. 1 Nr. 2 HGB) +- **Rechnungen:** 10 Jahre (§ 14b UStG) +- **SEPA-Mandate:** 14 Monate nach letzter Lastschrift + Aufbewahrungsfrist', + ARRAY['Art. 6 Abs. 1 lit. c DSGVO', '§ 257 HGB', '§ 147 AO', '§ 14b UStG', 'Art. 6 Abs. 1 lit. b DSGVO'], + ARRAY['finanzen', 'buchhaltung', 'bankdaten', 'steuer', 'rechnungen', 'aufbewahrung'], + 'important', + 1 +) ON CONFLICT (id) DO UPDATE SET + content = EXCLUDED.content, + summary = EXCLUDED.summary, + legal_refs = EXCLUDED.legal_refs, + tags = EXCLUDED.tags, + version = compliance_wiki_articles.version + 1, + updated_at = NOW(); + +-- ============================================================================= +-- 3. Artikel: Datenkategorien im Vertrieb & CRM +-- ============================================================================= + +INSERT INTO compliance_wiki_articles (id, category_id, title, summary, content, legal_refs, tags, relevance, version) +VALUES ( + 'dk-vertrieb-crm', + 'datenkategorien', + 'Datenkategorien im Vertrieb & CRM', + 'CRM-Kontaktdaten, Kommunikationshistorie, Vertragsdaten und Praeferenzprofile im Vertrieb.', + '## Ueberblick + +Der Vertrieb verarbeitet personenbezogene Daten von **Interessenten, Leads und Bestandskunden** primaer im CRM-System. Die Rechtsgrundlage ist meist **Art. 6 Abs. 1 lit. b DSGVO** (Vertragsanbahnung/-erfuellung) oder **lit. f** (berechtigtes Interesse). + +## Typische Datenkategorien + +### Kontaktdaten +- Name, E-Mail, Telefon, Position des Ansprechpartners +- Firmenname, Branche, Unternehmensgroesse +- Firmenadresse, Standorte + +### CRM-Daten +- Lead-Status, Sales-Pipeline-Stufe +- Opportunities, Umsatzpotenzial +- Kundenhistorie, Umsatzentwicklung +- Kundensegmentierung, Key-Account-Zuordnung + +### Kommunikationsdaten +- E-Mail-Verlauf (Angebote, Anfragen) +- Gespraechsnotizen, Meeting-Protokolle +- Angebots- und Bestellhistorie + +### Vertragsdaten +- Rahmenvertraege, Einzelbestellungen +- Konditionen, Rabattstaffeln +- Laufzeiten, Kuendigungsfristen + +### Praeferenzdaten +- Produktinteressen, Kaufhistorie +- Cross-/Upselling-Potenziale +- Bevorzugte Kommunikationskanaele + +## Rechtsgrundlagen + +| Verarbeitung | Rechtsgrundlage | +|--------------|-----------------| +| Vertragsanbahnung | Art. 6 Abs. 1 lit. b DSGVO | +| Bestandskundenpflege | Art. 6 Abs. 1 lit. f DSGVO | +| Kaltakquise (B2B) | Art. 6 Abs. 1 lit. f DSGVO + § 7 UWG | +| Kaltakquise (B2C) | Art. 6 Abs. 1 lit. a DSGVO (Einwilligung!) | + +## Typische Systeme +Salesforce, HubSpot, Pipedrive, Zoho CRM, Microsoft Dynamics 365, SAP CRM + +## Aufbewahrungsfristen +- **Vertraege:** 3 Jahre nach Vertragsende (Verjaehrung) + steuerlich 10 Jahre +- **Angebote (abgelehnt):** 6 Monate +- **CRM-Kontaktdaten:** Bis Widerspruch/Loeschung oder 3 Jahre nach letztem Kontakt', + ARRAY['Art. 6 Abs. 1 lit. b DSGVO', 'Art. 6 Abs. 1 lit. f DSGVO', '§ 7 UWG', 'Art. 21 DSGVO'], + ARRAY['vertrieb', 'crm', 'kontaktdaten', 'vertraege', 'kaltakquise', 'leads'], + 'important', + 1 +) ON CONFLICT (id) DO UPDATE SET + content = EXCLUDED.content, + summary = EXCLUDED.summary, + legal_refs = EXCLUDED.legal_refs, + tags = EXCLUDED.tags, + version = compliance_wiki_articles.version + 1, + updated_at = NOW(); + +-- ============================================================================= +-- 4. Artikel: Datenkategorien im Marketing +-- ============================================================================= + +INSERT INTO compliance_wiki_articles (id, category_id, title, summary, content, legal_refs, tags, relevance, version) +VALUES ( + 'dk-marketing', + 'datenkategorien', + 'Datenkategorien im Marketing', + 'Tracking-Daten, Newsletter-Adressen, Cookie-Consent und Social-Media-Daten im Marketing-Kontext.', + '## Ueberblick + +Marketing verarbeitet haeufig Daten auf Basis von **Einwilligung** (Art. 6 Abs. 1 lit. a DSGVO) — insbesondere bei Tracking, Newsletter und Profiling. Die **ePrivacy-Richtlinie** (umgesetzt durch § 25 TDDDG) ist zusaetzlich zu beachten. + +## Typische Datenkategorien + +### E-Mail-Marketing +- E-Mail-Adressen, Vor-/Nachname +- Opt-in-Zeitpunkt, Double-Opt-in-Nachweis +- Oeffnungsraten, Klickraten (Tracking-Pixel) +- Abmeldehistorie, Bounce-Status + +### Website-Tracking & Analytics +- **IP-Adressen** (personenbezogen! — BGH VI ZR 135/13) +- Cookies, Session-IDs, Fingerprinting-Daten +- Seitenaufrufe, Verweildauer, Klickpfade +- Referrer-URLs, Geraete-/Browsertyp +- Conversion-Tracking, Zielvorhaben + +### Consent-Daten +- Cookie-Consent-Status je Kategorie +- Zeitpunkt der Einwilligung/des Widerrufs +- Consent-Version, Banner-Konfiguration + +### Social-Media-Daten +- Follower-Interaktionen, Kommentare, Shares +- Reichweitenanalyse (aggregiert — i.d.R. kein Personenbezug) +- Custom Audiences (Achtung: Datenexport an Meta/Google!) + +### Bild-/Videomaterial +- Kundenfotos fuer Testimonials (Einwilligung!) +- Event-Aufnahmen +- User Generated Content (UGC) + +## Rechtsgrundlagen + +| Verarbeitung | Rechtsgrundlage | +|--------------|-----------------| +| Newsletter-Versand | Art. 6 Abs. 1 lit. a DSGVO + § 7 Abs. 2 Nr. 3 UWG | +| Website-Analytics | § 25 TDDDG (Einwilligung fuer nicht-essentielle Cookies) | +| Bestandskunden-Werbung | Art. 6 Abs. 1 lit. f DSGVO + § 7 Abs. 3 UWG | +| Custom Audiences | Art. 6 Abs. 1 lit. a DSGVO (Einwilligung) | +| Testimonials mit Foto | Art. 6 Abs. 1 lit. a DSGVO + KUG | + +## Typische Systeme +Google Analytics/Tag Manager, Matomo, Mailchimp, CleverReach, HubSpot Marketing, Meta Business Suite, Cookiebot/Usercentrics + +## Aufbewahrungsfristen +- **Newsletter-Abmeldungen:** Sperrliste dauerhaft (Nachweis) +- **Double-Opt-in-Nachweis:** Dauer der Einwilligung + 3 Jahre +- **Cookie-Consent-Logs:** Mindestens 3 Jahre (Nachweispflicht) +- **Analytics-Rohdaten:** Max. 14-26 Monate (GA4-Standard)', + ARRAY['Art. 6 Abs. 1 lit. a DSGVO', '§ 25 TDDDG', '§ 7 UWG', 'Art. 21 DSGVO', 'Art. 7 Abs. 1 DSGVO'], + ARRAY['marketing', 'newsletter', 'tracking', 'cookies', 'analytics', 'consent', 'social-media'], + 'important', + 1 +) ON CONFLICT (id) DO UPDATE SET + content = EXCLUDED.content, + summary = EXCLUDED.summary, + legal_refs = EXCLUDED.legal_refs, + tags = EXCLUDED.tags, + version = compliance_wiki_articles.version + 1, + updated_at = NOW(); + +-- ============================================================================= +-- 5. Artikel: Datenkategorien im Kundenservice +-- ============================================================================= + +INSERT INTO compliance_wiki_articles (id, category_id, title, summary, content, legal_refs, tags, relevance, version) +VALUES ( + 'dk-kundenservice', + 'datenkategorien', + 'Datenkategorien im Kundenservice', + 'Ticket-Daten, Kommunikationsverlaeufe, Kundenstammdaten und technische Informationen im Support.', + '## Ueberblick + +Der Kundenservice verarbeitet personenbezogene Daten im Rahmen der **Vertragserfuellung** (Art. 6 Abs. 1 lit. b DSGVO) und zur Bearbeitung von Anfragen. Besondere Sorgfalt bei **Aufzeichnungen von Telefonaten** (Einwilligung erforderlich!). + +## Typische Datenkategorien + +### Kundenstammdaten +- Name, E-Mail, Telefon, Kundennummer +- Vertrag, Produkt, Lizenz-/Abonnement-Status +- Kontakthistorie, bisherige Anfragen + +### Ticket-/Anfragedaten +- Ticketnummer, Betreff, Kategorie +- Fehlerbeschreibung, Reproduktionsschritte +- Status, Prioritaet, Bearbeitungshistorie +- Zufriedenheitsbewertung (NPS/CSAT) + +### Kommunikationsverlauf +- E-Mail-Korrespondenz +- Live-Chat-Protokolle +- Telefon-Gespraechsnotizen +- Anrufaufzeichnungen (nur mit Einwilligung!) + +### Technische Daten +- Systemumgebung (OS, Browser, App-Version) +- Logdateien, Fehlermeldungen +- Screenshots, Screencasts +- Remote-Sitzungsprotokolle + +## Rechtsgrundlagen + +| Verarbeitung | Rechtsgrundlage | +|--------------|-----------------| +| Support-Bearbeitung | Art. 6 Abs. 1 lit. b DSGVO | +| Anrufaufzeichnung | Art. 6 Abs. 1 lit. a DSGVO (Einwilligung!) | +| Zufriedenheitsumfrage | Art. 6 Abs. 1 lit. f DSGVO | +| Qualitaetssicherung | Art. 6 Abs. 1 lit. f DSGVO | + +## Typische Systeme +Zendesk, Freshdesk, Jira Service Management, Intercom, OTRS, Zammad + +## Aufbewahrungsfristen +- **Support-Tickets:** 3 Jahre nach Schliessung (Gewaehrleistung/Verjaehrung) +- **Chat-Protokolle:** 6-12 Monate +- **Anrufaufzeichnungen:** Max. 6 Monate (Qualitaetssicherung) +- **Technische Logs:** 90 Tage', + ARRAY['Art. 6 Abs. 1 lit. b DSGVO', 'Art. 6 Abs. 1 lit. a DSGVO', 'Art. 6 Abs. 1 lit. f DSGVO'], + ARRAY['kundenservice', 'support', 'tickets', 'kommunikation', 'anrufaufzeichnung'], + 'info', + 1 +) ON CONFLICT (id) DO UPDATE SET + content = EXCLUDED.content, + summary = EXCLUDED.summary, + legal_refs = EXCLUDED.legal_refs, + tags = EXCLUDED.tags, + version = compliance_wiki_articles.version + 1, + updated_at = NOW(); + +-- ============================================================================= +-- 6. Artikel: Datenkategorien im IT-Betrieb +-- ============================================================================= + +INSERT INTO compliance_wiki_articles (id, category_id, title, summary, content, legal_refs, tags, relevance, version) +VALUES ( + 'dk-it-betrieb', + 'datenkategorien', + 'Datenkategorien im IT-Betrieb', + 'Logdaten, Zugangsdaten, Netzwerk-Monitoring und Backup-Daten — IT-spezifische Datenkategorien.', + '## Ueberblick + +Die IT-Abteilung verarbeitet personenbezogene Daten im Rahmen der **Systemadministration, Sicherheit und Verfuegbarkeit**. Rechtsgrundlage ist primaer **Art. 6 Abs. 1 lit. f DSGVO** (berechtigtes Interesse an IT-Sicherheit) sowie **lit. c** (gesetzl. Aufbewahrungspflichten fuer Logs). + +## Typische Datenkategorien + +### Zugangsdaten (IAM) +- Benutzernamen, E-Mail-Adressen +- Rollen, Berechtigungen, Gruppenzugehoerigkeiten +- Letzte Anmeldung, Passwortwechsel-Datum +- MFA-Registrierungen + +### Logdaten +- **Authentifizierungs-Logs:** Login/Logout, fehlgeschlagene Versuche +- **Zugriffs-Logs:** Webserver, Applikation, API +- **System-Logs:** Betriebssystem-Events, Cron-Jobs +- **Sicherheits-Logs:** Firewall, IDS/IPS, Antivirus + +### Netzwerk- und Geraetedaten +- IP-Adressen (intern/extern) +- MAC-Adressen, Hostnamen +- Geraeteliste (Asset-Management) +- VPN-Verbindungsprotokolle + +### Backup-Daten +- Enthalten personenbezogene Daten aller gesicherten Systeme +- Backup-Retention muss mit Loeschfristen harmonisieren + +### Monitoring-Daten +- Uptime-/Performance-Metriken (i.d.R. kein Personenbezug) +- Endpunkt-Monitoring (Geraetezuordnung → personenbezogen) + +## Rechtsgrundlagen + +| Verarbeitung | Rechtsgrundlage | +|--------------|-----------------| +| Logging / SIEM | Art. 6 Abs. 1 lit. f DSGVO | +| Zugangsverwaltung | Art. 6 Abs. 1 lit. b + f DSGVO | +| Backup | Art. 6 Abs. 1 lit. f DSGVO | +| Videoueberwachung IT-Raeume | Art. 6 Abs. 1 lit. f DSGVO + § 4 BDSG | + +## Typische Systeme +Active Directory / Entra ID, Keycloak, LDAP, Graylog, ELK Stack, Zabbix, Prometheus/Grafana, Veeam, Proxmox Backup + +## Aufbewahrungsfristen +- **Authentifizierungs-Logs:** 6-12 Monate +- **Zugriffs-Logs:** 90 Tage (BSI-Empfehlung: 6 Monate) +- **Sicherheits-Logs:** 12 Monate (SOC-Empfehlung) +- **Backups:** Entsprechend Aufbewahrungskonzept (i.d.R. 30-90 Tage)', + ARRAY['Art. 6 Abs. 1 lit. f DSGVO', 'Art. 32 DSGVO', '§ 4 BDSG', 'Art. 5 Abs. 1 lit. f DSGVO'], + ARRAY['it', 'logging', 'backup', 'iam', 'netzwerk', 'monitoring', 'siem'], + 'important', + 1 +) ON CONFLICT (id) DO UPDATE SET + content = EXCLUDED.content, + summary = EXCLUDED.summary, + legal_refs = EXCLUDED.legal_refs, + tags = EXCLUDED.tags, + version = compliance_wiki_articles.version + 1, + updated_at = NOW(); + +-- ============================================================================= +-- 7. Artikel: Datenkategorien in der Produktion +-- ============================================================================= + +INSERT INTO compliance_wiki_articles (id, category_id, title, summary, content, legal_refs, tags, relevance, version) +VALUES ( + 'dk-produktion', + 'datenkategorien', + 'Datenkategorien in der Produktion', + 'Personenbezogene Daten in Fertigung und Produktion: Zeiterfassung, Zutrittskontrolle, Arbeitsschutz.', + '## Ueberblick + +In der Produktion werden personenbezogene Daten vor allem im Rahmen von **Zeiterfassung, Zutrittskontrolle und Arbeitsschutz** verarbeitet. Seit dem BAG-Urteil vom 13.09.2022 (1 ABR 22/21) besteht eine **Pflicht zur Arbeitszeiterfassung**. + +## Typische Datenkategorien + +### Zeiterfassung +- Kommen/Gehen-Zeiten, Pausenzeiten +- Schichtzuordnung, Ueberstunden +- Abwesenheiten (Urlaub, Krank, Schulung) + +### Zutrittskontrolle +- Ausweiskarten-ID, RFID-Transponder +- Zutrittsprotokolle (Wer, Wann, Welcher Bereich) +- Besuchermanagement (Name, Firma, Besuchsgrund) + +### Arbeitsschutz & Arbeitsmedizin +- Unterweisungsnachweise (Name, Datum, Thema) +- Arbeitsmedizinische Vorsorge (nur: durchgefuehrt ja/nein) +- Gefahrstoff-Expositionsdaten +- Unfallmeldungen (mit Personenbezug) + +### Qualitaetssicherung +- Pruefprotokolle mit Pruefer-ID +- Chargenverfolgung (Zuordnung zu Mitarbeitern) + +### Videoueberwachung +- Kameraaufnahmen in Produktionshallen +- Zugangs-/Ladebereiche + +## Rechtsgrundlagen + +| Verarbeitung | Rechtsgrundlage | +|--------------|-----------------| +| Zeiterfassung | § 26 Abs. 1 BDSG + Art. 6 Abs. 1 lit. c DSGVO | +| Zutrittskontrolle | Art. 6 Abs. 1 lit. f DSGVO | +| Arbeitsmedizin | § 26 Abs. 3 BDSG + ArbSchG/ArbMedVV | +| Videoueberwachung | Art. 6 Abs. 1 lit. f DSGVO + § 4 BDSG | +| Unfallmeldungen | Art. 6 Abs. 1 lit. c DSGVO (§ 193 SGB VII) | + +## Typische Systeme +ATOSS, Interflex, Kaba/dormakaba, SAP PM/QM, MES-Systeme + +## Aufbewahrungsfristen +- **Zeiterfassung:** 2 Jahre (§ 16 Abs. 2 ArbZG) +- **Zutrittsprotokolle:** 90 Tage (Sicherheitsinteresse) +- **Unterweisungsnachweise:** Dauer der Beschaeftigung + 3 Jahre +- **Unfallmeldungen:** 5 Jahre (DGUV) +- **Videoueberwachung:** Max. 72 Stunden (DSK-Empfehlung), max. 10 Tage', + ARRAY['§ 26 BDSG', 'Art. 6 Abs. 1 lit. f DSGVO', '§ 4 BDSG', '§ 16 ArbZG', '§ 193 SGB VII', 'ArbMedVV'], + ARRAY['produktion', 'zeiterfassung', 'zutrittskontrolle', 'arbeitsschutz', 'videoueberwachung'], + 'info', + 1 +) ON CONFLICT (id) DO UPDATE SET + content = EXCLUDED.content, + summary = EXCLUDED.summary, + legal_refs = EXCLUDED.legal_refs, + tags = EXCLUDED.tags, + version = compliance_wiki_articles.version + 1, + updated_at = NOW();