Move failed count and avg duration from page-derived to backend stats
All stat card values now come from the /search/stats endpoint which queries the full time window, not just the current page of results. Consolidated into a single ClickHouse query for efficiency. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1049,6 +1049,14 @@
|
||||
"ExecutionStats": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"failedCount": {
|
||||
"type": "integer",
|
||||
"format": "int64"
|
||||
},
|
||||
"avgDurationMs": {
|
||||
"type": "integer",
|
||||
"format": "int64"
|
||||
},
|
||||
"p99LatencyMs": {
|
||||
"type": "integer",
|
||||
"format": "int64"
|
||||
|
||||
2
ui/src/api/schema.d.ts
vendored
2
ui/src/api/schema.d.ts
vendored
@@ -217,6 +217,8 @@ export interface ProcessorNode {
|
||||
export type ProcessorSnapshot = Record<string, string>;
|
||||
|
||||
export interface ExecutionStats {
|
||||
failedCount: number;
|
||||
avgDurationMs: number;
|
||||
p99LatencyMs: number;
|
||||
activeCount: number;
|
||||
}
|
||||
|
||||
@@ -24,12 +24,6 @@ export function ExecutionExplorer() {
|
||||
const total = data?.total ?? 0;
|
||||
const results = data?.data ?? [];
|
||||
|
||||
// Derive stats from current search results
|
||||
const failedCount = results.filter((r) => r.status === 'FAILED').length;
|
||||
const avgDuration = results.length > 0
|
||||
? Math.round(results.reduce((sum, r) => sum + r.durationMs, 0) / results.length)
|
||||
: 0;
|
||||
|
||||
const showFrom = total > 0 ? offset + 1 : 0;
|
||||
const showTo = Math.min(offset + limit, total);
|
||||
|
||||
@@ -50,8 +44,8 @@ export function ExecutionExplorer() {
|
||||
{/* Stats Bar */}
|
||||
<div className={styles.statsBar}>
|
||||
<StatCard label="Total Matches" value={total.toLocaleString()} accent="amber" change={`from current search`} sparkData={sparkTotal} />
|
||||
<StatCard label="Avg Duration" value={`${avgDuration.toLocaleString()}ms`} accent="cyan" sparkData={sparkAvgDuration} />
|
||||
<StatCard label="Failed (page)" value={failedCount.toLocaleString()} accent="rose" sparkData={sparkFailed} />
|
||||
<StatCard label="Avg Duration" value={stats ? `${stats.avgDurationMs.toLocaleString()}ms` : '--'} accent="cyan" sparkData={sparkAvgDuration} />
|
||||
<StatCard label="Failed" value={stats ? stats.failedCount.toLocaleString() : '--'} accent="rose" sparkData={sparkFailed} />
|
||||
<StatCard label="P99 Latency" value={stats ? `${stats.p99LatencyMs.toLocaleString()}ms` : '--'} accent="green" sparkData={sparkP99} />
|
||||
<StatCard label="In-Flight" value={stats ? stats.activeCount.toLocaleString() : '--'} accent="blue" change="running executions" sparkData={sparkActive} />
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user