Files
VesiscanClinicalAndroid/app/src
dw.jang 43ad32ba8a refactor(ui): Design Token 중앙화 + AlertModalDialog 컴포넌트화 (Step 1~3)
초 고수 앱 디자이너 코드 리뷰 결과 반영. 저비용/저리스크 항목만 우선 진행,
대형 파일 분해 등은 별도 로드맵.

Step 1: Design Token (Color.kt + Theme.kt)
  - Color.kt 에 semantic token 추가: MlCritical / MlWarning / MlSuccess /
    MlInfo / MlNeutral / MlAccentPurple + ContainerAlpha / ChipAlpha 상수
  - Theme.kt LightColorScheme 를 Purple40 → MlPrimary 로 override.
    기존에는 Material3 default 가 Purple 이라 Button 등 커스텀 UI 와
    색상 불일치 발생. brand 통일.

Step 2: AlertModalDialog 컴포넌트화 (ui/components/AlertModalDialog.kt)
  - 3개 알람 다이얼로그 (Wakeup 주황, Walking 빨강, Detach 주황) 가
    100% 동일 구조 (배경색만 다름) 로 각각 40~50줄 반복.
  - 재사용 가능한 AlertModalDialog(backgroundColor, icon, title,
    subtitle, detail, confirmLabel, onConfirm, widthFraction, iconSize,
    titleSize, dismissible) 로 통합.
  - dismissible=false 가 default (의료 알람은 사용자 명시 확인 필요).
  - PiezoMonitoringView (Wakeup + Walking) / PlacementGuideView (Detach)
    3곳 모두 새 컴포넌트로 교체. 코드량 ~120줄 감소.

Step 3: LabdbAutoRetry 배너 semantic token 적용
  - ClinicalHomeView 자동 업로드 배너의 Color(0xFF1976D2) → MlInfo,
    Color(0xFFFF9800) → MlWarning, Color(0xFF4CAF50) → MlSuccess.
  - ChipAlpha (0.12f) 로 배경 alpha 통일.

효과:
  - 신규 배너/Dialog 는 반드시 semantic token 사용 → 색상 일관성 관리 용이.
  - 색상 변경 시 Color.kt 한 파일만 수정하면 전역 반영.
  - AlertModalDialog 로 신규 알람 추가 시 10~15줄로 가능 (이전 50줄+).

미완료 (별도 로드맵):
  - 기존 파일의 나머지 매직 hex 색상 (~300개) → semantic token 마이그레이션.
    광범위 변경 + 실기 회귀 위험 있어 순차 진행 필요.
  - 대형 파일 분해 (PiezoMonitoringView 2900L, PlacementGuideView 2200L).
  - ViewModel 도입, BLE 콜백 → Flow 이전.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-07-10 11:52:37 +09:00
..