fix: cap automatic playout refreshes

This commit is contained in:
2026-07-12 19:28:15 +09:00
parent 6e00955f1b
commit df60e09884
16 changed files with 603 additions and 37 deletions

View File

@@ -268,11 +268,15 @@
nextKind: "none",
previewFields: [],
refreshActive: false,
playCompletionPending: false,
refreshNextAt: null,
refreshLastSuccessAt: null,
refreshFaulted: false,
refreshFaultCode: null,
refreshFaultMessage: null,
refreshCompletedCount: 0,
refreshMaximumCount: null,
refreshLimitReached: false,
changedAt: null,
changedAtMs: 0,
latestStatusRequestId: null,
@@ -6592,6 +6596,7 @@
function applyRefreshState(payload) {
state.playout.refreshActive = payload.refreshActive === true;
state.playout.playCompletionPending = payload.playCompletionPending === true;
state.playout.refreshNextAt = payload.refreshNextAt || null;
state.playout.refreshLastSuccessAt = payload.refreshLastSuccessAt || null;
state.playout.refreshFaulted = payload.refreshFaulted === true;
@@ -6601,6 +6606,10 @@
state.playout.refreshFaultMessage = typeof payload.refreshFaultMessage === "string"
? payload.refreshFaultMessage
: null;
const refreshBudget = playoutSafety.normalizeRefreshBudget(payload);
state.playout.refreshCompletedCount = refreshBudget.completed;
state.playout.refreshMaximumCount = refreshBudget.maximum;
state.playout.refreshLimitReached = refreshBudget.limitReached;
if (state.playout.refreshFaulted && state.playout.error?.outcomeUnknown !== true) {
state.playout.error = {
code: state.playout.refreshFaultCode || "REFRESH_FAULT",
@@ -6814,11 +6823,12 @@
elements.playoutLastPage.textContent = state.playout.isLastPage ? "YES" : "NO";
elements.playoutNextKind.textContent = state.playout.nextKind.replaceAll("-", " ").toUpperCase();
const refreshNextMs = parseChangedAt(state.playout.refreshNextAt);
elements.playoutRefreshState.textContent = state.playout.refreshFaulted
? "FAULT"
: (state.playout.refreshActive
? `ACTIVE · ${refreshNextMs ? new Date(refreshNextMs).toLocaleTimeString("ko-KR", { hour12: false }) : "WAIT"}`
: "STOPPED");
const refreshNextLabel = refreshNextMs
? new Date(refreshNextMs).toLocaleTimeString("ko-KR", { hour12: false })
: "WAIT";
elements.playoutRefreshState.textContent = playoutSafety.formatRefreshBudgetState(
state.playout,
refreshNextLabel);
renderSceneDataPreview();
elements.playoutSummary.classList.remove("ready", "dry-run", "error");