chore(cleanup): NIRS/VIVAMYO 세트 완전 제거 (Category A · 사용자 요청)

배경: NIRS 는 초기 iOS 앱에서 이식했으나 현재 완전 미사용. Piezo 만 실사용.

완전 제거 (6 파일):
  · managers/NirsManager.kt (94 L)
  · managers/NirsCalcEngine.kt (206 L)
  · models/NirsConstants.kt (49 L)
  · models/NirsData.kt (106 L · NirsMcjPacket · NirsMagResponse · NirsOxyResult)
  · ui/views/monitoring/VivamyoMonitoringView.kt (497 L)
  · ui/views/calibration/CalibrationView.kt (216 L) + calibration/ 디렉토리

부분 편집:
  · AppState.kt      — NirsManager import · NIRS_CALIBRATION/VIVAMYO_MONITORING enum ·
                       calibrationComplete() · sensor 분기 3곳 (goHome/enterDemoMode/
                       deviceConnected/backToMonitoring) 모두 PIEZO 로 단순화
  · MainActivity.kt  — CalibrationView/VivamyoMonitoringView import + Crossfade branch +
                       back-handler branch 삭제
  · BleManager.kt    — 콜백 4개 (onNirsPowerOn/SensorActivated/MagReceived/McjReceived) ·
                       sendRawWrite when-branch 4개 · NIRS Commands 섹션 5 함수 ·
                       RX branch 4개 삭제
  · MeasurementService.kt — performNirsMeasurement 제거 · performMeasurement 단순화 ·
                       stop() 콜백 정리 · SensorMode 유지 (센서 추가 대비)
  · SensorMode.kt    — NIRS enum value 삭제 · PIEZO 만 남음 · UserStorage 는
                       valueOf 실패 시 PIEZO fallback 이라 마이그레이션 불필요
  · SensorSelectView.kt — NIRS SensorCard 제거
  · strings.xml × 2  — sensor_nirs_desc · calibration_* 10개 · vivamyo_* 17개 삭제
                       (calibration_continue 는 PiezoPersonalization 사용 → 유지)

합계: 약 1,300 LOC 감소.
빌드: BUILD SUCCESSFUL 17s.
This commit is contained in:
2026-08-12 15:38:59 +09:00
parent 0fe0687041
commit 1ce19949c9
14 changed files with 9 additions and 1325 deletions
@@ -19,25 +19,11 @@ class MeasurementService private constructor(context: Context) {
val isMeasuring = mutableStateOf(false)
// 2026-08-12: NIRS 제거 후 PIEZO 만 남음. 시그니처는 향후 센서 추가 대비 유지.
@Suppress("UNUSED_PARAMETER")
fun performMeasurement(mode: SensorMode, completion: (Boolean) -> Unit) {
isMeasuring.value = true
when (mode) {
SensorMode.NIRS -> performNirsMeasurement(completion)
SensorMode.PIEZO -> performPiezoMeasurement(completion)
}
}
// 2026-07-07 fix: MeasurementService 는 singleton. 콜백을 대입만 하고 정리하지 않으면
// BleManager 에 stale closure 가 계속 살아있어 이후 응답 이벤트가 이미 완료된
// measurement session 의 completion() 을 다시 호출. Self-clearing lambda 로 처리.
private fun performNirsMeasurement(completion: (Boolean) -> Unit) {
bleManager.onNirsMcjReceived = null // 이전 stale 콜백 해제
bleManager.onNirsMcjReceived = { _ ->
bleManager.onNirsMcjReceived = null // 응답 1회 처리 후 자동 해제
isMeasuring.value = false
completion(true)
}
bleManager.sendMcjQuery()
performPiezoMeasurement(completion)
}
private fun performPiezoMeasurement(completion: (Boolean) -> Unit) {
@@ -52,8 +38,6 @@ class MeasurementService private constructor(context: Context) {
fun stop() {
isMeasuring.value = false
// 대기 중이던 콜백 취소.
bleManager.onNirsMcjReceived = null
bleManager.onPiezoDataReceived = null
bleManager.sendPiezoStop()
}