/** * VVT Draft Prompt - Verarbeitungsverzeichnis (Art. 30 DSGVO) */ import type { DraftContext } from '../types' export interface VVTDraftInput { context: DraftContext activityName?: string activityPurpose?: string instructions?: string } export function buildVVTDraftPrompt(input: VVTDraftInput): string { const { context, activityName, activityPurpose, instructions } = input const level = context.decisions.level const depthItems = context.constraints.depthRequirements.detailItems return `## Aufgabe: VVT-Eintrag entwerfen (Art. 30 DSGVO) ### Unternehmensprofil - Name: ${context.companyProfile.name} - Branche: ${context.companyProfile.industry} - Mitarbeiter: ${context.companyProfile.employeeCount} - Geschaeftsmodell: ${context.companyProfile.businessModel} ${context.companyProfile.dataProtectionOfficer ? `- DSB: ${context.companyProfile.dataProtectionOfficer.name} (${context.companyProfile.dataProtectionOfficer.email})` : '- DSB: Nicht benannt'} ### Compliance-Level: ${level} Tiefe: ${context.constraints.depthRequirements.depth} ### Erforderliche Inhalte fuer Level ${level}: ${depthItems.map((item, i) => `${i + 1}. ${item}`).join('\n')} ### Constraints ${context.constraints.boundaries.map(b => `- ${b}`).join('\n')} ${context.constraints.riskFlags.length > 0 ? `### Risiko-Flags ${context.constraints.riskFlags.map(f => `- [${f.severity}] ${f.title}: ${f.recommendation}`).join('\n')}` : ''} ${activityName ? `### Gewuenschte Verarbeitungstaetigkeit: ${activityName}` : ''} ${activityPurpose ? `### Zweck: ${activityPurpose}` : ''} ${instructions ? `### Zusaetzliche Anweisungen: ${instructions}` : ''} ${context.existingDocumentData ? `### Bestehende VVT-Eintraege: ${JSON.stringify(context.existingDocumentData).slice(0, 500)}` : ''} ### Antwort-Format Antworte als JSON: { "sections": [ { "id": "bezeichnung", "title": "Bezeichnung der Verarbeitungstaetigkeit", "content": "...", "schemaField": "name" }, { "id": "verantwortlicher", "title": "Verantwortlicher", "content": "...", "schemaField": "controller" }, { "id": "zweck", "title": "Zweck der Verarbeitung", "content": "...", "schemaField": "purpose" }, { "id": "rechtsgrundlage", "title": "Rechtsgrundlage", "content": "...", "schemaField": "legalBasis" }, { "id": "betroffene", "title": "Kategorien betroffener Personen", "content": "...", "schemaField": "dataSubjects" }, { "id": "datenkategorien", "title": "Kategorien personenbezogener Daten", "content": "...", "schemaField": "dataCategories" }, { "id": "empfaenger", "title": "Empfaenger", "content": "...", "schemaField": "recipients" }, { "id": "speicherdauer", "title": "Speicherdauer / Loeschfristen", "content": "...", "schemaField": "retentionPeriod" }, { "id": "tom_referenz", "title": "TOM-Referenz", "content": "...", "schemaField": "tomReference" } ] } Fuelle fehlende Informationen mit [PLATZHALTER: Beschreibung was hier eingetragen werden muss]. Halte die Tiefe exakt auf Level ${level} (${context.constraints.depthRequirements.depth}).` }