92852a1168
사용자 앱 e7189afb 와 같은 변경을 임상 앱에 옮긴다. 2026-08-04 의 삭제 흐름은 "확인 → 14초
재연결 → 실패 시 강제 삭제" 였다. 지우려는 기기는 대개 이미 연결이 안 되는 기기라 그 14초는
정의상 실패했고, 사용자에게는 "삭제가 안 된다"로 읽혔다(10-06 사용적합성평가 · 10-07 임상 폰).
기기 쪽 본드는 연결된 채 msr? 를 보내거나 기기 15초 초기화로만 지워진다는 제약은 그대로
두고(기기 변경 없음), 앱 쪽 순서를 바꾼다.
· 삭제는 항상 즉시 폰 쪽을 지운다. 기다리는 단계가 기본 경로에 없다.
· 지금 연결돼 있으면 기기 쪽도 같이 지운다(msr?). 사용자가 고를 일이 없다.
· 방금(5초 안) 광고를 본 기기만 7초 접속해 양쪽을 지우려 하고(BleManager.lastSeenAgoMs
신설), 그 사이 [기다리지 않고 삭제] 가 있다(abortUnbondSmart). 닿지 않으면 폰에서만
지우고 파란 알림으로 "기기 15초 초기화 필요" 를 말한다.
· 폰에서만 지운 주소는 ResetNeededStore 에 남기고, 새 기기 목록에 다시 보이면 신호 세기
자리에 "초기화하지 않았다면 연결이 거절됩니다" 를 붙인다. 그 기기와 GATT 연결이 성립하면
지운다(이 앱에는 본드 수신기가 없어 연결 성공 분기에서 거둔다).
· 본드 불일치 감지(FastFailDetector): connectGatt 뒤 1.5초 안에 실패가 같은 주소로 2번
연속이면 BOND_MISMATCH_SUSPECTED. 자동 재시도를 멈추고 기기 15초 초기화를 안내한다.
폰에 본드가 남아 있을 때만 [이 폰의 본딩 정보 초기화] 를 함께 준다(isAddressBonded 신설).
· 강제 삭제 뒤 옛 오류 배너가 남던 것도 같이 지운다(사용자 앱 9c115871).
문구: unpair_* 를 상황별 세 가지로 갈고 안 쓰는 6개는 지웠다. FastFailDetectorTest 6건.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>