chore: regenerate OpenAPI types and remove type assertion hacks
Regenerated schema.d.ts from live backend — now includes slaCompliance on ExecutionStats/RouteMetrics, filterMatched/duplicateMessage on ProcessorNode, and all new dashboard endpoints (timeseries/by-app, timeseries/by-route, punchcard, errors/top, app-settings). Removed Record<string, unknown> casts that were working around the stale schema. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
File diff suppressed because one or more lines are too long
486
ui/src/api/schema.d.ts
vendored
486
ui/src/api/schema.d.ts
vendored
@@ -122,6 +122,25 @@ export interface paths {
|
||||
patch?: never;
|
||||
trace?: never;
|
||||
};
|
||||
"/admin/app-settings/{appId}": {
|
||||
parameters: {
|
||||
query?: never;
|
||||
header?: never;
|
||||
path?: never;
|
||||
cookie?: never;
|
||||
};
|
||||
/** Get settings for a specific application (returns defaults if not configured) */
|
||||
get: operations["getByAppId"];
|
||||
/** Create or update settings for an application */
|
||||
put: operations["update"];
|
||||
post?: never;
|
||||
/** Delete application settings (reverts to defaults) */
|
||||
delete: operations["delete"];
|
||||
options?: never;
|
||||
head?: never;
|
||||
patch?: never;
|
||||
trace?: never;
|
||||
};
|
||||
"/search/executions": {
|
||||
parameters: {
|
||||
query?: never;
|
||||
@@ -594,7 +613,7 @@ export interface paths {
|
||||
path?: never;
|
||||
cookie?: never;
|
||||
};
|
||||
/** Aggregate execution stats (P99 latency, active count) */
|
||||
/** Aggregate execution stats (P99 latency, active count, SLA compliance) */
|
||||
get: operations["stats"];
|
||||
put?: never;
|
||||
post?: never;
|
||||
@@ -621,6 +640,74 @@ export interface paths {
|
||||
patch?: never;
|
||||
trace?: never;
|
||||
};
|
||||
"/search/stats/timeseries/by-route": {
|
||||
parameters: {
|
||||
query?: never;
|
||||
header?: never;
|
||||
path?: never;
|
||||
cookie?: never;
|
||||
};
|
||||
/** Timeseries grouped by route for an application */
|
||||
get: operations["timeseriesByRoute"];
|
||||
put?: never;
|
||||
post?: never;
|
||||
delete?: never;
|
||||
options?: never;
|
||||
head?: never;
|
||||
patch?: never;
|
||||
trace?: never;
|
||||
};
|
||||
"/search/stats/timeseries/by-app": {
|
||||
parameters: {
|
||||
query?: never;
|
||||
header?: never;
|
||||
path?: never;
|
||||
cookie?: never;
|
||||
};
|
||||
/** Timeseries grouped by application */
|
||||
get: operations["timeseriesByApp"];
|
||||
put?: never;
|
||||
post?: never;
|
||||
delete?: never;
|
||||
options?: never;
|
||||
head?: never;
|
||||
patch?: never;
|
||||
trace?: never;
|
||||
};
|
||||
"/search/stats/punchcard": {
|
||||
parameters: {
|
||||
query?: never;
|
||||
header?: never;
|
||||
path?: never;
|
||||
cookie?: never;
|
||||
};
|
||||
/** Transaction punchcard: weekday x hour grid (rolling 7 days) */
|
||||
get: operations["punchcard"];
|
||||
put?: never;
|
||||
post?: never;
|
||||
delete?: never;
|
||||
options?: never;
|
||||
head?: never;
|
||||
patch?: never;
|
||||
trace?: never;
|
||||
};
|
||||
"/search/errors/top": {
|
||||
parameters: {
|
||||
query?: never;
|
||||
header?: never;
|
||||
path?: never;
|
||||
cookie?: never;
|
||||
};
|
||||
/** Top N errors with velocity trend */
|
||||
get: operations["topErrors"];
|
||||
put?: never;
|
||||
post?: never;
|
||||
delete?: never;
|
||||
options?: never;
|
||||
head?: never;
|
||||
patch?: never;
|
||||
trace?: never;
|
||||
};
|
||||
"/routes/metrics": {
|
||||
parameters: {
|
||||
query?: never;
|
||||
@@ -725,7 +812,7 @@ export interface paths {
|
||||
path?: never;
|
||||
cookie?: never;
|
||||
};
|
||||
/** Get exchange snapshot for a specific processor */
|
||||
/** Get exchange snapshot for a specific processor by index */
|
||||
get: operations["getProcessorSnapshot"];
|
||||
put?: never;
|
||||
post?: never;
|
||||
@@ -742,8 +829,8 @@ export interface paths {
|
||||
path?: never;
|
||||
cookie?: never;
|
||||
};
|
||||
/** Get exchange snapshot for a processor by processorId */
|
||||
get: operations["getProcessorSnapshotById"];
|
||||
/** Get exchange snapshot for a specific processor by processorId */
|
||||
get: operations["processorSnapshotById"];
|
||||
put?: never;
|
||||
post?: never;
|
||||
delete?: never;
|
||||
@@ -812,6 +899,26 @@ export interface paths {
|
||||
patch?: never;
|
||||
trace?: never;
|
||||
};
|
||||
"/config/{application}/processor-routes": {
|
||||
parameters: {
|
||||
query?: never;
|
||||
header?: never;
|
||||
path?: never;
|
||||
cookie?: never;
|
||||
};
|
||||
/**
|
||||
* Get processor to route mapping
|
||||
* @description Returns a map of processorId → routeId for all processors seen in this application
|
||||
*/
|
||||
get: operations["getProcessorRouteMapping"];
|
||||
put?: never;
|
||||
post?: never;
|
||||
delete?: never;
|
||||
options?: never;
|
||||
head?: never;
|
||||
patch?: never;
|
||||
trace?: never;
|
||||
};
|
||||
"/auth/oidc/config": {
|
||||
parameters: {
|
||||
query?: never;
|
||||
@@ -1092,6 +1199,23 @@ export interface paths {
|
||||
patch?: never;
|
||||
trace?: never;
|
||||
};
|
||||
"/admin/app-settings": {
|
||||
parameters: {
|
||||
query?: never;
|
||||
header?: never;
|
||||
path?: never;
|
||||
cookie?: never;
|
||||
};
|
||||
/** List all application settings */
|
||||
get: operations["getAll"];
|
||||
put?: never;
|
||||
post?: never;
|
||||
delete?: never;
|
||||
options?: never;
|
||||
head?: never;
|
||||
patch?: never;
|
||||
trace?: never;
|
||||
};
|
||||
"/admin/opensearch/indices/{name}": {
|
||||
parameters: {
|
||||
query?: never;
|
||||
@@ -1127,7 +1251,7 @@ export interface components {
|
||||
tracedProcessors?: {
|
||||
[key: string]: string;
|
||||
};
|
||||
logForwardingLevel?: string;
|
||||
applicationLogLevel?: string;
|
||||
taps?: components["schemas"]["TapDefinition"][];
|
||||
/** Format: int32 */
|
||||
tapVersion?: number;
|
||||
@@ -1135,6 +1259,10 @@ export interface components {
|
||||
[key: string]: boolean;
|
||||
};
|
||||
compressSuccess?: boolean;
|
||||
agentLogLevel?: string;
|
||||
routeSamplingRates?: {
|
||||
[key: string]: number;
|
||||
};
|
||||
};
|
||||
TapDefinition: {
|
||||
tapId?: string;
|
||||
@@ -1284,6 +1412,51 @@ export interface components {
|
||||
/** Format: uuid */
|
||||
parentGroupId?: string;
|
||||
};
|
||||
/** @description Per-application dashboard settings */
|
||||
AppSettingsRequest: {
|
||||
/**
|
||||
* Format: int32
|
||||
* @description SLA duration threshold in milliseconds
|
||||
*/
|
||||
slaThresholdMs: number;
|
||||
/**
|
||||
* Format: double
|
||||
* @description Error rate % threshold for warning (yellow) health dot
|
||||
*/
|
||||
healthErrorWarn: number;
|
||||
/**
|
||||
* Format: double
|
||||
* @description Error rate % threshold for critical (red) health dot
|
||||
*/
|
||||
healthErrorCrit: number;
|
||||
/**
|
||||
* Format: double
|
||||
* @description SLA compliance % threshold for warning (yellow) health dot
|
||||
*/
|
||||
healthSlaWarn: number;
|
||||
/**
|
||||
* Format: double
|
||||
* @description SLA compliance % threshold for critical (red) health dot
|
||||
*/
|
||||
healthSlaCrit: number;
|
||||
};
|
||||
AppSettings: {
|
||||
appId?: string;
|
||||
/** Format: int32 */
|
||||
slaThresholdMs?: number;
|
||||
/** Format: double */
|
||||
healthErrorWarn?: number;
|
||||
/** Format: double */
|
||||
healthErrorCrit?: number;
|
||||
/** Format: double */
|
||||
healthSlaWarn?: number;
|
||||
/** Format: double */
|
||||
healthSlaCrit?: number;
|
||||
/** Format: date-time */
|
||||
createdAt?: string;
|
||||
/** Format: date-time */
|
||||
updatedAt?: string;
|
||||
};
|
||||
SearchRequest: {
|
||||
status?: string;
|
||||
/** Format: date-time */
|
||||
@@ -1330,7 +1503,7 @@ export interface components {
|
||||
attributes: {
|
||||
[key: string]: string;
|
||||
};
|
||||
hasTraceData?: boolean;
|
||||
hasTraceData: boolean;
|
||||
};
|
||||
SearchResultExecutionSummary: {
|
||||
data: components["schemas"]["ExecutionSummary"][];
|
||||
@@ -1508,6 +1681,8 @@ export interface components {
|
||||
prevAvgDurationMs: number;
|
||||
/** Format: int64 */
|
||||
prevP99LatencyMs: number;
|
||||
/** Format: double */
|
||||
slaCompliance: number;
|
||||
};
|
||||
StatsTimeseries: {
|
||||
buckets: components["schemas"]["TimeseriesBucket"][];
|
||||
@@ -1526,6 +1701,28 @@ export interface components {
|
||||
/** Format: int64 */
|
||||
activeCount: number;
|
||||
};
|
||||
PunchcardCell: {
|
||||
/** Format: int32 */
|
||||
weekday?: number;
|
||||
/** Format: int32 */
|
||||
hour?: number;
|
||||
/** Format: int64 */
|
||||
totalCount?: number;
|
||||
/** Format: int64 */
|
||||
failedCount?: number;
|
||||
};
|
||||
TopError: {
|
||||
errorType?: string;
|
||||
routeId?: string;
|
||||
processorId?: string;
|
||||
/** Format: int64 */
|
||||
count?: number;
|
||||
/** Format: double */
|
||||
velocity?: number;
|
||||
trend?: string;
|
||||
/** Format: date-time */
|
||||
lastSeen?: string;
|
||||
};
|
||||
/** @description Aggregated route performance metrics */
|
||||
RouteMetrics: {
|
||||
routeId: string;
|
||||
@@ -1543,6 +1740,8 @@ export interface components {
|
||||
/** Format: double */
|
||||
throughputPerSec: number;
|
||||
sparkline: number[];
|
||||
/** Format: double */
|
||||
slaCompliance: number;
|
||||
};
|
||||
ProcessorMetrics: {
|
||||
processorId: string;
|
||||
@@ -1586,6 +1785,8 @@ export interface components {
|
||||
exchangeCount: number;
|
||||
/** Format: date-time */
|
||||
lastSeen: string;
|
||||
/** @description The from() endpoint URI, e.g. 'direct:processOrder' */
|
||||
fromEndpointUri: string;
|
||||
};
|
||||
/** @description Application log entry from OpenSearch */
|
||||
LogEntryResponse: {
|
||||
@@ -1627,12 +1828,12 @@ export interface components {
|
||||
attributes: {
|
||||
[key: string]: string;
|
||||
};
|
||||
errorType?: string;
|
||||
errorCategory?: string;
|
||||
rootCauseType?: string;
|
||||
rootCauseMessage?: string;
|
||||
traceId?: string;
|
||||
spanId?: string;
|
||||
errorType: string;
|
||||
errorCategory: string;
|
||||
rootCauseType: string;
|
||||
rootCauseMessage: string;
|
||||
traceId: string;
|
||||
spanId: string;
|
||||
};
|
||||
ProcessorNode: {
|
||||
processorId: string;
|
||||
@@ -1644,30 +1845,32 @@ export interface components {
|
||||
endTime: string;
|
||||
/** Format: int64 */
|
||||
durationMs: number;
|
||||
/** Format: int32 */
|
||||
loopIndex?: number;
|
||||
/** Format: int32 */
|
||||
loopSize?: number;
|
||||
/** Format: int32 */
|
||||
splitIndex?: number;
|
||||
/** Format: int32 */
|
||||
splitSize?: number;
|
||||
/** Format: int32 */
|
||||
multicastIndex?: number;
|
||||
errorMessage: string;
|
||||
errorStackTrace: string;
|
||||
attributes: {
|
||||
[key: string]: string;
|
||||
};
|
||||
resolvedEndpointUri?: string;
|
||||
errorType?: string;
|
||||
errorCategory?: string;
|
||||
rootCauseType?: string;
|
||||
rootCauseMessage?: string;
|
||||
errorHandlerType?: string;
|
||||
circuitBreakerState?: string;
|
||||
fallbackTriggered?: boolean;
|
||||
hasTraceData?: boolean;
|
||||
/** Format: int32 */
|
||||
loopIndex: number;
|
||||
/** Format: int32 */
|
||||
loopSize: number;
|
||||
/** Format: int32 */
|
||||
splitIndex: number;
|
||||
/** Format: int32 */
|
||||
splitSize: number;
|
||||
/** Format: int32 */
|
||||
multicastIndex: number;
|
||||
resolvedEndpointUri: string;
|
||||
errorType: string;
|
||||
errorCategory: string;
|
||||
rootCauseType: string;
|
||||
rootCauseMessage: string;
|
||||
errorHandlerType: string;
|
||||
circuitBreakerState: string;
|
||||
fallbackTriggered: boolean;
|
||||
filterMatched: boolean;
|
||||
duplicateMessage: boolean;
|
||||
hasTraceData: boolean;
|
||||
children: components["schemas"]["ProcessorNode"][];
|
||||
};
|
||||
DiagramLayout: {
|
||||
@@ -2527,6 +2730,74 @@ export interface operations {
|
||||
};
|
||||
};
|
||||
};
|
||||
getByAppId: {
|
||||
parameters: {
|
||||
query?: never;
|
||||
header?: never;
|
||||
path: {
|
||||
appId: string;
|
||||
};
|
||||
cookie?: never;
|
||||
};
|
||||
requestBody?: never;
|
||||
responses: {
|
||||
/** @description OK */
|
||||
200: {
|
||||
headers: {
|
||||
[name: string]: unknown;
|
||||
};
|
||||
content: {
|
||||
"*/*": components["schemas"]["AppSettings"];
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
update: {
|
||||
parameters: {
|
||||
query?: never;
|
||||
header?: never;
|
||||
path: {
|
||||
appId: string;
|
||||
};
|
||||
cookie?: never;
|
||||
};
|
||||
requestBody: {
|
||||
content: {
|
||||
"application/json": components["schemas"]["AppSettingsRequest"];
|
||||
};
|
||||
};
|
||||
responses: {
|
||||
/** @description OK */
|
||||
200: {
|
||||
headers: {
|
||||
[name: string]: unknown;
|
||||
};
|
||||
content: {
|
||||
"*/*": components["schemas"]["AppSettings"];
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
delete: {
|
||||
parameters: {
|
||||
query?: never;
|
||||
header?: never;
|
||||
path: {
|
||||
appId: string;
|
||||
};
|
||||
cookie?: never;
|
||||
};
|
||||
requestBody?: never;
|
||||
responses: {
|
||||
/** @description OK */
|
||||
200: {
|
||||
headers: {
|
||||
[name: string]: unknown;
|
||||
};
|
||||
content?: never;
|
||||
};
|
||||
};
|
||||
};
|
||||
searchGet: {
|
||||
parameters: {
|
||||
query?: {
|
||||
@@ -3512,6 +3783,107 @@ export interface operations {
|
||||
};
|
||||
};
|
||||
};
|
||||
timeseriesByRoute: {
|
||||
parameters: {
|
||||
query: {
|
||||
from: string;
|
||||
to?: string;
|
||||
buckets?: number;
|
||||
application: string;
|
||||
};
|
||||
header?: never;
|
||||
path?: never;
|
||||
cookie?: never;
|
||||
};
|
||||
requestBody?: never;
|
||||
responses: {
|
||||
/** @description OK */
|
||||
200: {
|
||||
headers: {
|
||||
[name: string]: unknown;
|
||||
};
|
||||
content: {
|
||||
"*/*": {
|
||||
[key: string]: components["schemas"]["StatsTimeseries"];
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
timeseriesByApp: {
|
||||
parameters: {
|
||||
query: {
|
||||
from: string;
|
||||
to?: string;
|
||||
buckets?: number;
|
||||
};
|
||||
header?: never;
|
||||
path?: never;
|
||||
cookie?: never;
|
||||
};
|
||||
requestBody?: never;
|
||||
responses: {
|
||||
/** @description OK */
|
||||
200: {
|
||||
headers: {
|
||||
[name: string]: unknown;
|
||||
};
|
||||
content: {
|
||||
"*/*": {
|
||||
[key: string]: components["schemas"]["StatsTimeseries"];
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
punchcard: {
|
||||
parameters: {
|
||||
query?: {
|
||||
application?: string;
|
||||
};
|
||||
header?: never;
|
||||
path?: never;
|
||||
cookie?: never;
|
||||
};
|
||||
requestBody?: never;
|
||||
responses: {
|
||||
/** @description OK */
|
||||
200: {
|
||||
headers: {
|
||||
[name: string]: unknown;
|
||||
};
|
||||
content: {
|
||||
"*/*": components["schemas"]["PunchcardCell"][];
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
topErrors: {
|
||||
parameters: {
|
||||
query: {
|
||||
from: string;
|
||||
to?: string;
|
||||
application?: string;
|
||||
routeId?: string;
|
||||
limit?: number;
|
||||
};
|
||||
header?: never;
|
||||
path?: never;
|
||||
cookie?: never;
|
||||
};
|
||||
requestBody?: never;
|
||||
responses: {
|
||||
/** @description OK */
|
||||
200: {
|
||||
headers: {
|
||||
[name: string]: unknown;
|
||||
};
|
||||
content: {
|
||||
"*/*": components["schemas"]["TopError"][];
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
getMetrics: {
|
||||
parameters: {
|
||||
query?: {
|
||||
@@ -3680,7 +4052,7 @@ export interface operations {
|
||||
};
|
||||
};
|
||||
};
|
||||
getProcessorSnapshotById: {
|
||||
processorSnapshotById: {
|
||||
parameters: {
|
||||
query?: never;
|
||||
header?: never;
|
||||
@@ -3721,8 +4093,7 @@ export interface operations {
|
||||
query: {
|
||||
application: string;
|
||||
routeId: string;
|
||||
/** @description Layout direction: LR (left-to-right) or TB (top-to-bottom) */
|
||||
direction?: "LR" | "TB";
|
||||
direction?: string;
|
||||
};
|
||||
header?: never;
|
||||
path?: never;
|
||||
@@ -3753,8 +4124,7 @@ export interface operations {
|
||||
renderDiagram: {
|
||||
parameters: {
|
||||
query?: {
|
||||
/** @description Layout direction: LR (left-to-right) or TB (top-to-bottom) */
|
||||
direction?: "LR" | "TB";
|
||||
direction?: string;
|
||||
};
|
||||
header?: never;
|
||||
path: {
|
||||
@@ -3805,6 +4175,30 @@ export interface operations {
|
||||
};
|
||||
};
|
||||
};
|
||||
getProcessorRouteMapping: {
|
||||
parameters: {
|
||||
query?: never;
|
||||
header?: never;
|
||||
path: {
|
||||
application: string;
|
||||
};
|
||||
cookie?: never;
|
||||
};
|
||||
requestBody?: never;
|
||||
responses: {
|
||||
/** @description Mapping returned */
|
||||
200: {
|
||||
headers: {
|
||||
[name: string]: unknown;
|
||||
};
|
||||
content: {
|
||||
"*/*": {
|
||||
[key: string]: string;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
getConfig_2: {
|
||||
parameters: {
|
||||
query?: never;
|
||||
@@ -4199,6 +4593,26 @@ export interface operations {
|
||||
};
|
||||
};
|
||||
};
|
||||
getAll: {
|
||||
parameters: {
|
||||
query?: never;
|
||||
header?: never;
|
||||
path?: never;
|
||||
cookie?: never;
|
||||
};
|
||||
requestBody?: never;
|
||||
responses: {
|
||||
/** @description OK */
|
||||
200: {
|
||||
headers: {
|
||||
[name: string]: unknown;
|
||||
};
|
||||
content: {
|
||||
"*/*": components["schemas"]["AppSettings"][];
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
deleteIndex: {
|
||||
parameters: {
|
||||
query?: never;
|
||||
|
||||
@@ -61,8 +61,8 @@ function buildOverlay(
|
||||
subRouteFailed: subRouteFailed || undefined,
|
||||
hasTraceData: !!proc.hasTraceData,
|
||||
resolvedEndpointUri: proc.resolvedEndpointUri || undefined,
|
||||
filterMatched: (proc as Record<string, unknown>).filterMatched as boolean | undefined,
|
||||
duplicateMessage: (proc as Record<string, unknown>).duplicateMessage as boolean | undefined,
|
||||
filterMatched: proc.filterMatched ?? undefined,
|
||||
duplicateMessage: proc.duplicateMessage ?? undefined,
|
||||
});
|
||||
|
||||
// Recurse into children
|
||||
|
||||
@@ -142,7 +142,7 @@ function aggregateByApp(
|
||||
|
||||
// SLA compliance: weighted average of per-route slaCompliance from backend
|
||||
const appSettings = settingsMap.get(appId);
|
||||
const slaWeightedSum = routes.reduce((s, r) => s + ((r as Record<string, unknown>).slaCompliance as number ?? 100) * r.exchangeCount, 0);
|
||||
const slaWeightedSum = routes.reduce((s, r) => s + (r.slaCompliance ?? 100) * r.exchangeCount, 0);
|
||||
const slaCompliance = totalExchanges > 0 ? slaWeightedSum / totalExchanges : 100;
|
||||
|
||||
const errorCount = Math.round(totalFailed);
|
||||
@@ -316,7 +316,7 @@ export default function DashboardL1() {
|
||||
);
|
||||
|
||||
// Global SLA compliance from backend stats (exact calculation from executions table)
|
||||
const globalSlaCompliance = (stats as Record<string, unknown>)?.slaCompliance as number ?? -1;
|
||||
const globalSlaCompliance = stats?.slaCompliance ?? -1;
|
||||
const effectiveSlaCompliance = globalSlaCompliance >= 0 ? globalSlaCompliance : 100;
|
||||
|
||||
// Active error count = distinct error types
|
||||
|
||||
@@ -292,7 +292,7 @@ export default function DashboardL2() {
|
||||
successRate: m.successRate,
|
||||
avgDurationMs: m.avgDurationMs,
|
||||
p99DurationMs: m.p99DurationMs,
|
||||
slaCompliance: (m as Record<string, unknown>).slaCompliance as number ?? -1,
|
||||
slaCompliance: m.slaCompliance ?? -1,
|
||||
sparkline: m.sparkline ?? [],
|
||||
})),
|
||||
[metrics],
|
||||
|
||||
Reference in New Issue
Block a user