From e7835e1100e3e5fb39678e1e9aa5ed97869989ad Mon Sep 17 00:00:00 2001 From: claude Date: Tue, 24 Mar 2026 16:11:55 +0100 Subject: [PATCH] feat: map engineLevel and route-level snapshots in IngestionService Extract inputBody/outputBody/inputHeaders/outputHeaders from RouteExecution snapshots and pass to ExecutionRecord. Maps engineLevel field. Critical for REGULAR mode where no processor records exist but route-level payloads do. --- .../core/ingestion/IngestionService.java | 24 ++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/ingestion/IngestionService.java b/cameleer3-server-core/src/main/java/com/cameleer3/server/core/ingestion/IngestionService.java index 3d02fec0..119defcc 100644 --- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/ingestion/IngestionService.java +++ b/cameleer3-server-core/src/main/java/com/cameleer3/server/core/ingestion/IngestionService.java @@ -1,5 +1,6 @@ package com.cameleer3.server.core.ingestion; +import com.cameleer3.common.model.ExchangeSnapshot; import com.cameleer3.common.model.ProcessorExecution; import com.cameleer3.common.model.RouteExecution; import com.cameleer3.server.core.indexing.ExecutionUpdatedEvent; @@ -77,6 +78,25 @@ public class IngestionService { String diagramHash = diagramStore .findContentHashForRoute(exec.getRouteId(), agentId) .orElse(""); + + // Extract route-level snapshots (critical for REGULAR mode where no processors are recorded) + String inputBody = null; + String outputBody = null; + String inputHeaders = null; + String outputHeaders = null; + + ExchangeSnapshot inputSnapshot = exec.getInputSnapshot(); + if (inputSnapshot != null) { + inputBody = truncateBody(inputSnapshot.getBody()); + inputHeaders = toJson(inputSnapshot.getHeaders()); + } + + ExchangeSnapshot outputSnapshot = exec.getOutputSnapshot(); + if (outputSnapshot != null) { + outputBody = truncateBody(outputSnapshot.getBody()); + outputHeaders = toJson(outputSnapshot.getHeaders()); + } + return new ExecutionRecord( exec.getExchangeId(), exec.getRouteId(), agentId, applicationName, exec.getStatus() != null ? exec.getStatus().name() : "RUNNING", @@ -84,7 +104,9 @@ public class IngestionService { exec.getStartTime(), exec.getEndTime(), exec.getDurationMs(), exec.getErrorMessage(), exec.getErrorStackTrace(), - diagramHash + diagramHash, + exec.getEngineLevel(), + inputBody, outputBody, inputHeaders, outputHeaders ); }