Fix status filter OR logic and add P99/active stats endpoint
All checks were successful
CI / build (push) Successful in 1m1s
CI / docker (push) Successful in 47s
CI / deploy (push) Successful in 29s

Status filter now parses comma-separated values into SQL IN clause
instead of exact match, so filtering by multiple statuses works.

Added GET /api/v1/search/stats returning P99 latency (last hour) and
active execution count, wired into the UI stat cards with 10s polling.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
hsiegeln
2026-03-13 17:34:11 +01:00
parent c1f2ddb3f5
commit 3f98467ba5
8 changed files with 88 additions and 5 deletions

View File

@@ -0,0 +1,9 @@
package com.cameleer3.server.core.search;
/**
* Aggregate execution statistics.
*
* @param p99LatencyMs 99th percentile duration in milliseconds (last hour)
* @param activeCount number of currently running executions
*/
public record ExecutionStats(long p99LatencyMs, long activeCount) {}

View File

@@ -24,4 +24,11 @@ public interface SearchEngine {
* @return total number of matching executions
*/
long count(SearchRequest request);
/**
* Compute aggregate stats: P99 latency and count of currently running executions.
*
* @return execution stats
*/
ExecutionStats stats();
}

View File

@@ -28,4 +28,11 @@ public class SearchService {
public long count(SearchRequest request) {
return engine.count(request);
}
/**
* Compute aggregate execution stats (P99 latency, active count).
*/
public ExecutionStats stats() {
return engine.stats();
}
}