Backend gaps: missing data for full UI mock parity #90
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
The UI has been aligned with the design system mock pages, but several mock features require backend data that doesn't exist yet. This issue tracks the remaining backend gaps needed for full visual parity.
1. Latency percentile breakdown (P50 / P95 / P99)
Mock page:
/routes— "Latency Percentiles" stat card shows P50, P95, P99 with deltasCurrent: Only P99 is computed via
approx_percentile(0.99, ...)in continuous aggregatesNeeded:
stats_1m_all,stats_1m_route,stats_1m_appcontinuous aggregatesExecutionStatsresponse:p50LatencyMs,p95LatencyMsalongside existingp99LatencyMs2. Per-route timeseries data
Mock page:
/routes— charts show multi-series with per-app legends (e.g., order-service, payment-svc, shipment-svc)Current: Timeseries endpoint returns a single aggregated series, not broken down by route or app
Needed:
GET /search/stats/timeseries?groupBy=routeorgroupBy=application3. Active/stopped route counts
Mock page:
/routes— "Active Routes" stat card shows7 of 7with0 stoppedand a pie chart breakdownCurrent:
activeCountin stats response is not reliably populatedNeeded:
activeRoutesandtotalRoutesin stats or catalog response4. In-flight exchange count
Mock page:
/routes— "In-Flight Exchanges" card shows current count with high-water markCurrent: Shows
0— the value comes fromactiveCountwhich is not computedNeeded:
WHERE status = 'RUNNING')InflightExchanges)5. Application log streaming
Mock page:
/agents/:appId/:instanceId— "Application Log" section with formatted log entries (timestamp, level, logger, message) and filter tabs (All/Warnings/Errors)Current: Placeholder "Application log streaming is not yet available"
Needed:
6. Agent
groupfield rename toapplicationContext: The execution data layer was renamed from
groupName→applicationName(DB columns, Java fields, API params). However, the agent registry still usesgroupterminology:AgentInfo.group()— the agent's application nameGET /agentsresponse usesgroupfielda.groupNeeded:
AgentInfo.group()→AgentInfo.applicationName()(orapplication())GET /agentsresponse field fromgrouptoapplicationNamea.group→a.applicationName)cameleer3-commonif the registration payload usesgroupPriority
Items 1-4 are data enrichment — moderate effort, high UI impact.
Item 5 is a new feature — high effort, can be deferred.
Item 6 is a terminology cleanup — low effort, should be done for consistency.
Status update (2026-04-03):
Completed
POST /api/v1/data/logsendpoint + ClickHouselogstable implementedAgentInfousesapplicationId, API responses updatedRouteMetricsControllergenerates per-route sparkline data with configurable bucketsPartially done
quantileState(0.5)andquantileState(0.95)to MVs.Still open