docs: v7 (2026-07-10) 반영 — msp 제거, 6-stage alignment, mtb queue fix, labdb 자동 재시도

이번 세션 대량 변경 사항을 5개 문서에 반영. 각 문서마다 stale 이던
섹션을 갱신하거나 신규 섹션 추가.

USER_GUIDE.md
  - Sensor Alignment 를 V1 (3-stage) / V2 (6-stage) 로 재구성
  - V2 6-stage 표 + relaxed mode / soft hint 설명
  - GREEN 진입 5초 hold + 10-strike 리셋 완화 명시
  - "최적의 위치입니다!" 문구 반영

docs/BLE_PROTOCOL_REFERENCE.md
  - msp 명령 취소선 처리 + mim 신규 명령 문서화
  - Watchdog timeout 25초 연장 명시 (2.5)
  - §2.6 신규: firmware VBTFW0121 mls mode 0 freeze 취약점 +
    앱 측 3-layer 회피 (isMtbBusy / mtb 3초 timeout / 자동 재연결)

VesiScan_Android_Pipeline_Summary.md
  - v7 (2026-07-10) 섹션 신규 추가 — BLE / Alignment / UI / labdb /
    tools 5개 카테고리로 변경 사항 정리
  - 권장 펌웨어 표기 VBTFW0116 → VBTFW0120+ 로 갱신

labdb.md
  - §12b 신규: 앱 측 Auto Retry Policy — endMeasurement 자동 업로드
    조건 완화, LabdbAutoRetry object, UI 배너, 재시도 안전성

tools/README.md
  - labdb_upload.py 섹션 신규 — 사용법 / 폴더 구조 / 재실행 안전성 /
    buildPayload 로직 / 활용 예 정리

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
2026-07-10 11:25:26 +09:00
parent b822b49fc6
commit 60b630d3de
5 changed files with 367 additions and 32 deletions
+67 -2
View File
@@ -2,8 +2,73 @@
## 작성일: 2026-04-23
## 작성자: dwjang
## 마지막 업데이트: 2026-05-26 (v6) — 1.0.0-design (versionCode 24)
## 권장 펌웨어: **VBTFW0116** (pending slot 1→8 확장으로 ADC drop 안정)
## 마지막 업데이트: 2026-07-10 (v7) — 1.2.0-demo (versionCode 26)
## 권장 펌웨어: **VBTFW0120+** (mim FIFO 지원 필수. VBTFW0121 은 `mls mode 0` handler 취약)
### v7 주요 변경 요약 (2026-07-06 ~ 2026-07-10)
**BLE / Firmware 대응**
- **`msp` 완전 제거 → `mim` (FIFO 15 sample) 로 통일** (커밋 34ae4d7/deae8a7/9907931).
신 firmware 는 mim 만 사용. `rsp:` 파서는 legacy 응답 대비 유지.
- **mtb queue overrun freeze 3-layer fix** (커밋 9907931). 실측 로그에서 mtb 응답
stream 중 `msn`/`mim` 이 끼어들어 firmware GATT queue 꼬임 → `mls mode 0`
에서 완전 freeze 확인. 상세: [BLE_PROTOCOL_REFERENCE.md](docs/BLE_PROTOCOL_REFERENCE.md) §2.6.
- `isMtbBusy` 프로퍼티 + battery/mim polling 시 skip
- mtb 3초 timeout + `consecutiveMtbTimeouts` state
- 3회 연속 실패 시 자동 `forceDisconnectAndReconnect()`
- **Watchdog timeout 15초 → 25초 연장** (커밋 0383a21). 재연결 후 첫 RX 가 14초
지연 도착하는 케이스 허용.
- **좀비 세션 방지**: `onConnectionStateChanged` 콜백을 CCCD write 완료 시점으로
이동 (BleManager). `fwFallbackTimer` / `cccdRetryTimer` / `mtbTimeoutRunnable`
disconnect 시 취소.
- **Auto scan 명령 `maa` → `mtb` 로 전환** (커밋 29b6ca5). maa 는 IMU 응답
없음 (posture 갱신 X). mtb 는 reb×6 + raa + rim 이라 auto scan 중에도 posture
실시간 업데이트.
- **lastBleRxAt 갱신 확대** (커밋 3a41864). `processReceivedData` 진입점에서
모든 유효 응답에 대해 갱신 → "기기 응답 없음" false-positive 배너 해소.
**Alignment (V2 6-stage)**
- **CH3 flicker 무한 대기 방지** (커밋 e808b5b). VERTICAL_CLIMB 진입 조건을
"3연속 hit" → "최근 6프레임 중 3회 hit" sliding window majority 로 완화.
20 프레임 대기 시 상단 3채널 relaxed mode 진입 (CH3 없이도 정렬 완료).
12 프레임 반복 시 문구 자동 완화 ("↑ 위로" → "CH3 확인 중").
- **6단계 완료 후 "측정 시작" 버튼 활성화 fix** (커밋 49aab7b). 기존
`phase == LR_BALANCE` 조건이 실제 완료 phase (`FINAL_CONFIRM`) 를 못 잡아
버튼 disable 되던 버그. `state=="commit" && phase==FINAL_CONFIRM` 로 수정.
- **GREEN 진입 후 5초 hold** (커밋 159116d). V2 에도 V1 처럼 hold 로직 추가.
순간 flick 으로 GREEN 즉시 풀리는 UX 문제 해소.
- **GREEN zone 조기 리셋 완화** (커밋 7484077). V1 의 3-strike → **10-strike**
(약 5초+). 미세 자세 흔들림으로 "0/3 정렬시작" 리셋되던 버그 완화.
- **문구 개선**: "제 위치입니다!" → **"최적의 위치입니다!"** / "In position!"
→ "Optimal position!" (커밋 7484077).
**UI / UX**
- **Posture 라벨**: "서있음" → **"일어남"** (`piezo_posture_upright`, 한글).
영문 "Upright" 유지.
- **도넛차트 posture chip stuck 버그** (커밋 149e511/3abc024): `imuCollector.onComplete`
콜백이 DisposableEffect race 로 즉시 null 되던 문제. 세 화면
(PiezoMonitoring / PlacementGuide / ClinicalLive) 의 DisposableEffect 에서
콜백 null 정리 제거. stale 콜백은 다음 화면 진입 시 자기 콜백으로 덮어씀.
**Clinical 세션 / labdb**
- **labdb 자동 업로드 강화** (커밋 db6e7e1/93b8650/8c17407):
- `endMeasurement` 자동 업로드 조건 완화 (`isRegistered` 만 체크, `lastStatus == "active"` 조건 제거)
- 신규 `LabdbAutoRetry` object — ClinicalHome 진입 시 미업로드 폴더 자동 재시도
- 상단 배너 UI (진행 중 / 완료 결과)
- **KnownDeviceStore clinical flow 제한 제거** (커밋 b822b49). 일반 모드에서도
연결한 기기 자동 저장 + DeviceScan 상단에 표시.
**Python tools**
- **`tools/labdb_upload.py` 신규** — LabdbUploader.kt 의 `buildPayload` 로직을
Python 으로 이식. 외부 저장 세션 폴더 일괄 업로드용.
자세한 사용법: [tools/README.md](tools/README.md).
**참고**
- 이번 세션에서 발견되었으나 아직 미조치: PiezoMonitoringView (2900L) /
PlacementGuideView (2200L) 대형 파일 분해, Design Token 중앙화, ViewModel
도입 등 아키텍처 개선 사항은 별도 로드맵으로 진행 예정.
### v6 주요 변경 요약 (2026-05-12 ~ 2026-05-26)
### v6 주요 변경 요약 (2026-05-12 ~ 2026-05-26)