feat(align): V2 GREEN 진입 후 5초 hold — 순간 flick 으로 즉시 풀림 방지
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 <noreply@anthropic.com>
This commit is contained in:
+12
-1
@@ -960,11 +960,22 @@ fun PlacementGuideView(appState: AppState) {
|
|||||||
st.action == com.medithings.vesiscan.managers.AlignAction.STOP -> 60 // CH3_STABILIZE 유지 중
|
st.action == com.medithings.vesiscan.managers.AlignAction.STOP -> 60 // CH3_STABILIZE 유지 중
|
||||||
else -> 40
|
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 (finalStop) {
|
||||||
if (!isLocked) greenLockedAtMs = System.currentTimeMillis()
|
if (!isLocked) greenLockedAtMs = nowMs
|
||||||
isLocked = true
|
isLocked = true
|
||||||
placementPhase = PlacementPhase.GREEN
|
placementPhase = PlacementPhase.GREEN
|
||||||
if (lastLedMode != 6) { bleManager.sendLedMode(6); lastLedMode = 6 }
|
if (lastLedMode != 6) { bleManager.sendLedMode(6); lastLedMode = 6 }
|
||||||
|
} else if (v2GreenHeld) {
|
||||||
|
// Hold 중 — isLocked / GREEN LED 유지, 단 hint 는 갱신 위에서 이미 반영.
|
||||||
|
// placementScore 만 GREEN 표시 유지.
|
||||||
|
placementScore = 100
|
||||||
|
placementPhase = PlacementPhase.GREEN
|
||||||
} else {
|
} else {
|
||||||
isLocked = false
|
isLocked = false
|
||||||
if (lastLedMode != 5) { bleManager.sendLedMode(5); lastLedMode = 5 }
|
if (lastLedMode != 5) { bleManager.sendLedMode(5); lastLedMode = 5 }
|
||||||
|
|||||||
Reference in New Issue
Block a user