From 99bb904f13fca40bf874b0f8d3ac4fc0095a80c8 Mon Sep 17 00:00:00 2001 From: jjangddu Date: Wed, 5 Aug 2026 17:47:53 +0900 Subject: [PATCH] =?UTF-8?q?fix(alignment):=200/6=20walls=20=EC=8B=9C=20?= =?UTF-8?q?=EC=A6=89=EC=8B=9C=20=ED=8C=9D=EC=97=85=20=EA=B0=95=EC=A0=9C=20?= =?UTF-8?q?(rising-edge=20=EB=86=93=EC=B9=98=EB=8A=94=20=EC=BC=80=EC=9D=B4?= =?UTF-8?q?=EC=8A=A4)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 증상 (사용자 보고 2026-08-05): 6채널 다 안 잡히는데 "센서 분리됨" 팝업이 안 뜸. 원인: DetachmentDetection 은 mean·std AND rule (threshold 30) — EMI/노이즈로 std ≥ 30 이면 isDetached=false 반환 → rising-edge 트리거 (line 882) 가 발화 안 됨. 화면상 6채널이 전부 미검출이어도 팝업이 안 뜨는 gap. 수정: 0/6 walls sanity check 에서 showDetachAlert = true 를 직접 세팅. prevDetached=true 도 같이 세팅해 재부착 시 auto-dismiss 정상 동작. 이전 fix (982df04) 는 waitingForStart 복귀까지만 처리했음. Start 재클릭 시 팝업이 뜨긴 했지만 사용자 입장에선 여전히 "안 뜬다" 로 느껴졌음. feature/cloud-mvp d4dac71 과 대칭 (cloud-mvp 는 팝업 UI 자체를 새로 추가). --- .../ui/views/monitoring/PlacementGuideView.kt | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) 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 12f6609..5808638 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 @@ -934,14 +934,16 @@ fun PlacementGuideView(appState: AppState) { directionHint = context.getString(R.string.placement_check_attachment) directionIcon = "" placementScore = 0 - // 2026-08-05: 사용자가 Start 눌렀는데 0/6 감지 시 · Start 화면 복귀. - // 그렇지 않으면 "아무것도 안 됨" 처럼 느껴짐 (button 사라진 채 hint 만 반복). - // prevDetached=true 로 세팅해 Start 재클릭 시 즉시 팝업 발생 (line ~1229 가드). + // 2026-08-05: Start 후 0/6 감지 시 · Start 화면 복귀 + 즉시 팝업. + // DetachmentDetection 은 EMI/노이즈로 std ≥ 30 이면 false 를 반환할 수 + // 있어 rising-edge 팝업이 안 뜨는 케이스가 있음. 0/6 은 그 자체로 부착 + // 실패 신호 → 즉시 팝업 강제. if (!waitingForStart) { isContinuousMode = false waitingForStart = true - prevDetached = true - bleManager.debugLogger.warn("ALIGN_V2 sanity: 0/6 walls · Start 후 부착 실패 · waitingForStart 복귀") + prevDetached = true // 재부착 시 dismiss 정상 동작 + showDetachAlert = true // 즉시 팝업 (재클릭 대기 없이) + bleManager.debugLogger.warn("ALIGN_V2 sanity: 0/6 walls · Start 후 부착 실패 · waitingForStart 복귀 + 팝업") } else { bleManager.debugLogger.info("ALIGN_V2 sanity: 0/6 walls · override to attachment check") }