import { ItemLotTraceResponse } from "@/app/api/itemTracing"; import { buildTraceGraphLayout, TraceGraphLayout, TraceGraphLayoutNode, } from "./traceGraphLayout"; import { resolveTraceFlowEdgePairs } from "./traceGraphSemantics"; import type { TraceGraphCompileLabels } from "./traceGraphLabels"; export type TraceFlowEdgePair = { fromId: string; toId: string }; export type CompiledTraceGraph = { layout: TraceGraphLayout; edgePairs: TraceFlowEdgePair[]; nodes: TraceGraphLayoutNode[]; }; export const compileTraceGraph = ( data: ItemLotTraceResponse, labels: TraceGraphCompileLabels, ): CompiledTraceGraph => { const layout = buildTraceGraphLayout(data, labels); const backendEdges = data.traceGraph?.edges?.map((e) => ({ fromKey: e.fromKey, toKey: e.toKey, })); const edgePairs = resolveTraceFlowEdgePairs(layout.nodes, layout.phaseOrder, backendEdges); return { layout, edgePairs, nodes: layout.nodes, }; };