Services: Admin-Compliance, Backend-Compliance, AI-Compliance-SDK, Consent-SDK, Developer-Portal, PCA-Platform, DSMS Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
110 lines
3.2 KiB
TypeScript
110 lines
3.2 KiB
TypeScript
/**
|
|
* 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}).`
|
|
}
|