From a410f5b65ca2f2e3665e80810728d1ade580de5f Mon Sep 17 00:00:00 2001 From: hyungi Date: Thu, 11 Jun 2026 14:36:10 +0900 Subject: [PATCH] =?UTF-8?q?fix(ui):=20=EB=A8=B8=EC=8B=A0=20state=20?= =?UTF-8?q?=EC=9A=B0=EC=84=A0=EC=88=9C=EC=9C=84=20=E2=80=94=20=EA=B0=80?= =?UTF-8?q?=EB=8F=99=20>=20=EB=B3=B4=EB=A5=98=20(=EC=9D=BC=ED=95=98?= =?UTF-8?q?=EB=8A=94=20=EC=A4=91=EC=97=94=20=EB=B0=B1=EC=98=A4=ED=94=84=20?= =?UTF-8?q?=EC=9E=94=EC=97=AC=EC=97=AC=EB=8F=84=20=EA=B0=80=EB=8F=99)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 실측: 맥북이 드레인 처리 중인데도 백오프 잔여 때문에 카드 전체가 '보류'로 표시. 보류 칩은 일이 멈춰 있고 백오프만 쌓인 상태(sleep/불가 지속) 한정으로 강등, 보류 건수 자체는 카드의 deferred_pending 라인이 계속 표시. Co-Authored-By: Claude Fable 5 --- app/services/queue_overview.py | 13 ++++++++----- tests/test_queue_overview.py | 17 +++++++++++++++-- 2 files changed, 23 insertions(+), 7 deletions(-) diff --git a/app/services/queue_overview.py b/app/services/queue_overview.py index 803c603..81789f7 100644 --- a/app/services/queue_overview.py +++ b/app/services/queue_overview.py @@ -165,13 +165,16 @@ def build_machines( if key == "macbook" else 0 ) - # state 판정 — macbook 의 done_15m 은 위에서 deep_summary stage 분 + summarize 풀 - # split 분이 이미 합산돼 있고, processing 은 deep_summary 진행 중(=맥북 생성 중)을 - # 포함하므로 동일 분기로 충분 (검수 보정 2026-06-11: deep 처리 중에도 active). - if key == "macbook" and deferred_pending > 0: + # state 판정 — 우선순위: 가동 > 보류 > 대기 (사용자 피드백 2026-06-11). + # 일하고 있으면(처리 중 또는 최근 15분 완료) 백오프 잔여가 있어도 "가동" — + # 보류 건수는 카드의 deferred_pending 라인이 따로 보여준다. "보류" 칩은 + # 실제로 일이 멈춰 있고 백오프만 쌓인 상태(sleep/불가 지속)에서만. + if processing > 0 or done_15m > 0: + state = "active" + elif key == "macbook" and deferred_pending > 0: state = "deferred" else: - state = "active" if (processing > 0 or done_15m > 0) else "idle" + state = "idle" machines.append({ "key": key, diff --git a/tests/test_queue_overview.py b/tests/test_queue_overview.py index 03fde17..d385592 100644 --- a/tests/test_queue_overview.py +++ b/tests/test_queue_overview.py @@ -130,10 +130,23 @@ def test_deferred_pending_always_on_macbook_card(): # ─── state 판정 ─────────────────────────────────────────────────────────────── -def test_macbook_state_deferred_wins_over_active(): +def test_macbook_state_active_wins_over_deferred_while_working(): + """가동 > 보류 (사용자 피드백 2026-06-11): 일하고 있으면 백오프 잔여가 있어도 '가동'. + + 보류 건수는 deferred_pending 필드가 별도로 전달 — 카드 라인이 표시. + """ stats = {"summarize": _stage(pending=1, deferred_pending=1)} - split = _split(macbook={"done_15m": 3}) # 최근 완료가 있어도 deferred 우선 + split = _split(macbook={"done_15m": 3}) machines = build_machines(stats, split, [], deep_enabled=True) + mb = _machine(machines, "macbook") + assert mb["state"] == "active" + assert mb["deferred_pending"] == 1 + + +def test_macbook_state_deferred_only_when_not_working(): + """일이 멈춰 있고(처리 0·최근 완료 0) 백오프만 쌓인 상태에서만 '보류'.""" + stats = {"summarize": _stage(pending=1, deferred_pending=1)} + machines = build_machines(stats, _split(), [], deep_enabled=True) assert _machine(machines, "macbook")["state"] == "deferred"