Skip to content

[NM-632] 2.1.0 UX 다듬기 — 스모크 결함 수정 - #85

Merged
taew0o merged 14 commits into
developfrom
fix/NM-632-ux-polish
Oct 19, 2026
Merged

taew0o merged 14 commits into
developfrom
fix/NM-632-ux-polish

Conversation

@taew0o

@taew0o taew0o commented Oct 19, 2026

Copy link
Copy Markdown
Contributor

2.1.0 통합 빌드(develop + LiteRT #83 + 촬영 #84)를 S24 실기기 스모크로 돌려 나온 UX 결함을 고친다. 체크리스트 정본은 docs/UX-POLISH-2.1.0.md.

고친 것

# 화면 내용 키
1 수정 화면 메뉴 열린 칩을 다시 누르면 닫힘(외형 · 구분선 · 마크), 바깥 탭 닫기는 터치 시작 위치로 판정 NM-612
3 식별 촬영 화면에 들어오면 모델을 미리 연다 — 앱을 새로 연 뒤 첫 식별이 3초 늦던 것 NM-628
4 촬영 AE/AF 고정이면 링이 노랑(실패보다 먼저) NM-630
5 촬영 야간 촬영 중 진행 원 + 「움직이지 마세요」, 그동안 손짓 막기 NM-630
6 촬영 재촬영 · 야간 전환 · 백그라운드 복귀에도 야간 · 배율 유지 NM-630
8 홈 저장 뒤 최근 식별 조회가 두 번 나가던 것 NM-610
2 · 7 — 문서 · 정본 일치(코드 변경 없음) NM-612

코드 리뷰에서 나와 함께 고친 것

  • 홈 최근 식별이 처음부터 안 불러와짐(초기값 Long.MIN_VALUE 뺄셈 오버플로) — 8번 첫 구현의 결함
  • 모델 닫기를 열기 · 판독이 끝난 뒤로(closeWhenIdle), 닫힌 뒤 재열기 금지, 검출기 열기 실패가 굳지 않게
  • GPU 흔적을 GPU 로 열기 · 판독 · 닫는 동안만 둔다(VisionBackend.whileOnGpu) — 미리 열기로 흔적 구간이 세션 전체로 넓어져, GPU 와 무관한 네이티브 크래시를 GPU 탓으로 오판할 수 있었다(실기기 재현)
  • GPU 실행 실패 → CPU 대체 순서, 빌드가 바뀌면 옛 흔적 무시, 짧은 창 배치 음수, 야간 촬영 중 손짓

확인

  • 로컬: spotlessCheck · detekt · lint · test · :app:assembleDebug · :wear:assembleDebug · :core:vision:assembleDebugAndroidTest
  • S24(debug) 실기기 — 체크리스트 각 줄의 「실기기」 칸

정본 개정 대상

  • 「움직이지 마세요」(야간 촬영 진행) — 촬영 화면 정본에 없는 문구

🤖 Generated with Claude Code

taew0o and others added 14 commits October 19, 2026 09:28
메뉴 팝업은 다른 칩으로 한 번에 넘어가려고 포커스를 안 가져서, 바깥 탭에 스스로 닫히면
탭 하나가 팝업 닫기와 아래 칩 클릭 둘 다로 갔다. 열린 칩을 다시 누르면 닫혔다가 같은 탭의
클릭으로 곧바로 다시 열려 닫히지 않는 것처럼 보였다(외형 · 구분선 · 마크 메뉴, S24 실기기).

팝업은 바깥 탭에 닫히지 않게 두고(dismissOnClickOutside = false), 수정 화면이 터치가 시작될
때마다(Initial · 먹지 않음) 열린 칩 밖이면 닫는다(EditMenus.onDown). 열린 칩은 자기 자리를
LocalMenuAnchor 로 알린다. 열린 칩 위의 탭은 칩이 한 번만 토글한다 — 누른 시간과 무관하다.

처음엔 닫은 뒤 0.5초 안의 같은 칩 클릭을 먹는 시간 창이었는데, 길게 누르면 새고 일부러
바로 다시 연 탭(빈 곳 탭 · 항목 선택 직후)까지 먹어 버렸다(코드 리뷰).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
v1 속성 추출은 Gemini 가 아니라 색 OpenCV · 모양 · 제형 자체 분류 모델이고, 회원별 일 15회
한도는 그대로다. 디버그 캐시는 다른 사진의 속성을 붙이므로 디버그 빌드로 정확도를 보면
안 된다는 경고를 남긴다(2026-10-19 실기기에서 「너무 못 잡는다」로 오인).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
기록 변경(저장)과 홈 표시가 1초 사이에 겹쳐 GET pill-histories?limit=1 이 연달아 나갔다
(S24 실기기). 홈 표시로 받는 쪽은 3초 안에 받은 적이 있으면 건너뛴다. 기록 변경은 따로
받으므로 놓치지 않고, 실패는 다음 표시 때 다시 받는다. (NM-632 체크리스트 8번)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
앱을 새로 연 뒤 첫 식별만 검출이 +3초, 각인 · 마크가 +4.7초 늦었다(S24 · LiteRT GPU 셰이더 준비).
촬영 화면에 들어오면 검출 · 각인 · 마크를 미리 연다 — 구도를 잡는 동안 끝난다.

- PillOnDeviceModels: 검출기는 지연값(미리 열기와 검출이 겹쳐도 한 번), 각인 · 마크는 잠가 연다
- 별도 범위에서 열고, 닫기는 열기가 끝난 뒤 — viewModelScope 취소로 열린 모델이 새지 않게
(NM-632 체크리스트 3번)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- AE/AF 고정이면 초점 실패보다 먼저 노랑으로 그린다(기본 카메라와 같다)
- 야간으로 찍는 수 초 동안 진행 원과 「움직이지 마세요」를 띄우고 가운데 초점 링을 숨긴다
- 재촬영 · 야간 전환 · 백그라운드 복귀에도 고른 야간 · 배율을 이어 간다

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
초기값 Long.MIN_VALUE 를 빼면 넘쳐 음수가 되어 늘 「방금 받았다」로 건너뛰었다. 없음을 null 로 둔다.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- 닫기는 열기 · 판독이 끝난 뒤(각 리더의 잠금을 잡고) 하고, 닫힌 뒤엔 다시 열지 않는다
- 검출기 열기 실패가 플로우 내내 굳지 않게 다음 호출이 다시 연다
- GPU 실행 실패 대체는 CPU 를 먼저 열고 성공한 뒤 GPU 를 닫는다
- GPU 흔적은 모델이 열려 있는 동안이 아니라 GPU 로 열기 · 판독 · 닫는 동안만 둔다
- 앱 · OS 빌드가 바뀌면 옛 빌드의 흔적으로 새 빌드를 막지 않는다

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@taew0o

taew0o commented Oct 19, 2026

Copy link
Copy Markdown
Contributor Author

통과 기준 대조

기준 근거 판정
코드 리뷰 지적 반영 10건 전부 수정 — docs/UX-POLISH-2.1.0.md 「코드 리뷰 반영」 표 ○
로컬 검사 spotlessCheck · detekt · lint · test · app/wear debug · core:vision androidTest 빌드 ○
CI build SUCCESS(9m40s) · MERGEABLE ○
1 메뉴 다시 닫힘 S24 — 다시 누르기 · 길게 · 다른 칩 · 빈 곳 · 마크 칩 · 뒤로가기 6경우 ○
3 첫 식별 지연 S24 — 새로 연 뒤 첫 식별 검출 추론 799ms · 면당 0.9초(미리 열기 전 +3초) ○
4 · 5 · 6 촬영 S24 — 고정 링 노랑 · 야간 진행 표시 · 2× · 야간이 복귀 · 재촬영 뒤 유지 ○
8 홈 조회 한 번 S24 — 앱 시작 1회 · PUT 뒤 1회, 홈에 새 기록 표시 ○
모델 닫기 · GPU 흔적 S24 — 촬영 화면 진입 직후 나가기 · 판독 중 앱 종료 모두 크래시 없음 · gpu_attempt 없음 ○
LiteRT 대조(이 브랜치 core:vision) Test Lab S26(Android 16) 23개 통과 · 검출 GPU=CPU 6개 IoU ≥ 0.99999. 나머지 9대는 진행 중 — 결과는 NM-628 에 적는다 ○(1대)

정본에 없는 문구 「움직이지 마세요」는 촬영 화면 정본 개정 대상으로 남긴다.

@taew0o
taew0o merged commit 1dd8926 into develop Oct 19, 2026
1 check passed
@taew0o taew0o mentioned this pull request Oct 21, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant