Update 11 - Bugfix Recherche-Gate
release-tag / release-image (push) Successful in 2m35s

This commit is contained in:
2026-08-06 10:07:59 +02:00
parent 87364f918a
commit d088eb0a47
11 changed files with 457 additions and 46 deletions
+15 -3
View File
@@ -2899,7 +2899,10 @@
if (evt.metadata?.research_round !== undefined || evt.metadata?.round !== undefined) meta.push(`Runde ${Number(evt.metadata.research_round ?? evt.metadata.round)}`);
if (evt.metadata?.question_count !== undefined) meta.push(`${Number(evt.metadata.question_count)} Forschungsfragen`);
if (evt.metadata?.candidate_count !== undefined) meta.push(`${Number(evt.metadata.candidate_count)} Kandidaten`);
if (evt.metadata?.eligible_count !== undefined) meta.push(`${Number(evt.metadata.eligible_count)} fachlich geeignet`);
if (evt.metadata?.eligible_count !== undefined) meta.push(`${Number(evt.metadata.eligible_count)} vorabrufgeeignet`);
if (evt.metadata?.strict_eligible_count !== undefined) meta.push(`${Number(evt.metadata.strict_eligible_count)} strikt geeignet`);
if (evt.metadata?.exploration_eligible_count !== undefined) meta.push(`${Number(evt.metadata.exploration_eligible_count)} explorativ geeignet`);
if (evt.metadata?.exploration_selected_count !== undefined) meta.push(`${Number(evt.metadata.exploration_selected_count)} Explorationsabrufe`);
if (evt.metadata?.selected_count !== undefined) meta.push(`${Number(evt.metadata.selected_count)} zum Volltextabruf`);
if (evt.metadata?.gate_rejected_count !== undefined) meta.push(`${Number(evt.metadata.gate_rejected_count)} am Gate verworfen`);
if (evt.metadata?.duplicate_skipped_count) meta.push(`${Number(evt.metadata.duplicate_skipped_count)} bereits geprüft`);
@@ -2944,6 +2947,7 @@
if (evt.metadata?.comparisons) meta.push(`${Number(evt.metadata.comparisons).toLocaleString('de-DE')} Vergleiche`);
if (evt.metadata?.candidate_comparisons) meta.push(`${Number(evt.metadata.candidate_comparisons).toLocaleString('de-DE')} Vergleiche`);
if (evt.metadata?.threshold !== undefined) meta.push(`Schwelle ${Math.round(Number(evt.metadata.threshold) * 100)}%`);
if (evt.metadata?.prefetch_minimum_relevance !== undefined) meta.push(`Vorabruf ab ${Math.round(Number(evt.metadata.prefetch_minimum_relevance) * 100)}%`);
if ((evt.node_ids || []).length) meta.push(`${evt.node_ids.length} aktive Knoten`);
if ((evt.edge_ids || []).length) meta.push(`${evt.edge_ids.length} aktive Kanten`);
if (evt.metadata?.ticket_id) meta.push(`Ticket ${evt.metadata.ticket_id}`);
@@ -2960,8 +2964,16 @@
} else if (evt.type === 'query.started' && evt.query) {
message = `${evt.source === 'agent' ? 'Agent' : evt.source === 'knowledgebase' ? 'Knowledgebase' : 'Brain'} verarbeitet eine Anfrage.`;
}
const sourceTitles = Array.isArray(evt.metadata?.result_titles) ? evt.metadata.result_titles : Array.isArray(evt.metadata?.selected_titles) ? evt.metadata.selected_titles : evt.metadata?.result_title ? [evt.metadata.result_title] : [];
const sources = sourceTitles.map(String).slice(0, 4);
const candidateDecisions = Array.isArray(evt.metadata?.candidate_decisions) ? evt.metadata.candidate_decisions : [];
const candidateModeLabel = mode => ({strict: 'STRIKT', exploration: 'EXPLORATION', deferred: 'ZURÜCKGESTELLT', rejected: 'VERWORFEN', duplicate: 'BEREITS GEPRÜFT'}[String(mode)] || String(mode || '').toUpperCase());
const candidateLabels = candidateDecisions.map(candidate => {
const relevance = Math.round(Number(candidate?.relevance || 0) * 100);
const quality = Math.round(Number(candidate?.source_quality_score || 0) * 100);
const reason = Array.isArray(candidate?.reasons) && candidate.reasons.length ? ` · ${String(candidate.reasons[0])}` : '';
return `${candidateModeLabel(candidate?.mode)} · R ${relevance}% · Q ${quality}% · ${String(candidate?.title || candidate?.domain || 'Quelle')}${reason}`;
});
const sourceTitles = candidateLabels.length ? candidateLabels : Array.isArray(evt.metadata?.result_titles) ? evt.metadata.result_titles : Array.isArray(evt.metadata?.selected_titles) ? evt.metadata.selected_titles : evt.metadata?.result_title ? [evt.metadata.result_title] : [];
const sources = sourceTitles.map(String).slice(0, candidateLabels.length ? 8 : 4);
return {time, title, message, meta, query: eventQuery, regions, sources, error: evt.metadata?.error ? String(evt.metadata.error) : '', endpoint: evt.metadata?.searxng_base_url ? String(evt.metadata.searxng_base_url) : '', cls: evt.type?.includes('think') || evt.type?.startsWith('article.') ? (evt.type?.includes('research') ? 'research' : 'think') : evt.type?.includes('research') ? 'research' : evt.type === 'graph.updated' || evt.type === 'scan.started' || evt.type?.startsWith('glpi.kb') || evt.type?.startsWith('persistence.') ? 'graph' : evt.source === 'agent' ? 'agent' : ''};
}