From cb8500f6cec9a0825f09f70752f0ba58d8174857 Mon Sep 17 00:00:00 2001 From: jjangddu Date: Wed, 20 May 2026 15:59:59 +0900 Subject: [PATCH] =?UTF-8?q?ROUTING:=20Placement=20=EC=A7=84=EC=9E=85=20?= =?UTF-8?q?=EA=B2=BD=EB=A1=9C=20=EB=B6=84=EA=B8=B0=20(Personalization=20vs?= =?UTF-8?q?=20Monitoring)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 빌드 106 적용: placementFromMonitoring 플래그 + enterPlacementFromMonitoring() / backFromPlacementGuide() 헬퍼 추가. Personalization → Placement → Monitoring 정방향과 Monitoring → Placement 재진입 경로에서 Back 동작이 올바르게 분기되도록 일괄 정리. Co-Authored-By: Claude Opus 4.7 (1M context) --- .../com/example/medilightv2android/AppState.kt | 15 +++++++++++++++ .../example/medilightv2android/MainActivity.kt | 2 +- .../ui/views/monitoring/PlacementGuideView.kt | 2 +- 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/example/medilightv2android/AppState.kt b/app/src/main/java/com/example/medilightv2android/AppState.kt index 904c308..466d0ac 100644 --- a/app/src/main/java/com/example/medilightv2android/AppState.kt +++ b/app/src/main/java/com/example/medilightv2android/AppState.kt @@ -27,6 +27,8 @@ class AppState(private val context: Context) { var isDevMode by mutableStateOf(false) var piezoSettings by mutableStateOf(PiezoSettings()) var catheterCount = mutableIntStateOf(0) + // Placement 진입 경로 분기용 — Monitoring에서 재진입 시 true, Personalization에서 진입 시 false + var placementFromMonitoring by mutableStateOf(false) private val storage = UserStorage.getInstance(context) private val historyStore = MeasurementHistoryStore.getInstance(context) @@ -125,6 +127,7 @@ class AppState(private val context: Context) { fun personalizationComplete() { storage.piezoSettings = piezoSettings + placementFromMonitoring = false currentScreen = AppScreen.PLACEMENT_GUIDE } @@ -140,9 +143,21 @@ class AppState(private val context: Context) { fun placementComplete() { bladderLevel = BladderLevel(currentLevel = 0, catheterizationThreshold = bladderLevel.catheterizationThreshold) storage.bladderLevel = 0 + placementFromMonitoring = false currentScreen = AppScreen.PIEZO_MONITORING } + fun enterPlacementFromMonitoring() { + placementFromMonitoring = true + currentScreen = AppScreen.PLACEMENT_GUIDE + } + + fun backFromPlacementGuide() { + currentScreen = if (placementFromMonitoring) AppScreen.PIEZO_MONITORING + else AppScreen.PIEZO_PERSONALIZATION + placementFromMonitoring = false + } + fun pinSet(pin: String) { storage.pin = pin storage.hasPin = true diff --git a/app/src/main/java/com/example/medilightv2android/MainActivity.kt b/app/src/main/java/com/example/medilightv2android/MainActivity.kt index b869648..677c570 100644 --- a/app/src/main/java/com/example/medilightv2android/MainActivity.kt +++ b/app/src/main/java/com/example/medilightv2android/MainActivity.kt @@ -96,7 +96,7 @@ fun MedilightApp(modifier: Modifier = Modifier) { // 메인 플로우: Home → DeviceScan → Personalization → Placement → Monitoring AppScreen.DEVICE_SCAN -> appState.currentScreen = AppScreen.HOME AppScreen.PIEZO_PERSONALIZATION -> appState.currentScreen = AppScreen.DEVICE_SCAN - AppScreen.PLACEMENT_GUIDE -> appState.currentScreen = if (appState.isDeviceConnected) AppScreen.PIEZO_MONITORING else AppScreen.HOME + AppScreen.PLACEMENT_GUIDE -> appState.backFromPlacementGuide() AppScreen.PIEZO_MONITORING -> appState.currentScreen = AppScreen.PLACEMENT_GUIDE // 모니터링 하위 화면 → 모니터링 AppScreen.MEASUREMENT_HISTORY -> appState.currentScreen = AppScreen.PIEZO_MONITORING diff --git a/app/src/main/java/com/example/medilightv2android/ui/views/monitoring/PlacementGuideView.kt b/app/src/main/java/com/example/medilightv2android/ui/views/monitoring/PlacementGuideView.kt index 66b4e69..253ed22 100644 --- a/app/src/main/java/com/example/medilightv2android/ui/views/monitoring/PlacementGuideView.kt +++ b/app/src/main/java/com/example/medilightv2android/ui/views/monitoring/PlacementGuideView.kt @@ -158,7 +158,7 @@ fun PlacementGuideView(appState: AppState) { .padding(horizontal = 24.dp, vertical = 16.dp), verticalAlignment = Alignment.CenterVertically ) { - IconButton(onClick = { appState.currentScreen = if (appState.isDeviceConnected) com.example.medilightv2android.AppScreen.PIEZO_MONITORING else com.example.medilightv2android.AppScreen.HOME }) { + IconButton(onClick = { appState.backFromPlacementGuide() }) { Icon( Icons.AutoMirrored.Filled.ArrowBack, contentDescription = "Back",