Extends the Compliance Advisor from a Q&A chatbot into a full drafting engine that can generate, validate, and refine compliance documents within Scope Engine constraints. Includes intent classifier, state projector, constraint enforcer, SOUL templates, Go backend endpoints, and React UI components. 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}).`
|
|
}
|