/** * 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}.` }