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>
100 lines
3.0 KiB
TypeScript
100 lines
3.0 KiB
TypeScript
/**
|
|
* TOM Draft Prompt - Technische und Organisatorische Massnahmen (Art. 32 DSGVO)
|
|
*/
|
|
|
|
import type { DraftContext } from '../types'
|
|
|
|
export interface TOMDraftInput {
|
|
context: DraftContext
|
|
focusArea?: string
|
|
instructions?: string
|
|
}
|
|
|
|
export function buildTOMDraftPrompt(input: TOMDraftInput): string {
|
|
const { context, focusArea, instructions } = input
|
|
const level = context.decisions.level
|
|
const depthItems = context.constraints.depthRequirements.detailItems
|
|
|
|
return `## Aufgabe: TOM-Dokument entwerfen (Art. 32 DSGVO)
|
|
|
|
### Unternehmensprofil
|
|
- Name: ${context.companyProfile.name}
|
|
- Branche: ${context.companyProfile.industry}
|
|
- Mitarbeiter: ${context.companyProfile.employeeCount}
|
|
|
|
### 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}`).join('\n')}` : ''}
|
|
|
|
${focusArea ? `### Fokusbereich: ${focusArea}` : ''}
|
|
${instructions ? `### Zusaetzliche Anweisungen: ${instructions}` : ''}
|
|
|
|
${context.existingDocumentData ? `### Bestehende TOM: ${JSON.stringify(context.existingDocumentData).slice(0, 500)}` : ''}
|
|
|
|
### Antwort-Format
|
|
Antworte als JSON:
|
|
{
|
|
"sections": [
|
|
{
|
|
"id": "zutrittskontrolle",
|
|
"title": "Zutrittskontrolle",
|
|
"content": "Massnahmen die unbefugten Zutritt zu Datenverarbeitungsanlagen verhindern...",
|
|
"schemaField": "accessControl"
|
|
},
|
|
{
|
|
"id": "zugangskontrolle",
|
|
"title": "Zugangskontrolle",
|
|
"content": "Massnahmen gegen unbefugte Systemnutzung...",
|
|
"schemaField": "systemAccessControl"
|
|
},
|
|
{
|
|
"id": "zugriffskontrolle",
|
|
"title": "Zugriffskontrolle",
|
|
"content": "Massnahmen zur Sicherstellung berechtigter Datenzugriffe...",
|
|
"schemaField": "dataAccessControl"
|
|
},
|
|
{
|
|
"id": "weitergabekontrolle",
|
|
"title": "Weitergabekontrolle / Uebertragungssicherheit",
|
|
"content": "Massnahmen bei Datenuebertragung und -transport...",
|
|
"schemaField": "transferControl"
|
|
},
|
|
{
|
|
"id": "eingabekontrolle",
|
|
"title": "Eingabekontrolle",
|
|
"content": "Nachvollziehbarkeit von Dateneingaben...",
|
|
"schemaField": "inputControl"
|
|
},
|
|
{
|
|
"id": "auftragskontrolle",
|
|
"title": "Auftragskontrolle",
|
|
"content": "Massnahmen zur weisungsgemaessen Auftragsverarbeitung...",
|
|
"schemaField": "orderControl"
|
|
},
|
|
{
|
|
"id": "verfuegbarkeitskontrolle",
|
|
"title": "Verfuegbarkeitskontrolle",
|
|
"content": "Schutz gegen Datenverlust...",
|
|
"schemaField": "availabilityControl"
|
|
},
|
|
{
|
|
"id": "trennungsgebot",
|
|
"title": "Trennungsgebot",
|
|
"content": "Getrennte Verarbeitung fuer verschiedene Zwecke...",
|
|
"schemaField": "separationControl"
|
|
}
|
|
]
|
|
}
|
|
|
|
Fuelle fehlende Informationen mit [PLATZHALTER: ...].
|
|
Halte die Tiefe exakt auf Level ${level}.`
|
|
}
|