Merge pull request #1890 from pikasTech/fix-1889-workbench-running-timing-authority

修复 running turn 计时源被 trace hydration 拉跳
This commit is contained in:
Lyon
2026-06-22 13:20:37 +08:00
committed by GitHub
@@ -447,7 +447,14 @@ function mergeTraceSnapshots(previous: TraceSnapshot | null, next: TraceSnapshot
}
function traceSnapshotWithTurnStatus(trace: TraceSnapshot, turn: TraceSnapshot): TraceSnapshot {
const timing = mergeTraceTimingProjection(trace, turn, { preserveVisibleTerminalDuration: traceTimingWasRunning(trace) && traceTimingIsTerminal(turn) });
const turnTiming = traceTimingCandidate(turn);
const turnIsTerminal = traceTimingIsTerminal(turn) || isTerminalStatus(turn.status);
// Running card timing belongs to the turn status projection. Trace pages may
// hydrate older detail rows later; they must not move the visible running
// card's startedAt/lastEventAt source and create multi-second jumps.
const timing = !turnIsTerminal && turnTiming
? turnTiming
: mergeTraceTimingProjection(trace, turn, { preserveVisibleTerminalDuration: traceTimingWasRunning(trace) && traceTimingIsTerminal(turn) });
return {
...trace,
traceId: trace.traceId ?? turn.traceId,