feat: include tap attributes in cmd-K full-text search
All checks were successful
CI / cleanup-branch (push) Has been skipped
CI / build (push) Successful in 1m4s
CI / docker (push) Successful in 1m13s
CI / deploy-feature (push) Has been skipped
CI / deploy (push) Successful in 36s

Add attributes_text flattened field to OpenSearch indexing for both
execution and processor levels. Include in full-text search queries,
wildcard matching, and highlighting. Merge processor-level attributes
into ExecutionSummary. Add 'attribute' category to CommandPalette
(design-system 0.1.17) with per-key-value results in the search UI.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
hsiegeln
2026-03-27 08:13:58 +01:00
parent ea88042ef5
commit 62709ce80b
4 changed files with 67 additions and 15 deletions

View File

@@ -140,8 +140,30 @@ function LayoutContent() {
serverFiltered: true,
matchContext: e.highlight ?? undefined,
}));
return [...catalogData, ...exchangeItems];
}, [catalogData, exchangeResults]);
const attributeItems: SearchResult[] = [];
if (debouncedQuery) {
const q = debouncedQuery.toLowerCase();
for (const e of exchangeResults?.data || []) {
if (!e.attributes) continue;
for (const [key, value] of Object.entries(e.attributes as Record<string, string>)) {
if (key.toLowerCase().includes(q) || String(value).toLowerCase().includes(q)) {
attributeItems.push({
id: `${e.executionId}-attr-${key}`,
category: 'attribute' as const,
title: `${key} = "${value}"`,
badges: [{ label: e.status, color: statusToColor(e.status) }],
meta: `${e.executionId} · ${e.routeId} · ${e.applicationName ?? ''}`,
path: `/exchanges/${e.executionId}`,
serverFiltered: true,
});
}
}
}
}
return [...catalogData, ...exchangeItems, ...attributeItems];
}, [catalogData, exchangeResults, debouncedQuery]);
const breadcrumb = useMemo(() => {
const LABELS: Record<string, string> = {