This commit is contained in:
overcuriousity
2025-08-17 17:27:08 +02:00
parent 5ecbabea90
commit bcd92af8a0
10 changed files with 18 additions and 77 deletions

View File

@@ -1185,7 +1185,6 @@ class AIQueryInterface {
keyInsights.push('Mehrheit der Analyseschritte mit hoher Sicherheit');
}
// Calculate meaningful insights based on response quality
const responseQualityEntries = auditTrail.filter(e =>
e.metadata?.responseConfidence && e.metadata.finalConfidence
);
@@ -1204,7 +1203,6 @@ class AIQueryInterface {
potentialIssues.push(`${lowConfidenceSteps} Analyseschritte mit niedriger Konfidenz`);
}
// Check for truncated responses
const truncatedResponses = auditTrail.filter(e =>
e.output && typeof e.output === 'object' &&
e.output.response && e.output.response.includes('...')
@@ -1230,7 +1228,6 @@ class AIQueryInterface {
medium: mediumConfidenceSteps,
low: lowConfidenceSteps
}
// aiTransparency removed entirely
},
analysisQuality,
keyInsights,
@@ -1339,7 +1336,6 @@ class AIQueryInterface {
const details = [];
const metadata = entry.metadata || {};
// The backend now provides meaningful inputSummary and outputSummary
if (metadata.inputSummary && metadata.inputSummary !== 'Leer') {
details.push(`<div class="detail-item"><strong>Eingabe:</strong> ${escapeHtml(metadata.inputSummary)}</div>`);
}
@@ -1348,12 +1344,10 @@ class AIQueryInterface {
details.push(`<div class="detail-item"><strong>Ausgabe:</strong> ${escapeHtml(metadata.outputSummary)}</div>`);
}
// Show meaningful reasoning (backend now avoids generic "completed with X%" messages)
if (metadata.reasoning && !metadata.reasoning.includes('completed with')) {
details.push(`<div class="detail-item"><strong>Begründung:</strong> ${escapeHtml(metadata.reasoning)}</div>`);
}
// Action-specific additional details
if (entry.action === 'similarity-search' && metadata.similarityScores) {
const topScores = Object.entries(metadata.similarityScores)
.sort(([,a], [,b]) => (b) - (a))
@@ -1597,11 +1591,9 @@ class AIQueryInterface {
embeddingsSimilarities: {}
};
// Enhanced export structure with proper audit trail handling
const exportData = {
metadata: {
timestamp: new Date().toISOString(),
version: "1.1", // Increment version for improved structure
toolsDataHash: toolsDataHash,
aiModel: aiModel,
aiParameters: aiParameters,
@@ -1609,16 +1601,13 @@ class AIQueryInterface {
mode: this.currentMode,
processingStats: processingStats,
exportedBy: 'ForensicPathways',
auditTrailVersion: '1.1' // Track audit trail format version
},
recommendation: {
// Export recommendation without auditTrail to avoid duplication
...this.currentRecommendation,
auditTrail: undefined // Remove from recommendation as it's at top level
auditTrail: undefined
},
auditTrail: this.currentRecommendation.auditTrail || [], // Extract to top level
auditTrail: this.currentRecommendation.auditTrail || [],
rawContext: rawContext,
// Add validation checksum for integrity
checksum: this.calculateDataChecksum(this.currentRecommendation)
};
@@ -1647,7 +1636,6 @@ class AIQueryInterface {
if (!data) return 'empty';
try {
// Simple checksum based on key data properties
const keyData = {
recommendedToolsCount: data.recommended_tools?.length || 0,
backgroundKnowledgeCount: data.background_knowledge?.length || 0,
@@ -1661,7 +1649,7 @@ class AIQueryInterface {
for (let i = 0; i < dataString.length; i++) {
const char = dataString.charCodeAt(i);
hash = ((hash << 5) - hash) + char;
hash = hash & hash; // Convert to 32-bit integer
hash = hash & hash;
}
return Math.abs(hash).toString(36);
} catch (error) {
@@ -1680,14 +1668,13 @@ class AIQueryInterface {
typeof data.metadata.timestamp === 'string' &&
data.recommendation &&
typeof data.recommendation === 'object' &&
Array.isArray(data.auditTrail) // Audit trail at top level
Array.isArray(data.auditTrail)
);
if (!isValid) {
return false;
}
// Enhanced validation for audit trail structure
if (data.auditTrail.length > 0) {
const sampleEntry = data.auditTrail[0];
const hasRequiredFields = !!(
@@ -1718,10 +1705,9 @@ class AIQueryInterface {
this.showUploadedBanner(data.metadata);
// Fix: Ensure audit trail is available in recommendation for restoreAIResults
this.currentRecommendation = {
...data.recommendation,
auditTrail: data.auditTrail // Restore audit trail to recommendation object
auditTrail: data.auditTrail
};
this.showResults();
@@ -1813,7 +1799,6 @@ class AIQueryInterface {
throw new Error('Ungültiges Analyse-Dateiformat');
}
// Store audit trail separately for restore function
this.uploadedAuditTrail = data.auditTrail;
console.log('[AI Interface] Valid previous analysis file uploaded:', {
@@ -2282,7 +2267,6 @@ class AIQueryInterface {
if (this.currentRecommendation && this.elements.results) {
this.showResults();
// Check both locations for audit trail for backward compatibility
const auditTrail = this.currentRecommendation.auditTrail || this.uploadedAuditTrail;
if (auditTrail && Array.isArray(auditTrail) && auditTrail.length > 0) {

View File

@@ -1,5 +1,5 @@
---
// src/components/ContributionButton.astro - CLEANED: Removed duplicate auth script
// src/components/ContributionButton.astro
export interface Props {
type: 'edit' | 'new' | 'write';
toolName?: string;

View File

@@ -4,7 +4,6 @@ import { getToolsData } from '../utils/dataService.js';
const data = await getToolsData();
const scenarios = data.scenarios || [];
// Configuration
const maxDisplayed = 9;
const displayedScenarios = scenarios.slice(0, maxDisplayed);
---