Files
design-system/src/mocks/exchanges.ts
hsiegeln 0bb49b83e5
All checks were successful
Build & Publish / publish (push) Successful in 1m55s
SonarQube Analysis / sonarqube (push) Successful in 1m52s
feat: DataTable scrollable layout with 200+ mock exchanges
Make Dashboard table fill viewport height with sticky header/footer
and internal scrolling. Expand mock exchange data from 15 to 200
records and Inventory showcase from 5 to 500 records.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 10:43:03 +02:00

387 lines
16 KiB
TypeScript

export interface ProcessorData {
name: string
type: string
durationMs: number
status: 'ok' | 'slow' | 'fail'
startMs: number
}
export interface Exchange {
id: string
orderId: string
customer: string
route: string
routeGroup: string
status: 'completed' | 'failed' | 'running' | 'warning'
durationMs: number
timestamp: Date
correlationId: string
agent: string
errorMessage?: string
errorClass?: string
processors: ProcessorData[]
correlationGroup?: string
}
export const exchanges: Exchange[] = [
{
id: 'E-2026-03-18-00201',
orderId: 'OP-92184',
customer: 'CUST-44210',
route: 'order-intake',
routeGroup: 'order-flow',
status: 'completed',
durationMs: 87,
timestamp: new Date('2026-03-18T09:12:04'),
correlationId: 'cmr-f4a1c82b-9d3e',
agent: 'prod-1',
correlationGroup: 'order-flow-001',
processors: [
{ name: 'from(jms:orders)', type: 'consumer', durationMs: 4, status: 'ok', startMs: 0 },
{ name: 'unmarshal(json)', type: 'transform', durationMs: 6, status: 'ok', startMs: 4 },
{ name: 'validate(schema)', type: 'process', durationMs: 10, status: 'ok', startMs: 10 },
{ name: 'enrich(customer-db)', type: 'enrich', durationMs: 52, status: 'ok', startMs: 20 },
{ name: 'to(order-enrichment)', type: 'to', durationMs: 15, status: 'ok', startMs: 72 },
],
},
{
id: 'E-2026-03-18-00200',
orderId: 'OP-92183',
customer: 'CUST-18773',
route: 'payment-validate',
routeGroup: 'payment-flow',
status: 'completed',
durationMs: 164,
timestamp: new Date('2026-03-18T09:11:22'),
correlationId: 'cmr-7b2d9f14-c5a8',
agent: 'prod-2',
correlationGroup: 'payment-flow-001',
processors: [
{ name: 'from(jms:payments)', type: 'consumer', durationMs: 5, status: 'ok', startMs: 0 },
{ name: 'unmarshal(json)', type: 'transform', durationMs: 8, status: 'ok', startMs: 5 },
{ name: 'validate(payment-schema)', type: 'process', durationMs: 15, status: 'ok', startMs: 13 },
{ name: 'check(fraud-service)', type: 'enrich', durationMs: 112, status: 'ok', startMs: 28 },
{ name: 'to(payment-process)', type: 'to', durationMs: 24, status: 'ok', startMs: 140 },
],
},
{
id: 'E-2026-03-18-00202',
orderId: 'OP-92185',
customer: 'CUST-67501',
route: 'order-enrichment',
routeGroup: 'order-flow',
status: 'running',
durationMs: 30000,
timestamp: new Date('2026-03-18T09:13:44'),
correlationId: 'cmr-3c8e1a7f-d2b6',
agent: 'prod-1',
correlationGroup: 'order-flow-001',
processors: [
{ name: 'from(jms:orders)', type: 'consumer', durationMs: 5, status: 'ok', startMs: 0 },
{ name: 'enrich(inventory-api)', type: 'enrich', durationMs: 29990, status: 'slow', startMs: 5 },
],
},
{
id: 'E-2026-03-18-00198',
orderId: 'OP-92180',
customer: 'CUST-55019',
route: 'shipment-dispatch',
routeGroup: 'shipment-flow',
status: 'warning',
durationMs: 248,
timestamp: new Date('2026-03-18T09:09:47'),
correlationId: 'cmr-a9f3b2c1-e4d7',
agent: 'prod-3',
correlationGroup: 'shipment-flow-001',
processors: [
{ name: 'from(jms:shipments)', type: 'consumer', durationMs: 6, status: 'ok', startMs: 0 },
{ name: 'unmarshal(json)', type: 'transform', durationMs: 8, status: 'ok', startMs: 6 },
{ name: 'enrich(carrier-api)', type: 'enrich', durationMs: 198, status: 'slow', startMs: 14 },
{ name: 'to(carrier-gateway)', type: 'to', durationMs: 36, status: 'ok', startMs: 212 },
],
},
{
id: 'E-2026-03-18-00191',
orderId: 'OP-88421',
customer: 'CUST-31094',
route: 'payment-process',
routeGroup: 'payment-flow',
status: 'failed',
durationMs: 412,
timestamp: new Date('2026-03-18T09:06:11'),
correlationId: 'cmr-9a4f2b71-e8c3',
agent: 'prod-2',
correlationGroup: 'payment-flow-002',
errorMessage: 'org.apache.camel.CamelExecutionException: Payment gateway timeout after 5000ms — POST https://pay.provider.com/v2/charge returned HTTP 504. Retry exhausted (3/3).',
errorClass: 'org.apache.camel.CamelExecutionException',
processors: [
{ name: 'from(jms:payments)', type: 'consumer', durationMs: 5, status: 'ok', startMs: 0 },
{ name: 'unmarshal(json)', type: 'transform', durationMs: 8, status: 'ok', startMs: 5 },
{ name: 'validate(payment-schema)', type: 'process', durationMs: 12, status: 'ok', startMs: 13 },
{ name: 'to(payment-gateway)', type: 'to', durationMs: 387, status: 'fail', startMs: 25 },
],
},
{
id: 'E-2026-03-18-00189',
orderId: 'OP-88419',
customer: 'CUST-72841',
route: 'order-enrichment',
routeGroup: 'order-flow',
status: 'failed',
durationMs: 1247,
timestamp: new Date('2026-03-18T09:02:38'),
correlationId: 'cmr-b6d7c3a2-f1e9',
agent: 'prod-1',
errorMessage: 'java.sql.SQLTransientConnectionException: HikariPool-1 - Connection not available, request timed out after 1000ms. (pool: 10, active: 10, idle: 0, waiting: 3)',
errorClass: 'java.sql.SQLTransientConnectionException',
processors: [
{ name: 'from(jms:orders)', type: 'consumer', durationMs: 5, status: 'ok', startMs: 0 },
{ name: 'unmarshal(json)', type: 'transform', durationMs: 9, status: 'ok', startMs: 5 },
{ name: 'enrich(customer-db)', type: 'enrich', durationMs: 1233, status: 'fail', startMs: 14 },
],
},
{
id: 'E-2026-03-18-00186',
orderId: 'OP-92179',
customer: 'CUST-90123',
route: 'order-intake',
routeGroup: 'order-flow',
status: 'completed',
durationMs: 62,
timestamp: new Date('2026-03-18T09:00:15'),
correlationId: 'cmr-2e5f8d9a-b4c1',
agent: 'prod-3',
correlationGroup: 'order-flow-001',
processors: [
{ name: 'from(jms:orders)', type: 'consumer', durationMs: 3, status: 'ok', startMs: 0 },
{ name: 'unmarshal(json)', type: 'transform', durationMs: 5, status: 'ok', startMs: 3 },
{ name: 'validate(schema)', type: 'process', durationMs: 8, status: 'ok', startMs: 8 },
{ name: 'enrich(customer-db)', type: 'enrich', durationMs: 34, status: 'ok', startMs: 16 },
{ name: 'to(order-enrichment)', type: 'to', durationMs: 12, status: 'ok', startMs: 50 },
],
},
{
id: 'E-2026-03-18-00184',
orderId: 'OP-92178',
customer: 'CUST-44210',
route: 'payment-validate',
routeGroup: 'payment-flow',
status: 'completed',
durationMs: 131,
timestamp: new Date('2026-03-18T08:58:33'),
correlationId: 'cmr-d1a3e7f4-c2b8',
agent: 'prod-1',
correlationGroup: 'payment-flow-001',
processors: [
{ name: 'from(jms:payments)', type: 'consumer', durationMs: 4, status: 'ok', startMs: 0 },
{ name: 'validate(payment-schema)', type: 'process', durationMs: 14, status: 'ok', startMs: 4 },
{ name: 'check(fraud-service)', type: 'enrich', durationMs: 88, status: 'ok', startMs: 18 },
{ name: 'to(payment-process)', type: 'to', durationMs: 25, status: 'ok', startMs: 106 },
],
},
{
id: 'E-2026-03-18-00179',
orderId: 'OP-92175',
customer: 'CUST-67892',
route: 'shipment-track',
routeGroup: 'shipment-flow',
status: 'completed',
durationMs: 94,
timestamp: new Date('2026-03-18T08:53:07'),
correlationId: 'cmr-e8b2c9d4-a7f3',
agent: 'prod-4',
processors: [
{ name: 'from(jms:tracking)', type: 'consumer', durationMs: 4, status: 'ok', startMs: 0 },
{ name: 'enrich(carrier-api)', type: 'enrich', durationMs: 72, status: 'ok', startMs: 4 },
{ name: 'to(notification-hub)', type: 'to', durationMs: 18, status: 'ok', startMs: 76 },
],
},
{
id: 'E-2026-03-18-00177',
orderId: 'OP-92174',
customer: 'CUST-15293',
route: 'order-intake',
routeGroup: 'order-flow',
status: 'completed',
durationMs: 73,
timestamp: new Date('2026-03-18T08:50:41'),
correlationId: 'cmr-f3c7a1b9-d5e2',
agent: 'prod-1',
correlationGroup: 'order-flow-001',
processors: [
{ name: 'from(jms:orders)', type: 'consumer', durationMs: 3, status: 'ok', startMs: 0 },
{ name: 'unmarshal(json)', type: 'transform', durationMs: 6, status: 'ok', startMs: 3 },
{ name: 'validate(schema)', type: 'process', durationMs: 9, status: 'ok', startMs: 9 },
{ name: 'enrich(customer-db)', type: 'enrich', durationMs: 40, status: 'ok', startMs: 18 },
{ name: 'to(order-enrichment)', type: 'to', durationMs: 15, status: 'ok', startMs: 58 },
],
},
{
id: 'E-2026-03-18-00173',
orderId: 'OP-92173',
customer: 'CUST-88104',
route: 'payment-process',
routeGroup: 'payment-flow',
status: 'completed',
durationMs: 198,
timestamp: new Date('2026-03-18T08:46:19'),
correlationId: 'cmr-a2d8f5c3-b9e1',
agent: 'prod-2',
correlationGroup: 'payment-flow-001',
processors: [
{ name: 'from(jms:payments)', type: 'consumer', durationMs: 5, status: 'ok', startMs: 0 },
{ name: 'validate(payment-schema)', type: 'process', durationMs: 12, status: 'ok', startMs: 5 },
{ name: 'to(payment-gateway)', type: 'to', durationMs: 156, status: 'ok', startMs: 17 },
{ name: 'to(order-service)', type: 'to', durationMs: 25, status: 'ok', startMs: 173 },
],
},
{
id: 'E-2026-03-18-00164',
orderId: 'OP-92170',
customer: 'CUST-50321',
route: 'order-enrichment',
routeGroup: 'order-flow',
status: 'warning',
durationMs: 267,
timestamp: new Date('2026-03-18T08:39:52'),
correlationId: 'cmr-c4f1b7a8-e3d6',
agent: 'prod-1',
processors: [
{ name: 'from(jms:orders)', type: 'consumer', durationMs: 5, status: 'ok', startMs: 0 },
{ name: 'unmarshal(json)', type: 'transform', durationMs: 8, status: 'ok', startMs: 5 },
{ name: 'enrich(inventory-api)', type: 'enrich', durationMs: 224, status: 'slow', startMs: 13 },
{ name: 'to(payment-process)', type: 'to', durationMs: 30, status: 'ok', startMs: 237 },
],
},
{
id: 'E-2026-03-18-00158',
orderId: 'OP-88412',
customer: 'CUST-23781',
route: 'payment-process',
routeGroup: 'payment-flow',
status: 'failed',
durationMs: 5234,
timestamp: new Date('2026-03-18T08:31:05'),
correlationId: 'cmr-7e9a2c5f-d1b4',
agent: 'prod-2',
correlationGroup: 'payment-flow-002',
errorMessage: 'org.apache.camel.component.http.HttpOperationFailedException: HTTP operation failed invoking https://pay.provider.com/v2/charge with statusCode: 422 — Unprocessable Entity: card declined (insufficient funds)',
errorClass: 'org.apache.camel.component.http.HttpOperationFailedException',
processors: [
{ name: 'from(jms:payments)', type: 'consumer', durationMs: 5, status: 'ok', startMs: 0 },
{ name: 'validate(payment-schema)', type: 'process', durationMs: 11, status: 'ok', startMs: 5 },
{ name: 'to(payment-gateway)', type: 'to', durationMs: 5218, status: 'fail', startMs: 16 },
],
},
{
id: 'E-2026-03-18-00151',
orderId: 'OP-92166',
customer: 'CUST-61042',
route: 'shipment-dispatch',
routeGroup: 'shipment-flow',
status: 'completed',
durationMs: 112,
timestamp: new Date('2026-03-18T08:22:44'),
correlationId: 'cmr-b5c8d2a7-f4e3',
agent: 'prod-3',
correlationGroup: 'shipment-flow-001',
processors: [
{ name: 'from(jms:shipments)', type: 'consumer', durationMs: 5, status: 'ok', startMs: 0 },
{ name: 'unmarshal(json)', type: 'transform', durationMs: 7, status: 'ok', startMs: 5 },
{ name: 'enrich(carrier-api)', type: 'enrich', durationMs: 80, status: 'ok', startMs: 12 },
{ name: 'to(carrier-gateway)', type: 'to', durationMs: 20, status: 'ok', startMs: 92 },
],
},
{
id: 'E-2026-03-18-00144',
orderId: 'OP-92161',
customer: 'CUST-77215',
route: 'order-intake',
routeGroup: 'order-flow',
status: 'completed',
durationMs: 91,
timestamp: new Date('2026-03-18T08:15:19'),
correlationId: 'cmr-d9e3f7b1-a6c5',
agent: 'prod-4',
correlationGroup: 'order-flow-001',
processors: [
{ name: 'from(jms:orders)', type: 'consumer', durationMs: 4, status: 'ok', startMs: 0 },
{ name: 'unmarshal(json)', type: 'transform', durationMs: 7, status: 'ok', startMs: 4 },
{ name: 'validate(schema)', type: 'process', durationMs: 10, status: 'ok', startMs: 11 },
{ name: 'enrich(customer-db)', type: 'enrich', durationMs: 54, status: 'ok', startMs: 21 },
{ name: 'to(order-enrichment)', type: 'to', durationMs: 16, status: 'ok', startMs: 75 },
],
},
]
// ── Generate additional exchanges to reach ~200 total ────────────────────────
const GEN_ROUTES = [
'order-intake', 'payment-validate', 'order-enrichment', 'shipment-dispatch',
'payment-process', 'shipment-track', 'inventory-sync', 'notification-send',
'audit-log', 'customer-update', 'refund-process', 'invoice-generate',
]
const GEN_ROUTE_GROUPS = [
'order-flow', 'payment-flow', 'shipment-flow', 'inventory-flow',
'notification-flow', 'audit-flow', 'customer-flow', 'billing-flow',
]
const GEN_AGENTS = ['prod-1', 'prod-2', 'prod-3', 'prod-4']
const GEN_STATUSES: Exchange['status'][] = [
'completed', 'completed', 'completed', 'completed', 'completed',
'completed', 'failed', 'warning', 'running',
]
const GEN_PROCESSORS: ProcessorData[][] = [
[
{ name: 'from(jms:queue)', type: 'consumer', durationMs: 4, status: 'ok', startMs: 0 },
{ name: 'unmarshal(json)', type: 'transform', durationMs: 6, status: 'ok', startMs: 4 },
{ name: 'validate(schema)', type: 'process', durationMs: 10, status: 'ok', startMs: 10 },
{ name: 'to(target)', type: 'to', durationMs: 15, status: 'ok', startMs: 20 },
],
[
{ name: 'from(jms:queue)', type: 'consumer', durationMs: 5, status: 'ok', startMs: 0 },
{ name: 'enrich(external-api)', type: 'enrich', durationMs: 120, status: 'slow', startMs: 5 },
{ name: 'to(target)', type: 'to', durationMs: 20, status: 'ok', startMs: 125 },
],
[
{ name: 'from(jms:queue)', type: 'consumer', durationMs: 3, status: 'ok', startMs: 0 },
{ name: 'to(external-gateway)', type: 'to', durationMs: 400, status: 'fail', startMs: 3 },
],
]
const GEN_ERRORS = [
{ msg: 'org.apache.camel.CamelExecutionException: Timeout after 5000ms', cls: 'org.apache.camel.CamelExecutionException' },
{ msg: 'java.sql.SQLTransientConnectionException: Connection pool exhausted', cls: 'java.sql.SQLTransientConnectionException' },
{ msg: 'org.apache.camel.component.http.HttpOperationFailedException: HTTP 502 Bad Gateway', cls: 'org.apache.camel.component.http.HttpOperationFailedException' },
]
const BASE_TIME = new Date('2026-03-18T08:00:00').getTime()
for (let i = 0; i < 185; i++) {
const idx = exchanges.length
const status = GEN_STATUSES[i % GEN_STATUSES.length]
const route = GEN_ROUTES[i % GEN_ROUTES.length]
const routeGroup = GEN_ROUTE_GROUPS[i % GEN_ROUTE_GROUPS.length]
const isFailed = status === 'failed'
const durationMs = isFailed
? 1000 + ((i * 37) % 4000)
: status === 'running'
? 10000 + ((i * 53) % 20000)
: 30 + ((i * 73) % 400)
const err = isFailed ? GEN_ERRORS[i % GEN_ERRORS.length] : undefined
exchanges.push({
id: `E-2026-03-18-${String(idx + 200).padStart(5, '0')}`,
orderId: `OP-${80000 + idx}`,
customer: `CUST-${10000 + ((i * 131) % 90000)}`,
route,
routeGroup,
status,
durationMs,
timestamp: new Date(BASE_TIME - i * 2 * 60 * 1000),
correlationId: `cmr-${i.toString(16).padStart(8, '0')}-gen`,
agent: GEN_AGENTS[i % GEN_AGENTS.length],
...(err ? { errorMessage: err.msg, errorClass: err.cls } : {}),
processors: GEN_PROCESSORS[i % GEN_PROCESSORS.length].map((p) => ({ ...p })),
...(i % 3 === 0 ? { correlationGroup: `${routeGroup}-${String(Math.floor(i / 3)).padStart(3, '0')}` } : {}),
})
}