feat: store raw processor tree JSON and add error categorization fields
Fixes iteration overlay corruption caused by flat storage collapsing duplicate processorIds across loop iterations. Server: - Store raw processor tree as processors_json JSONB on executions table - Detail endpoint serves from processors_json (faithful tree), falls back to flat record reconstruction for older executions - V10 migration: processors_json, error categorization (errorType, errorCategory, rootCauseType, rootCauseMessage), OTel (traceId, spanId), circuit breaker (circuitBreakerState, fallbackTriggered), drops erroneous splitDepth/loopDepth columns - Add all new fields through full ingestion/storage/API chain UI: - Fix overlay wrapper filtering: check wrapper type before status filter - Add new fields to schema.d.ts Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -29,10 +29,10 @@ function buildOverlay(
|
||||
parentId?: string,
|
||||
): void {
|
||||
for (const proc of processors) {
|
||||
if (!proc.processorId || !proc.status) continue;
|
||||
if (proc.status !== 'COMPLETED' && proc.status !== 'FAILED') continue;
|
||||
if (!proc.processorId) continue;
|
||||
|
||||
// Iteration wrapper: filter by selected iteration, skip the wrapper itself
|
||||
// Iteration wrapper: filter by selected iteration, skip the wrapper itself.
|
||||
// Must be checked before the status filter — wrappers may not have a status.
|
||||
if (ITERATION_WRAPPER_TYPES.has(proc.processorType)) {
|
||||
if (parentId && iterationState.has(parentId)) {
|
||||
const info = iterationState.get(parentId)!;
|
||||
@@ -48,7 +48,9 @@ function buildOverlay(
|
||||
continue;
|
||||
}
|
||||
|
||||
// Regular processor: add to overlay
|
||||
// Regular processor: only include completed/failed nodes
|
||||
if (!proc.status || (proc.status !== 'COMPLETED' && proc.status !== 'FAILED')) continue;
|
||||
|
||||
const subRouteFailed =
|
||||
proc.status === 'FAILED' &&
|
||||
(proc.processorType?.includes('DIRECT') || proc.processorType?.includes('SEDA'));
|
||||
|
||||
Reference in New Issue
Block a user