From 159116dd94c100926dad1f14788f289aab92fab3 Mon Sep 17 00:00:00 2001 From: jjangddu Date: Tue, 7 Jul 2026 09:36:36 +0900 Subject: [PATCH] =?UTF-8?q?feat(align):=20V2=20GREEN=20=EC=A7=84=EC=9E=85?= =?UTF-8?q?=20=ED=9B=84=205=EC=B4=88=20hold=20=E2=80=94=20=EC=88=9C?= =?UTF-8?q?=EA=B0=84=20flick=20=EC=9C=BC=EB=A1=9C=20=EC=A6=89=EC=8B=9C=20?= =?UTF-8?q?=ED=92=80=EB=A6=BC=20=EB=B0=A9=EC=A7=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit V1 은 이미 greenHoldMs=7000 로 hold 로직 있으나 V2 (v2Aligner) 는 매 프레임마다 finalStop 을 재판정하고 false 되는 순간 즉시 unlock 되어 "측정 시작" 버튼이 disable 되는 UX 문제. 사용자가 GREEN 뜬 순간 버튼 누를 시간이 부족. 수정: V2 쪽에도 5초 hold 추가. 진입 후 5초 이내에는 finalStop 이 false 로 바뀌어도 isLocked=true, LED mode 6 (GREEN) 유지. Co-Authored-By: Claude Opus 4.7 --- .../ui/views/monitoring/PlacementGuideView.kt | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/medithings/vesiscan/ui/views/monitoring/PlacementGuideView.kt b/app/src/main/java/com/medithings/vesiscan/ui/views/monitoring/PlacementGuideView.kt index 04f4810..0268ca5 100644 --- a/app/src/main/java/com/medithings/vesiscan/ui/views/monitoring/PlacementGuideView.kt +++ b/app/src/main/java/com/medithings/vesiscan/ui/views/monitoring/PlacementGuideView.kt @@ -960,11 +960,22 @@ fun PlacementGuideView(appState: AppState) { st.action == com.medithings.vesiscan.managers.AlignAction.STOP -> 60 // CH3_STABILIZE 유지 중 else -> 40 } + // 2026-07-07: GREEN 진입 후 5초 hold — 순간 flick 으로 GREEN 이 즉시 + // 풀려 "측정 시작" 버튼이 disable 되는 UX 문제 방지. V1 은 이미 + // greenHoldMs=7000 로 동일 로직 있으나 V2 만 빠져 있었음. + val v2GreenHoldMs = 5000L + val nowMs = System.currentTimeMillis() + val v2GreenHeld = isLocked && (nowMs - greenLockedAtMs < v2GreenHoldMs) if (finalStop) { - if (!isLocked) greenLockedAtMs = System.currentTimeMillis() + if (!isLocked) greenLockedAtMs = nowMs isLocked = true placementPhase = PlacementPhase.GREEN if (lastLedMode != 6) { bleManager.sendLedMode(6); lastLedMode = 6 } + } else if (v2GreenHeld) { + // Hold 중 — isLocked / GREEN LED 유지, 단 hint 는 갱신 위에서 이미 반영. + // placementScore 만 GREEN 표시 유지. + placementScore = 100 + placementPhase = PlacementPhase.GREEN } else { isLocked = false if (lastLedMode != 5) { bleManager.sendLedMode(5); lastLedMode = 5 }