UX Phase 3: Polish — 라벨/안전/실루엣 정리
스크린샷에서 발견된 디테일 4건 fix.
9. Status badge 임상 모드 분기
- 일반 모드: urgency.message ("Enjoy your day!" 등) 그대로
- 임상 모드: "Supine · 0 cm" 같은 측정 라벨 표시
- 임상 시연 시 캐주얼 메시지가 부적절했던 문제 해결
- 검사자가 현재 어느 condition인지 즉시 인지 가능
10. 카테터 카운트에 "left" 라벨 추가
- 이전: 아이콘 + 숫자만 (의미 모호 — 잔여? 추가? 누적?)
- 새로: 아이콘 + 숫자 + "left" 텍스트 (10×fontScale, 0.7 alpha)
- 한눈에 "잔여 카테터" 의미 전달
11. 토르소 실루엣 모래시계 완화
- chestW 0.42 → 0.40 (어깨 살짝 축소)
- waistW 0.32 → 0.36 (허리 덜 잘록 — 다리처럼 보이던 원인)
- hipW 0.46 → 0.42 (골반 살짝 축소)
- 결과: 더 자연스러운 토르소 형태
12. Skip 버튼 Dev 모드 한정
- 이전: 항상 표시 (임상에선 정렬 우회 위험)
- 새로: appState.isDevMode일 때만 표시 + "Skip (Dev)" 라벨 + 크기 ↓
- 폰트 15→13sp, alpha 0.6 — 의도된 dev 도구임을 시각적으로 명시
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
+9
-2
@@ -899,6 +899,9 @@ fun PiezoMonitoringView(appState: AppState) {
|
||||
Icon(Icons.Default.LocalHospital, "Catheter", tint = MlPrimary, modifier = Modifier.size(16.dp))
|
||||
Spacer(modifier = Modifier.width(4.dp))
|
||||
Text("$cathCount", fontSize = (13 * fontScale).sp, fontWeight = FontWeight.Bold, color = MlPrimary)
|
||||
Spacer(modifier = Modifier.width(2.dp))
|
||||
Text("left", fontSize = (10 * fontScale).sp, fontWeight = FontWeight.SemiBold,
|
||||
color = MlPrimary.copy(alpha = 0.7f))
|
||||
}
|
||||
}
|
||||
if (showAddCatheter) {
|
||||
@@ -983,8 +986,12 @@ fun PiezoMonitoringView(appState: AppState) {
|
||||
Arrangement.spacedBy(nonDevSpacing)
|
||||
) {
|
||||
|
||||
// Status badge (항상 urgency 메시지) — 빌드 114: dev 모드 한정 탭 시 더미 측정값 주입
|
||||
val statusText = urgency.message
|
||||
// Status badge — 임상 모드에선 측정 라벨, 일반 모드에선 urgency 메시지.
|
||||
// 빌드 114: dev 모드 한정 탭 시 더미 측정값 주입
|
||||
val clinicalSession = com.example.medilightv2android.services.ClinicalSessionStore.currentSession
|
||||
val statusText = if (clinicalSession != null)
|
||||
"${clinicalSession.posture.label} · ${clinicalSession.step.label}"
|
||||
else urgency.message
|
||||
val statusColor = urgency.accentColor
|
||||
Text(
|
||||
text = statusText,
|
||||
|
||||
+15
-12
@@ -342,9 +342,10 @@ fun PlacementGuideView(appState: AppState) {
|
||||
val waistY = h * 0.42f
|
||||
val hipY = h * 0.76f
|
||||
val pubisY = h * 0.96f
|
||||
val chestW = bodyW * 0.42f
|
||||
val waistW = bodyW * 0.32f
|
||||
val hipW = bodyW * 0.46f
|
||||
// bodyW: Charles 833c110 가로 모드 대응 / 비율: 우리 d6b0a6b 다리처럼 안 보이게 조정
|
||||
val chestW = bodyW * 0.40f
|
||||
val waistW = bodyW * 0.36f
|
||||
val hipW = bodyW * 0.42f
|
||||
|
||||
// ── Torso silhouette — hourglass via cubic bezier ──
|
||||
val bodyPath = Path().apply {
|
||||
@@ -881,15 +882,17 @@ fun PlacementGuideView(appState: AppState) {
|
||||
Text("Start Scanning", fontSize = 28.sp, fontWeight = FontWeight.Bold, color = Color.White)
|
||||
}
|
||||
|
||||
// Skip button
|
||||
Spacer(modifier = Modifier.height(8.dp))
|
||||
TextButton(onClick = { isContinuousMode = false; appState.placementComplete() }) {
|
||||
Text(
|
||||
text = "Skip",
|
||||
fontSize = 15.sp,
|
||||
fontWeight = FontWeight.SemiBold,
|
||||
color = MlSecondaryText
|
||||
)
|
||||
// Skip — Dev 모드 한정 (임상에선 정렬 우회 위험)
|
||||
if (appState.isDevMode) {
|
||||
Spacer(modifier = Modifier.height(8.dp))
|
||||
TextButton(onClick = { isContinuousMode = false; appState.placementComplete() }) {
|
||||
Text(
|
||||
text = "Skip (Dev)",
|
||||
fontSize = 13.sp,
|
||||
fontWeight = FontWeight.SemiBold,
|
||||
color = MlSecondaryText.copy(alpha = 0.6f)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
Spacer(modifier = Modifier.height(32.dp))
|
||||
|
||||
Reference in New Issue
Block a user