dynamic yaml loading part 1
This commit is contained in:
		
							parent
							
								
									d6e1023e40
								
							
						
					
					
						commit
						69819eba7d
					
				@ -8,6 +8,7 @@ const yamlPath = path.join(process.cwd(), 'src/data/tools.yaml');
 | 
			
		||||
const yamlContent = await fs.readFile(yamlPath, 'utf8');
 | 
			
		||||
const data = load(yamlContent) as any;
 | 
			
		||||
const tools = data.tools;
 | 
			
		||||
const phases = data.phases;
 | 
			
		||||
---
 | 
			
		||||
 | 
			
		||||
<!-- AI Query Interface -->
 | 
			
		||||
@ -87,7 +88,7 @@ const tools = data.tools;
 | 
			
		||||
  </div>
 | 
			
		||||
</section>
 | 
			
		||||
 | 
			
		||||
<script define:vars={{ tools }}>
 | 
			
		||||
<script define:vars={{ tools, phases }}>
 | 
			
		||||
document.addEventListener('DOMContentLoaded', () => {
 | 
			
		||||
  const aiInterface = document.getElementById('ai-interface');
 | 
			
		||||
  const aiInput = document.getElementById('ai-query-input');
 | 
			
		||||
@ -278,13 +279,13 @@ document.addEventListener('DOMContentLoaded', () => {
 | 
			
		||||
  function displayResults(recommendation, originalQuery) {
 | 
			
		||||
    // Group tools by phase
 | 
			
		||||
    const toolsByPhase = {};
 | 
			
		||||
    const phaseOrder = ['data-collection', 'examination', 'analysis', 'reporting'];
 | 
			
		||||
    const phaseNames = {
 | 
			
		||||
      'data-collection': 'Datensammlung',
 | 
			
		||||
      'examination': 'Auswertung', 
 | 
			
		||||
      'analysis': 'Analyse',
 | 
			
		||||
      'reporting': 'Bericht & Präsentation'
 | 
			
		||||
    };
 | 
			
		||||
    
 | 
			
		||||
    // Replace hardcoded values with dynamic data from YAML
 | 
			
		||||
    const phaseOrder = phases.filter(phase => phase.id !== 'collaboration-general').map(phase => phase.id);
 | 
			
		||||
    const phaseNames = phases.reduce((acc, phase) => {
 | 
			
		||||
      acc[phase.id] = phase.name;
 | 
			
		||||
      return acc;
 | 
			
		||||
    }, {});
 | 
			
		||||
 | 
			
		||||
    // Initialize phases
 | 
			
		||||
    phaseOrder.forEach(phase => {
 | 
			
		||||
 | 
			
		||||
@ -825,11 +825,16 @@ domains:
 | 
			
		||||
phases:
 | 
			
		||||
  - id: data-collection
 | 
			
		||||
    name: Datensammlung
 | 
			
		||||
    description: "Imaging, Acquisition, Remote Collection Tools"
 | 
			
		||||
  - id: examination
 | 
			
		||||
    name: Auswertung
 | 
			
		||||
    description: "Parsing, Extraction, Initial Analysis Tools"
 | 
			
		||||
  - id: analysis
 | 
			
		||||
    name: Analyse
 | 
			
		||||
    description: "Deep Analysis, Correlation, Visualization Tools"
 | 
			
		||||
  - id: reporting
 | 
			
		||||
    name: Bericht & Präsentation
 | 
			
		||||
    description: "Documentation, Visualization, Presentation Tools (z.B. QGIS für Geodaten, Timeline-Tools)"
 | 
			
		||||
  - id: collaboration-general
 | 
			
		||||
    name: Übergreifend & Kollaboration
 | 
			
		||||
    name: Übergreifend & Kollaboration
 | 
			
		||||
    description: "Cross-cutting tools and collaboration platforms"
 | 
			
		||||
@ -107,6 +107,11 @@ function createSystemPrompt(toolsData: any): string {
 | 
			
		||||
    `- ${domain.id}: ${domain.name}`
 | 
			
		||||
  ).join('\n');
 | 
			
		||||
 | 
			
		||||
  const phaseDescriptions = toolsData.phases
 | 
			
		||||
    .filter((phase: any) => phase.id !== 'collaboration-general')
 | 
			
		||||
    .map((phase: any) => `- ${phase.name}: ${phase.description || 'Tools for this phase'}`)
 | 
			
		||||
    .join('\n');
 | 
			
		||||
 | 
			
		||||
  return `Du bist ein DFIR (Digital Forensics and Incident Response) Experte, der Ermittlern bei der Toolauswahl hilft.
 | 
			
		||||
 | 
			
		||||
VERFÜGBARE TOOLS DATABASE:
 | 
			
		||||
@ -128,10 +133,7 @@ WICHTIGE REGELN:
 | 
			
		||||
7. Bewerbe NIEMALS Proprietäre Software fälschlicherweise als Open-Source-Tools, erkenne aber an, falls diese besser geeignet sein könnte.
 | 
			
		||||
 | 
			
		||||
TOOL-AUSWAHL NACH PHASE:
 | 
			
		||||
- Datensammlung: Imaging, Acquisition, Remote Collection Tools
 | 
			
		||||
- Auswertung: Parsing, Extraction, Initial Analysis Tools  
 | 
			
		||||
- Analyse: Deep Analysis, Correlation, Visualization Tools
 | 
			
		||||
- Berichterstattung: Documentation, Visualization, Presentation Tools (z.B. QGIS für Geodaten, Timeline-Tools)
 | 
			
		||||
${phaseDescriptions}
 | 
			
		||||
 | 
			
		||||
ANTWORT-FORMAT (strict JSON):
 | 
			
		||||
{
 | 
			
		||||
@ -140,7 +142,7 @@ ANTWORT-FORMAT (strict JSON):
 | 
			
		||||
    {
 | 
			
		||||
      "name": "EXAKTER Name aus der Database",
 | 
			
		||||
      "priority": "high|medium|low", 
 | 
			
		||||
      "phase": "data-collection|examination|analysis|reporting",
 | 
			
		||||
      "phase": "${toolsData.phases.filter((p: any) => p.id !== 'collaboration-general').map((p: any) => p.id).join('|')}",
 | 
			
		||||
      "justification": "Warum dieses Tool für diese Phase und Szenario geeignet ist"
 | 
			
		||||
    }
 | 
			
		||||
  ],
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user