CLINICAL: Alignment 화면에서도 임상 모드 시 adc.csv 자동 저장

문제: PlacementGuideView(Sensor Alignment, 정렬모드 0~4cm)에서는 AdcCsvLogger.log()를
호출하지 않아 adc.csv가 안 생성됨. R&D 정렬모드 알고리즘 개발은 raw ADC가 핵심인데
placements.jsonl + ble.log만 남고 ADC가 누락되던 상황.

원인: AdcCsvLogger.log()는 PiezoMonitoringView (BV 측정)에서만 호출됨. PlacementGuide는
미호출. 일반 사용에서 1초마다 도는 placement scan마다 ADC를 저장하면 파일이 폭주하므로
의도적으로 빠져 있었던 것.

변경:
- PlacementGuideView의 onMultiChannelComplete 콜백 끝에 임상 모드 한정 조건부 추가:
  ClinicalSessionStore.currentSession != null 이면 raw ADC를 adc.csv에 저장
- 일반 사용 흐름은 영향 없음 (currentSession == null이므로 기존 동작 그대로)
- 임상 모드에선 한 alignment 측정(예: 30초)당 ~30-50개 scan이 adc.csv에 누적됨

부차적 fix:
- MainActivity.kt:87 typo 수정 (androidx.com+-pose → androidx.compose)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-26 14:12:39 +09:00
parent 3080cd6b23
commit d0977d98ac
@@ -762,6 +762,13 @@ fun PlacementGuideView(appState: AppState) {
phase = placementPhase.name, phase = placementPhase.name,
score = placementScore score = placementScore
) )
// 임상 모드에서는 raw ADC도 adc.csv에 자동 저장 (정렬모드 알고리즘 분석용).
// 일반 사용에선 1초마다 도는데 매번 저장하면 파일 폭주하므로 임상 모드 한정.
if (com.example.medilightv2android.services.ClinicalSessionStore.currentSession != null) {
val rawADC = channels.sortedBy { it.channel }.map { it.buffer }
com.example.medilightv2android.services.AdcCsvLogger.log(rawADC, null)
}
} }
} // handler.post } // handler.post
bleManager.piezoCollector.onLog = { msg -> Log.d("PlacementGuide", msg) } bleManager.piezoCollector.onLog = { msg -> Log.d("PlacementGuide", msg) }