prompts
This commit is contained in:
		
							parent
							
								
									93783dde3d
								
							
						
					
					
						commit
						20b3bd44ca
					
				
							
								
								
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							@ -11,6 +11,7 @@ _site/
 | 
			
		||||
dist/
 | 
			
		||||
 | 
			
		||||
.astro/
 | 
			
		||||
.astro/*
 | 
			
		||||
 | 
			
		||||
# Environment variables
 | 
			
		||||
.env
 | 
			
		||||
@ -85,3 +86,4 @@ temp/
 | 
			
		||||
.astro/data-store.json
 | 
			
		||||
.astro/content.d.ts
 | 
			
		||||
prompt.md
 | 
			
		||||
.astro/settings.json
 | 
			
		||||
 | 
			
		||||
@ -1,222 +1,213 @@
 | 
			
		||||
// src/config/prompts.ts - Centralized German prompts for AI pipeline
 | 
			
		||||
// src/config/prompts.ts
 | 
			
		||||
 | 
			
		||||
export const AI_PROMPTS = {
 | 
			
		||||
  
 | 
			
		||||
  toolSelection: (mode: string, userQuery: string, selectionMethod: string, maxSelectedItems: number) => {
 | 
			
		||||
    const modeInstruction = mode === 'workflow' 
 | 
			
		||||
      ? 'Der Benutzer möchte einen UMFASSENDEN WORKFLOW mit mehreren Tools/Methoden über verschiedene Phasen. Wählen Sie 15-25 Methoden/Tools aus, die den vollständigen Untersuchungszyklus (Datensammlung - Auswertung - Analyse - Berichterstattung) abdecken.'
 | 
			
		||||
      : 'Der Benutzer möchte SPEZIFISCHE TOOLS/METHODEN, die ihr konkretes Problem direkt lösen. Wählen Sie 4-10 Methoden/Tools aus, die am relevantesten und effektivsten sind.';
 | 
			
		||||
      ? 'Der Benutzer möchte einen UMFASSENDEN WORKFLOW über mehrere Phasen. Wählen Sie 15–25 Elemente, die den Zyklus Datensammlung → Auswertung → Analyse → Bericht abdecken.'
 | 
			
		||||
      : 'Der Benutzer möchte SPEZIFISCHE LÖSUNGEN. Wählen Sie 4–10 Elemente, die das Problem direkt adressieren. Beschreibungen dürfen hier ausführlicher ausfallen, um technische Tiefe zu vermitteln.';
 | 
			
		||||
 | 
			
		||||
    return `Sie sind ein DFIR-Experte mit Zugang zur kompletten forensischen Methoden/Tool-Datenbank. Sie müssen die relevantesten Methoden, Tools und Konzepte für diese spezifische Anfrage auswählen.
 | 
			
		||||
    return `Sie sind DFIR-Experte mit Zugriff auf eine vollständige Datenbank aus Methoden (type: "method") und Tools (type: "software"/"os"). Ihre Aufgabe ist es, die relevantesten Elemente für die Anfrage auszuwählen.
 | 
			
		||||
 | 
			
		||||
AUSWAHLMETHODE: ${selectionMethod}
 | 
			
		||||
${selectionMethod === 'embeddings_candidates' ? 
 | 
			
		||||
  'Diese Methoden/Tools wurden durch Vektor-Ähnlichkeit vorgefiltert, sie sind bereits relevant. Ihre Aufgabe ist es, die BESTEN aus diesem relevanten Set auszuwählen. Wähle mindestens eine Methode und ein Tool, wenn vorhanden.' :
 | 
			
		||||
  'Sie haben Zugang zur vollständigen Methoden/Tool-Datenbank. Wählen Sie die relevantesten Methoden/Tools für die Anfrage aus. Wähle mindestens eine Methode und ein Tool, wenn vorhanden.'}
 | 
			
		||||
  'Die angezeigten Kandidaten wurden bereits semantisch vorgefiltert. Wählen Sie daraus die BESTEN.' :
 | 
			
		||||
  'Sie sehen die vollständige Datenbasis. Wählen Sie die relevantesten Elemente.'}
 | 
			
		||||
 | 
			
		||||
WICHTIG – MISCHUNG ERZWINGEN:
 | 
			
		||||
- Der finale Vorschlag MUSS eine Mischung aus Methoden UND Tools enthalten (sofern verfügbar).
 | 
			
		||||
- Ziel: grob 40–60 % Methoden und 40–60 % Tools. Wenn eine Kategorie knapp ist, wählen Sie so ausgewogen wie möglich. Begründen Sie Abweichungen im reasoning.
 | 
			
		||||
- Bezeichnen Sie Elemente konsequent als "Methode" oder "Tool" je nach Typ.
 | 
			
		||||
 | 
			
		||||
${modeInstruction}
 | 
			
		||||
 | 
			
		||||
BENUTZER-ANFRAGE: "${userQuery}"
 | 
			
		||||
 | 
			
		||||
KRITISCHE AUSWAHLPRINZIPIEN:
 | 
			
		||||
1. **KONTEXT ÜBER POPULARITÄT**: Verwenden Sie nicht automatisch "berühmte" Tools wie Volatility, Wireshark oder Autopsy nur weil sie bekannt sind. Wählen Sie basierend auf den SPEZIFISCHEN Szenario-Anforderungen.
 | 
			
		||||
1) KONTEXT > POPULARITÄT: Nicht automatisch zu populären Tools greifen. Wählen Sie strikt szenariobezogen.
 | 
			
		||||
2) METHODIK vs. SOFTWARE:
 | 
			
		||||
   - Dringend/Triage → Methoden für schnelle Reaktion priorisieren.
 | 
			
		||||
   - Zeitkritisch → Triage-Methoden vor Tiefenanalyse-Tools.
 | 
			
		||||
   - Umfassende Analyse → dann spezialisierte Tools ergänzen.
 | 
			
		||||
3) SPEZIFITÄT:
 | 
			
		||||
   - ICS/SCADA → spezialisierte ICS-Methoden/-Tools statt generischer Netzwerk-Tools.
 | 
			
		||||
   - Mobile (Android/iOS) → mobile-spezifische Methoden/Tools.
 | 
			
		||||
   - Speicheranalyse dringend → schnelle Memory-Methoden/Tools vor Vollanalyse.
 | 
			
		||||
4) LESEN SIE DIE VOLLBESCHREIBUNG UND METADATEN (Tags, Plattformen, Phasen, Lizenz, Access).
 | 
			
		||||
 | 
			
		||||
2. **METHODOLOGIE vs SOFTWARE**: 
 | 
			
		||||
   - Für SCHNELLE/DRINGENDE Szenarien → Priorisieren Sie METHODEN und schnelle Antwort-Ansätze
 | 
			
		||||
   - Für ZEITKRITISCHE Vorfälle → Wählen Sie Triage-Methoden über tiefe Analyse-Tools
 | 
			
		||||
   - Für UMFASSENDE Analysen → Dann betrachten Sie detaillierte Software-Tools
 | 
			
		||||
   - METHODEN (Typ: "method") sind oft besser als SOFTWARE für prozedurale Anleitung, eine gute Mischung ist aber zwingend erforderlich.
 | 
			
		||||
UI-KÜRZE:
 | 
			
		||||
- Workflow-Modus: kurze, prägnante Beschreibungen.
 | 
			
		||||
- Spezifischer Modus: Beschreibungen dürfen deutlich länger sein (mehr technische Details, bis zu 200–300 Zeichen in Kurzfassung).
 | 
			
		||||
 | 
			
		||||
3. **SZENARIO-SPEZIFISCHE LOGIK**:
 | 
			
		||||
   - "Schnell/Quick/Dringend/Triage" Szenarien → Rapid Incident Response und Triage METHODE > Volatility oder ähnliche
 | 
			
		||||
   - "Industrial/SCADA/ICS" Szenarien → Spezialisierte ICS-Tools > generische Netzwerk-Tools
 | 
			
		||||
   - "Mobile/Android/iOS" Szenarien → Mobile-spezifische Tools > Desktop-Forensik-Tools
 | 
			
		||||
   - "Speicher-Analyse dringend benötigt" → Schnelle Speicher-Tools/Methoden > umfassende Volatility-Analyse oder ähnliche
 | 
			
		||||
Wählen Sie die relevantesten Elemente (max ${maxSelectedItems} gesamt).
 | 
			
		||||
 | 
			
		||||
ANALYSE-ANWEISUNGEN:
 | 
			
		||||
1. Lesen Sie die VOLLSTÄNDIGE Beschreibung jedes Tools/Konzepts
 | 
			
		||||
2. Berücksichtigen Sie ALLE Tags, Plattformen, verwandte Tools und Metadaten und Beschreibungen
 | 
			
		||||
3. **PASSENDE DRINGLICHKEIT**: Schnelle Szenarien brauchen schnelle Methoden, nicht tiefe Analyse-Tools
 | 
			
		||||
4. **PASSENDE SPEZIFITÄT**: Spezialisierte Szenarien brauchen spezialisierte Tools, nicht generische
 | 
			
		||||
5. **BERÜCKSICHTIGEN SIE DEN TYP**: Methoden bieten prozedurale Anleitung, Software bietet technische Fähigkeiten
 | 
			
		||||
 | 
			
		||||
Wählen Sie die relevantesten Elemente aus (max ${maxSelectedItems} insgesamt).
 | 
			
		||||
 | 
			
		||||
Antworten Sie NUR mit diesem JSON-Format:
 | 
			
		||||
ANTWORTFORMAT (JSON, SCHEMA UNVERÄNDERT):
 | 
			
		||||
{
 | 
			
		||||
  "selectedTools": ["Methode/Tool Name 1", "Methode/Tool Name 2", ...],
 | 
			
		||||
  "selectedConcepts": ["Konzept Name 1", "Konzept Name 2", ...],
 | 
			
		||||
  "reasoning": "Detaillierte Erklärung, warum diese spezifischen Methoden/Tools für diese Anfrage ausgewählt wurden, und warum bestimmte populäre Tools NICHT ausgewählt wurden, falls sie für den Szenario-Kontext ungeeignet waren"
 | 
			
		||||
  "selectedTools": ["Name 1", "Name 2", ...],
 | 
			
		||||
  "selectedConcepts": ["Konzept 1", "Konzept 2", ...],
 | 
			
		||||
  "reasoning": "Begründen Sie die Auswahl, die erzwungene Mischung Methode/Tool und warum bestimmte populäre Elemente nicht geeignet sind. Halten Sie die Sprache präzise und UI-tauglich."
 | 
			
		||||
}`;
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  scenarioAnalysis: (isWorkflow: boolean, userQuery: string) => {
 | 
			
		||||
    const analysisType = isWorkflow ? 'Untersuchungsszenario' : 'technische Problem';
 | 
			
		||||
    const analysisType = isWorkflow ? 'Untersuchungsszenario' : 'technische Problemstellung';
 | 
			
		||||
    const considerations = isWorkflow ? 
 | 
			
		||||
      `- Angriffsvektoren und Bedrohungsmodellierung nach MITRE ATT&CK
 | 
			
		||||
- Betroffene Systeme und kritische Infrastrukturen
 | 
			
		||||
- Zeitkritische Faktoren und Beweiserhaltung
 | 
			
		||||
- Forensische Artefakte und Datenquellen` :
 | 
			
		||||
      `- Spezifische forensische Herausforderungen
 | 
			
		||||
- Verfügbare Datenquellen und deren Integrität
 | 
			
		||||
- Methodische Anforderungen für rechtssichere Analyse`;
 | 
			
		||||
      `- Angriffsvektoren (MITRE ATT&CK) und Bedrohungsmodell
 | 
			
		||||
- Betroffene Systeme/Assets und Kritikalität
 | 
			
		||||
- Zeitdruck, Beweiserhalt, Chain of Custody
 | 
			
		||||
- Relevante Artefakte und Datenquellen` :
 | 
			
		||||
      `- Konkrete forensische Hürden
 | 
			
		||||
- Verfügbare Datenquellen und Integrität
 | 
			
		||||
- Anforderungen für rechtssichere Auswertung`;
 | 
			
		||||
 | 
			
		||||
    return `Sie sind ein erfahrener DFIR-Experte. Analysieren Sie das folgende ${analysisType}.
 | 
			
		||||
    return `Analysieren Sie das ${analysisType} ${isWorkflow ? 'kompakt (max. 120 Wörter)' : 'ausführlicher (max. 160 Wörter)'}.
 | 
			
		||||
 | 
			
		||||
${isWorkflow ? 'UNTERSUCHUNGSSZENARIO' : 'TECHNISCHES PROBLEM'}: "${userQuery}"
 | 
			
		||||
 | 
			
		||||
Führen Sie eine systematische ${isWorkflow ? 'Szenario-Analyse' : 'Problem-Analyse'} durch und berücksichtigen Sie dabei:
 | 
			
		||||
${isWorkflow ? 'SZENARIO' : 'PROBLEM'}: "${userQuery}"
 | 
			
		||||
 | 
			
		||||
Berücksichtigen:
 | 
			
		||||
${considerations}
 | 
			
		||||
 | 
			
		||||
WICHTIG: Antworten Sie NUR in fließendem deutschen Text ohne Listen, Aufzählungen oder Markdown-Formatierung. Maximum 120 Wörter.`;
 | 
			
		||||
Stil: Deutsch, ohne Listen/Markdown; klare, präzise Formulierungen, im spezifischen Modus mit mehr technischen Details.`;
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  investigationApproach: (isWorkflow: boolean, userQuery: string) => {
 | 
			
		||||
    const approachType = isWorkflow ? 'Untersuchungsansatz' : 'Lösungsansatz';
 | 
			
		||||
    const considerations = isWorkflow ?
 | 
			
		||||
      `- Triage-Prioritäten nach forensischer Dringlichkeit
 | 
			
		||||
- Phasenabfolge nach Methodik (Datensammlung - Auswertung - Analyse - Bericht)
 | 
			
		||||
- Kontaminationsvermeidung und forensische Isolierung
 | 
			
		||||
- Objektivität und Transparenz` :
 | 
			
		||||
      `- Methodik-Auswahl nach wissenschaftlichen Kriterien
 | 
			
		||||
- Validierung und Verifizierung der gewählten Ansätze
 | 
			
		||||
- Integration in bestehende forensische Workflows
 | 
			
		||||
- Objektivität, Transparenz, Reproduzierbarkeit`;
 | 
			
		||||
- Phasenabfolge: Datensammlung → Auswertung → Analyse → Bericht
 | 
			
		||||
- Kontaminationsvermeidung/Isolierung
 | 
			
		||||
- Objektivität und Nachvollziehbarkeit` :
 | 
			
		||||
      `- Methodenwahl nach wissenschaftlichen Kriterien
 | 
			
		||||
- Validierung/Verifizierung der Vorgehensweise
 | 
			
		||||
- Integration in bestehende DFIR-Workflows
 | 
			
		||||
- Reproduzierbarkeit und Transparenz`;
 | 
			
		||||
 | 
			
		||||
    return `Basierend auf der Analyse entwickeln Sie einen fundierten ${approachType} nach Methodik (Datensammlung - Auswertung - Analyse - Bericht).
 | 
			
		||||
    return `Formulieren Sie einen ${isWorkflow ? 'kompakten' : 'ausführlicheren'} ${approachType} (${isWorkflow ? 'max. 120 Wörter' : 'max. 160 Wörter'}), der explizit eine Mischung aus Methoden und Tools vorsieht.
 | 
			
		||||
 | 
			
		||||
${isWorkflow ? 'SZENARIO' : 'PROBLEM'}: "${userQuery}"
 | 
			
		||||
 | 
			
		||||
Entwickeln Sie einen systematischen ${approachType} unter Berücksichtigung von:
 | 
			
		||||
 | 
			
		||||
Berücksichtigen:
 | 
			
		||||
${considerations}
 | 
			
		||||
 | 
			
		||||
WICHTIG: Antworten Sie NUR in fließendem deutschen Text ohne Listen oder Markdown. Maximum 120 Wörter.`;
 | 
			
		||||
Stil: Deutsch, ohne Listen/Markdown, UI-tauglich.${isWorkflow ? '' : ' Mehr technische Tiefe und Kontext erwünscht.'}`;
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  criticalConsiderations: (isWorkflow: boolean, userQuery: string) => {
 | 
			
		||||
    const considerationType = isWorkflow ? 'kritische forensische Überlegungen' : 'wichtige methodische Voraussetzungen';
 | 
			
		||||
    const considerationType = isWorkflow ? 'kritische forensische Überlegungen' : 'methodische Voraussetzungen';
 | 
			
		||||
    const aspects = isWorkflow ?
 | 
			
		||||
      `- zeitkritische Beweissicherung vs. Gründlichkeit
 | 
			
		||||
- Chain of custody requirements und rechtliche Verwertbarkeit
 | 
			
		||||
- Transparenz und Reproduzierbarkeit` :
 | 
			
		||||
      `- Methoden-/Tool-Validierung und Nachvollziehbarkeit
 | 
			
		||||
- False positive/negative Risiken bei der gewählten Methodik
 | 
			
		||||
- Qualifikationsanforderungen für die Durchführung
 | 
			
		||||
- Dokumentations- und Reporting-Standards`;
 | 
			
		||||
      `- Beweissicherung vs. Gründlichkeit (Zeitdruck)
 | 
			
		||||
- Chain of Custody und rechtliche Verwertbarkeit
 | 
			
		||||
- Transparenz, Reproduzierbarkeit, Dokumentationspflichten` :
 | 
			
		||||
      `- Validierung/Nachvollziehbarkeit der Methode/Tools
 | 
			
		||||
- Risiken für False Positives/Negatives
 | 
			
		||||
- Qualifikationsanforderungen und Reporting-Standards`;
 | 
			
		||||
 | 
			
		||||
    return `Identifizieren Sie ${considerationType} für diesen Fall.
 | 
			
		||||
    return `Identifizieren Sie ${considerationType} ${isWorkflow ? 'knapp (max. 120 Wörter)' : 'ausführlicher (max. 160 Wörter)'}.
 | 
			
		||||
 | 
			
		||||
${isWorkflow ? 'SZENARIO' : 'PROBLEM'}: "${userQuery}"
 | 
			
		||||
 | 
			
		||||
Berücksichtigen Sie folgende forensische Aspekte:
 | 
			
		||||
 | 
			
		||||
Aspekte:
 | 
			
		||||
${aspects}
 | 
			
		||||
 | 
			
		||||
WICHTIG: Antworten Sie NUR in fließendem deutschen Text ohne Listen oder Markdown. Maximum 120 Wörter.`;
 | 
			
		||||
Stil: Deutsch, ohne Listen/Markdown.${isWorkflow ? '' : ' Etwas mehr technische Details zulassen.'}`;
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  phaseToolSelection: (userQuery: string, phase: any, phaseTools: any[]) => {
 | 
			
		||||
    return `Wählen Sie 2-3 Methoden/Tools für die Phase "${phase.name}" und bewerten Sie deren Aufgaben-Eignung VERGLEICHEND.
 | 
			
		||||
    const items = phaseTools.map((tool: any, index: number) => {
 | 
			
		||||
      const typ = tool.type === 'method' ? 'Methode' : 'Tool';
 | 
			
		||||
      const descLimit = 220;
 | 
			
		||||
      const desc = (tool.description || '').replace(/\s+/g, ' ').trim().slice(0, descLimit);
 | 
			
		||||
      return `${index + 1}. [${typ}] ${tool.name}: ${desc}…\n  - Plattformen: ${tool.platforms?.join(', ') || 'N/A'}\n  - Skill Level: ${tool.skillLevel}\n  - Tags: ${tool.tags?.join(', ') || 'N/A'}`;
 | 
			
		||||
    }).join('\n\n');
 | 
			
		||||
 | 
			
		||||
    return `Wählen Sie 2–3 Elemente für die Phase "${phase.name}" und bewerten Sie diese VERGLEICHEND. Erzwingen Sie eine Mischung aus mindestens einer Methode und einem Tool, sofern verfügbar.
 | 
			
		||||
 | 
			
		||||
SZENARIO: "${userQuery}"
 | 
			
		||||
SPEZIFISCHE PHASE: ${phase.name} - ${phase.description || 'Forensische Untersuchungsphase'}
 | 
			
		||||
PHASE: ${phase.name} – ${phase.description || 'Forensische Untersuchungsphase'}
 | 
			
		||||
 | 
			
		||||
VERFÜGBARE TOOLS FÜR ${phase.name.toUpperCase()}:
 | 
			
		||||
${phaseTools.map((tool: any, index: number) => `${index + 1}. ${tool.name}: ${tool.description.slice(0, 150)}...
 | 
			
		||||
  - Plattformen: ${tool.platforms?.join(', ') || 'N/A'}
 | 
			
		||||
  - Skill Level: ${tool.skillLevel}
 | 
			
		||||
  - Tags: ${tool.tags?.join(', ') || 'N/A'}`).join('\n\n')}
 | 
			
		||||
 | 
			
		||||
Bewerten Sie ALLE Methoden/Tools vergleichend für diese spezifische Aufgabe UND Phase. Wählen Sie die 2-3 besten aus. Es sollte eine Mischung aus Methoden und Tools sein, sofern verfügbar.
 | 
			
		||||
VERFÜGBARE ELEMENTE FÜR ${phase.name.toUpperCase()}:
 | 
			
		||||
${items}
 | 
			
		||||
 | 
			
		||||
BEWERTUNGSKRITERIEN:
 | 
			
		||||
- Wie gut löst die Methode/das Tool das forensische Problem im SZENARIO-Kontext?
 | 
			
		||||
- Wie gut passt es zur spezifischen PHASE "${phase.name}"?
 | 
			
		||||
- Wie vergleicht es sich mit den anderen verfügbaren Methoden/Tools für diese Phase?
 | 
			
		||||
- Eignung für das konkrete Szenario und GENAU diese Phase
 | 
			
		||||
- Vergleich zu den Alternativen in der Liste
 | 
			
		||||
- Praktikabilität (Zeit, Setup, Reproduzierbarkeit)
 | 
			
		||||
 | 
			
		||||
Antworten Sie AUSSCHLIESSLICH mit diesem JSON-Format:
 | 
			
		||||
UI-KÜRZE:
 | 
			
		||||
- Workflow-Modus: 1–3‑Satz Kurzfassung (≈200–260 Zeichen) + 1–2 kurze Details.
 | 
			
		||||
- Spezifischer Modus: Kurzfassung darf länger sein (≈250–320 Zeichen) + 2–3 detailreichere Sätze.
 | 
			
		||||
- Bezeichnen Sie Elemente als "Methode" oder "Tool".
 | 
			
		||||
 | 
			
		||||
ANTWORT NUR ALS JSON (Schema UNVERÄNDERT):
 | 
			
		||||
[
 | 
			
		||||
  {
 | 
			
		||||
    "toolName": "Exakter Methoden/Tool-Name",
 | 
			
		||||
    "taskRelevance": 85,
 | 
			
		||||
    "justification": "Vergleichende Begründung warum diese Methode/dieses Tool für diese Phase und Aufgabe besser/schlechter als die anderen geeignet ist",
 | 
			
		||||
    "limitations": ["Spezifische Einschränkung 1", "Einschränkung 2"]
 | 
			
		||||
    "taskRelevance": 0–100,
 | 
			
		||||
    "justification": "Kurzfassung zuerst (Workflow: ≈200–260 Zeichen, Spezifisch: ≈250–320 Zeichen). Danach Begründung mit Vergleich und technischen Details.",
 | 
			
		||||
    "limitations": ["Konkrete Einschränkung 1", "Einschränkung 2"]
 | 
			
		||||
  }
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
WICHTIG:
 | 
			
		||||
- taskRelevance: 0-100 Score basierend auf Szenario-Eignung UND Phasen-Passung im VERGLEICH zu anderen Tools
 | 
			
		||||
- Nur die 2-3 BESTEN Methoden/Tools auswählen und bewerten
 | 
			
		||||
- justification soll VERGLEICHEND sein ("besser als X weil...", "für diese Phase ideal weil...")`;
 | 
			
		||||
Wählen Sie nur die 2–3 BESTEN Elemente und achten Sie auf die Mischung Methode+Tool.`;
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  toolEvaluation: (userQuery: string, tool: any, rank: number, taskRelevance: number) => {
 | 
			
		||||
    return `Sie sind ein DFIR-Experte. Erklären Sie DETAILLIERT die Anwendung dieser/dieses bereits bewerteten Methode/Tools.
 | 
			
		||||
    const typ = tool.type === 'method' ? 'Methode' : 'Tool';
 | 
			
		||||
    return `Sie sind DFIR-Experte. Erklären Sie DETAILLIERT die Anwendung dieses bereits bewerteten Elements.
 | 
			
		||||
 | 
			
		||||
PROBLEM: "${userQuery}"
 | 
			
		||||
TOOL: ${tool.name} (bereits bewertet mit ${taskRelevance}% Aufgaben-Eignung)
 | 
			
		||||
BESCHREIBUNG: ${tool.description}
 | 
			
		||||
ELEMENT: ${typ} ${tool.name} (Aufgaben-Eignung ${taskRelevance}%)
 | 
			
		||||
BESCHREIBUNG: ${(tool.description || '').replace(/\s+/g, ' ').trim()}
 | 
			
		||||
 | 
			
		||||
Die Methode/das Tool wurde bereits als Rang ${rank} für diese Aufgabe bewertet. Erklären Sie nun:
 | 
			
		||||
 | 
			
		||||
Antworten Sie AUSSCHLIESSLICH mit diesem JSON-Format:
 | 
			
		||||
ANTWORT AUSSCHLIESSLICH ALS JSON (Schema UNVERÄNDERT):
 | 
			
		||||
{
 | 
			
		||||
  "detailed_explanation": "Detaillierte Erklärung warum und wie diese Methode/Tool für diese spezifische Aufgabe eingesetzt wird",
 | 
			
		||||
  "implementation_approach": "Konkrete Schritt-für-Schritt Anleitung zur korrekten Anwendung",
 | 
			
		||||
  "pros": ["Spezifischer Vorteil 1", "Spezifischer Vorteil 2"],
 | 
			
		||||
  "limitations": ["Spezifische Einschränkung 1", "Spezifische Einschränkung 2"],
 | 
			
		||||
  "alternatives": "Alternative Ansätze oder Tools falls dieses nicht verfügbar ist"
 | 
			
		||||
  "detailed_explanation": "Beginnen Sie mit einer Kurzfassung (Workflow: ≈200–260 Zeichen, Spezifisch: ≈250–320 Zeichen) für das UI: 'Kurz: …'. Danach (Workflow: ≈80–140 Wörter, Spezifisch: ≈120–180 Wörter) mit präziser, technisch korrekter Erläuterung, warum und wie diese ${typ.toLowerCase()} für dieses Problem eingesetzt wird.",
 | 
			
		||||
  "implementation_approach": "Konkrete, reproduzierbare Schrittfolge. Kurze Schritte, kein Ausschweifen.",
 | 
			
		||||
  "pros": ["Spezifischer Vorteil 1", "Vorteil 2"],
 | 
			
		||||
  "limitations": ["Konkrete Einschränkung 1", "Einschränkung 2"],
 | 
			
		||||
  "alternatives": "Knappe Alternativen, falls dieses Element nicht verfügbar ist (Methoden und Tools anführen)."
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
WICHTIG: 
 | 
			
		||||
- Keine erneute Bewertung - nur detaillierte Erklärung der bereits bewerteten Eignung
 | 
			
		||||
- "limitations" soll spezifische technische/methodische Einschränkungen der Methode/des Tools auflisten
 | 
			
		||||
- "pros" soll die Stärken für diese spezifische Aufgabe hervorheben`;
 | 
			
		||||
WICHTIG:
 | 
			
		||||
- Keine erneute Bewertung – nur Erklärung/Anwendung.
 | 
			
		||||
- Behalten Sie die korrekte Bezeichnung (Methode/Tool) bei.`;
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  backgroundKnowledgeSelection: (userQuery: string, mode: string, selectedToolNames: string[], availableConcepts: any[]) => {
 | 
			
		||||
    return `Wählen Sie relevante forensische Konzepte für das Verständnis der empfohlenen Methodik.
 | 
			
		||||
    const conceptsList = availableConcepts.slice(0, 15).map((concept: any) => `- ${concept.name}: ${(concept.description || '').replace(/\s+/g, ' ').trim().slice(0, 80)}…`).join('\n');
 | 
			
		||||
    return `Wählen Sie 2–4 forensische Konzepte, die für die Anwendung der empfohlenen Elemente (Methoden + Tools) wesentlich sind.
 | 
			
		||||
 | 
			
		||||
${mode === 'workflow' ? 'SZENARIO' : 'PROBLEM'}: "${userQuery}"
 | 
			
		||||
EMPFOHLENE TOOLS: ${selectedToolNames.join(', ')}
 | 
			
		||||
EMPFOHLENE ELEMENTE: ${selectedToolNames.join(', ')}
 | 
			
		||||
 | 
			
		||||
VERFÜGBARE KONZEPTE:
 | 
			
		||||
${availableConcepts.slice(0, 15).map((concept: any) => `- ${concept.name}: ${concept.description.slice(0, 80)}...`).join('\n')}
 | 
			
		||||
${conceptsList}
 | 
			
		||||
 | 
			
		||||
Wählen Sie 2-4 Konzepte aus, die für das Verständnis der forensischen Methodik essentiell sind.
 | 
			
		||||
 | 
			
		||||
Antworten Sie AUSSCHLIESSLICH mit diesem JSON-Format:
 | 
			
		||||
ANTWORT NUR ALS JSON (Schema UNVERÄNDERT):
 | 
			
		||||
[
 | 
			
		||||
  {
 | 
			
		||||
    "conceptName": "Exakter Konzept-Name",
 | 
			
		||||
    "relevance": "Forensische Relevanz: Warum dieses Konzept für das Verständnis der Methodik kritisch ist"
 | 
			
		||||
    "relevance": "Knappe Begründung, warum dieses Konzept für das Verständnis der Methodik/Tools kritisch ist (UI-tauglich)."
 | 
			
		||||
  }
 | 
			
		||||
]`;
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  finalRecommendations: (isWorkflow: boolean, userQuery: string, selectedToolNames: string[]) => {
 | 
			
		||||
    const prompt = isWorkflow ? 
 | 
			
		||||
      `Erstellen Sie eine Workflow-Empfehlung basierend auf DFIR-Prinzipien.
 | 
			
		||||
    if (isWorkflow) {
 | 
			
		||||
      return `Erstellen Sie einen knappen, methodisch korrekten WORKFLOW-Fließtext (max. 120 Wörter), der EXPLIZIT eine Mischung aus Methoden und Tools nutzt.
 | 
			
		||||
 | 
			
		||||
SZENARIO: "${userQuery}"
 | 
			
		||||
AUSGEWÄHLTE TOOLS: ${selectedToolNames.join(', ') || 'Keine Tools ausgewählt'}
 | 
			
		||||
AUSGEWÄHLTE ELEMENTE: ${selectedToolNames.join(', ') || 'Keine Auswahl'}
 | 
			
		||||
 | 
			
		||||
Erstellen Sie konkrete methodische Workflow-Schritte für dieses spezifische Szenario unter Berücksichtigung forensischer Best Practices, Objektivität und rechtlicher Verwertbarkeit.
 | 
			
		||||
Vorgaben: klare Phasen (Datensammlung → Auswertung → Analyse → Bericht), Beweisführung/Chain of Custody, Reproduzierbarkeit. Sprache präzise und UI-tauglich. Keine Listen/Markdown.`;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
WICHTIG: Antworten Sie NUR in fließendem deutschen Text ohne Listen oder Markdown. Maximum 120 Wörter.` :
 | 
			
		||||
      
 | 
			
		||||
      `Erstellen Sie wichtige methodische Überlegungen für die korrekte Methoden-/Tool-Anwendung.
 | 
			
		||||
    return `Formulieren Sie kritische ÜBERLEGUNGEN (max. 140 Wörter) zur korrekten Anwendung der empfohlenen Elemente (Methoden + Tools).
 | 
			
		||||
 | 
			
		||||
PROBLEM: "${userQuery}"
 | 
			
		||||
EMPFOHLENE TOOLS: ${selectedToolNames.join(', ') || 'Keine Methoden/Tools ausgewählt'}
 | 
			
		||||
EMPFOHLENE ELEMENTE: ${selectedToolNames.join(', ') || 'Keine Auswahl'}
 | 
			
		||||
 | 
			
		||||
Geben Sie kritische methodische Überlegungen, Validierungsanforderungen und Qualitätssicherungsmaßnahmen für die korrekte Anwendung der empfohlenen Methoden/Tools.
 | 
			
		||||
 | 
			
		||||
WICHTIG: Antworten Sie NUR in fließendem deutschen Text ohne Listen oder Markdown. Maximum 100 Wörter.`;
 | 
			
		||||
 | 
			
		||||
    return prompt;
 | 
			
		||||
Fokus: Validierung/Qualitätssicherung, Risiken (FP/FN), Dokumentation/Reporting. Stil deutsch, ohne Listen/Markdown, UI-tauglich, mit mehr technischen Details.`;
 | 
			
		||||
  }
 | 
			
		||||
} as const;
 | 
			
		||||
 | 
			
		||||
@ -241,4 +232,4 @@ export function getPrompt(promptKey: keyof typeof AI_PROMPTS, ...args: any[]): s
 | 
			
		||||
    console.error(`[PROMPTS] Error generating prompt ${promptKey}:`, error);
 | 
			
		||||
    return 'Error: Failed to generate prompt';
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user