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