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>
92 lines
2.6 KiB
TypeScript
92 lines
2.6 KiB
TypeScript
/**
|
|
* DSFA Draft Prompt - Datenschutz-Folgenabschaetzung (Art. 35 DSGVO)
|
|
*/
|
|
|
|
import type { DraftContext } from '../types'
|
|
|
|
export interface DSFADraftInput {
|
|
context: DraftContext
|
|
processingDescription?: string
|
|
instructions?: string
|
|
}
|
|
|
|
export function buildDSFADraftPrompt(input: DSFADraftInput): string {
|
|
const { context, processingDescription, instructions } = input
|
|
const level = context.decisions.level
|
|
const depthItems = context.constraints.depthRequirements.detailItems
|
|
const hardTriggers = context.decisions.hardTriggers
|
|
|
|
return `## Aufgabe: DSFA entwerfen (Art. 35 DSGVO)
|
|
|
|
### Unternehmensprofil
|
|
- Name: ${context.companyProfile.name}
|
|
- Branche: ${context.companyProfile.industry}
|
|
- Mitarbeiter: ${context.companyProfile.employeeCount}
|
|
|
|
### Compliance-Level: ${level}
|
|
Tiefe: ${context.constraints.depthRequirements.depth}
|
|
|
|
### Hard Triggers (Gruende fuer DSFA-Pflicht):
|
|
${hardTriggers.length > 0
|
|
? hardTriggers.map(t => `- ${t.id}: ${t.label} (${t.legalReference})`).join('\n')
|
|
: '- Keine Hard Triggers (DSFA auf Wunsch)'}
|
|
|
|
### Erforderliche Inhalte:
|
|
${depthItems.map((item, i) => `${i + 1}. ${item}`).join('\n')}
|
|
|
|
${processingDescription ? `### Beschreibung der Verarbeitung: ${processingDescription}` : ''}
|
|
${instructions ? `### Zusaetzliche Anweisungen: ${instructions}` : ''}
|
|
|
|
### Antwort-Format
|
|
Antworte als JSON:
|
|
{
|
|
"sections": [
|
|
{
|
|
"id": "beschreibung",
|
|
"title": "Systematische Beschreibung der Verarbeitung",
|
|
"content": "...",
|
|
"schemaField": "processingDescription"
|
|
},
|
|
{
|
|
"id": "notwendigkeit",
|
|
"title": "Notwendigkeit und Verhaeltnismaessigkeit",
|
|
"content": "...",
|
|
"schemaField": "necessityAssessment"
|
|
},
|
|
{
|
|
"id": "risikobewertung",
|
|
"title": "Bewertung der Risiken fuer die Rechte und Freiheiten",
|
|
"content": "...",
|
|
"schemaField": "riskAssessment"
|
|
},
|
|
{
|
|
"id": "massnahmen",
|
|
"title": "Massnahmen zur Eindaemmung der Risiken",
|
|
"content": "...",
|
|
"schemaField": "mitigationMeasures"
|
|
},
|
|
{
|
|
"id": "stellungnahme_dsb",
|
|
"title": "Stellungnahme des Datenschutzbeauftragten",
|
|
"content": "...",
|
|
"schemaField": "dpoOpinion"
|
|
},
|
|
{
|
|
"id": "standpunkt_betroffene",
|
|
"title": "Standpunkt der betroffenen Personen",
|
|
"content": "...",
|
|
"schemaField": "dataSubjectView"
|
|
},
|
|
{
|
|
"id": "ergebnis",
|
|
"title": "Ergebnis und Empfehlung",
|
|
"content": "...",
|
|
"schemaField": "conclusion"
|
|
}
|
|
]
|
|
}
|
|
|
|
Halte die Tiefe exakt auf Level ${level}.
|
|
Nutze WP248-Kriterien als Leitfaden fuer die Risikobewertung.`
|
|
}
|