docs: 2026-08-12 코드 정리 & 리뷰 산출 문서
3개 카테고리 (A NIRS · B YOLO · C 참조 0) 정리 결과 통합 문서. 포함: · 카테고리별 실제 제거 항목 · LOC · 커밋 해시 (demo/cloud 각각) · 총 ~2,378 LOC + 10.6 MB APK 감소 · Category D (유지 권장) 후속 검토 리스트 · Explore 조사 오탐 회고 (DfuBleScanner/DfuNus/DfuNusConnection 실사용 확인) · 남은 개선 여지 (시그니처 축소 · enum orphan · SharedPrefs 마이그레이션) · 브랜치별 커밋 체인 · 검증 상태 브랜치 최종: · demo-final:0fe0687→1ce1994→26dc53b→b028060· feature/cloud-mvp: 844e0c0 → 7ff166f → dce9cca → 13955bc
This commit is contained in:
@@ -0,0 +1,122 @@
|
|||||||
|
# 코드 정리 & 리뷰 · 2026-08-12
|
||||||
|
|
||||||
|
_대상: demo-final + feature/cloud-mvp 두 브랜치 · 총 ~2,400 LOC + 10.6 MB APK 감소_
|
||||||
|
|
||||||
|
## 1. 실제 제거 (완료)
|
||||||
|
|
||||||
|
### Category A · NIRS / VIVAMYO 세트 (사용자 요청)
|
||||||
|
- **완전 제거 파일 6개** (~1,168 LOC): `NirsManager` · `NirsCalcEngine` · `NirsConstants` · `NirsData` · `VivamyoMonitoringView` · `CalibrationView`
|
||||||
|
- **부분 편집 8개 파일** (~135 LOC): `AppState` · `MainActivity` · `BleManager` · `MeasurementService` · `SensorMode` · `SensorSelectView` · `strings.xml` × 2
|
||||||
|
- **핵심 변경**: `SensorMode` enum `NIRS` value 삭제 · BleManager NIRS 콜백 4 + 명령 5 + RX branch 4 삭제 · `AppScreen.NIRS_CALIBRATION`/`VIVAMYO_MONITORING` enum 삭제
|
||||||
|
- **커밋**: demo-final `1ce1994` · cloud-mvp `7ff166f`
|
||||||
|
|
||||||
|
### Category B · YOLO / CameraX / OCR 세트 (사용자 요청)
|
||||||
|
- **완전 제거**: `YoloDetector` · `SimpleMeasureService` · `CCPosition` · `UrineCameraScreen` (~710 LOC) + `urinecup_best.onnx` (10.6 MB)
|
||||||
|
- **Gradle deps 삭제**: onnxruntime-android · mlkit text-recognition · androidx.camera × 4
|
||||||
|
- **AndroidManifest.xml**: CAMERA permission + hardware.camera feature 삭제
|
||||||
|
- **부분 편집**: `AppState` (URINE_CAMERA enum) · `MainActivity` · `PiezoMonitoringView` (카메라 카드 · LaunchedEffect) · `MainShell` (cloud-mvp 만) · strings.xml × 2 (15 키)
|
||||||
|
- **커밋**: demo-final `26dc53b` · cloud-mvp `dce9cca`
|
||||||
|
|
||||||
|
### Category C · 참조 0 dead code
|
||||||
|
- 당초 조사 대상 **5개 중 2개만 실제 제거**:
|
||||||
|
- ✅ `speech/HfVolumeExtractor.kt` (298 LOC · 옛 HuggingFace API 실험)
|
||||||
|
- ✅ `res/raw/bladdy_loading3.riv` (asset · 참조 0)
|
||||||
|
- **⚠️ Explore 조사 오탐 발견** — 3개 파일이 실제로 `DfuManager` 에서 참조 중 · 컴파일 실패로 확인:
|
||||||
|
- ❌ `DfuBleScanner.kt` (`BleScanner`, `ScannedDevice`)
|
||||||
|
- ❌ `DfuNus.kt` (`NusPacket`)
|
||||||
|
- ❌ `DfuNusConnection.kt` (`NusConnection`)
|
||||||
|
- → 3개 모두 **유지**. `git checkout HEAD --` 로 복구.
|
||||||
|
- **okhttp3** dependency 는 `LabdbClient` 에서 사용 중 → 유지.
|
||||||
|
- **커밋**: demo-final `b028060` · cloud-mvp `13955bc`
|
||||||
|
|
||||||
|
### 총합
|
||||||
|
| 카테고리 | LOC | Asset | 커밋 (demo/cloud) |
|
||||||
|
|---|---:|---:|---|
|
||||||
|
| A · NIRS | ~1,300 | — | 1ce1994 / 7ff166f |
|
||||||
|
| B · YOLO/Camera | ~780 | 10.6 MB | 26dc53b / dce9cca |
|
||||||
|
| C · 참조 0 | ~298 | 1 | b028060 / 13955bc |
|
||||||
|
| **합계** | **~2,378** | **~10.6 MB** | — |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 2. 코드리뷰 · 발견 사항 (elite programmer 관점)
|
||||||
|
|
||||||
|
### 2-1. Category D (유지 권장 · 애매) — 사용자 확인 필요
|
||||||
|
|
||||||
|
Explore 조사에서 참조 0 이라 판정됐으나 · 실제 실사용 여부 확실치 않아 유지한 항목. 개별 검증 후 각각 삭제/유지 결정 필요:
|
||||||
|
|
||||||
|
| 항목 | LOC | 판정 |
|
||||||
|
|---|---:|---|
|
||||||
|
| `ConsentView.kt` | 194 | `AppScreen.CONSENT` 진입점 없음 · 하지만 flow 재설계 대비 |
|
||||||
|
| `SensorSelectView.kt` | 126 | `AppScreen.SENSOR_SELECT` 진입점 없음 · 향후 센서 추가 대비 |
|
||||||
|
| `VoidingDiaryView.kt` | 294 | `AppScreen.VOIDING_DIARY` 진입점 없음 · History 탭에서 lazy import 가능 |
|
||||||
|
| `ReminderSettingsView.kt` | ? | `AppScreen.REMINDER_SETTINGS` 진입점 없음 |
|
||||||
|
| `CatheterizeSheet.kt` | 226 | 이름만 겹칠 수도 · 확실치 않음 |
|
||||||
|
| `AlignmentAdvisorV2.kt` | 722 | clinical alignment session 진입점 확인 필요 |
|
||||||
|
| `AlignmentAdvisorV3.kt` | 256 | `demo-final` 만 존재 · 실사용 확인 필요 |
|
||||||
|
| `MeasurementService` | (수정됨) | `getInstance` 호출 0 · 하지만 이번에 NIRS 정리하며 편집만 · 별도 확인 필요 |
|
||||||
|
|
||||||
|
**권장**: 다음 정리 세션에서 각각 grep 재검증 후 확실한 것만 삭제.
|
||||||
|
|
||||||
|
### 2-2. 이번 정리 중 발견된 개선 사항
|
||||||
|
|
||||||
|
#### A · 시그니처 축소 여지
|
||||||
|
- `MeasurementService.performMeasurement(mode: SensorMode, ...)` — `SensorMode` 가 PIEZO 만 남았으므로 mode 파라미터 자체 삭제 가능. 지금은 향후 센서 추가 대비 유지 · 나중에 정말 안 늘어나면 삭제.
|
||||||
|
- `AppState.selectSensor(mode: SensorMode)` — 위와 동일.
|
||||||
|
|
||||||
|
#### B · 남은 enum orphan (컴파일 되지만 dead)
|
||||||
|
- `AppScreen.CONSENT` · `SENSOR_SELECT` · `VOIDING_DIARY` · `REMINDER_SETTINGS` — 진입점 (`appState.currentScreen = ...`) 없음. Category D 화면 삭제 시 enum 도 함께 정리.
|
||||||
|
|
||||||
|
#### C · Deprecated 주석 검사
|
||||||
|
- `AppScreen.HOME` 에 "레거시 — 더 이상 라우팅 타깃 아님" 주석 (cloud-mvp only). enum 유지 이유가 legacy 만족 X · 삭제 검토.
|
||||||
|
|
||||||
|
#### D · SharedPrefs 마이그레이션 안전
|
||||||
|
- `SensorMode.NIRS` value 삭제 후 · `UserStorage.sensorMode` 는 `valueOf()` 실패 시 `PIEZO` fallback 이 이미 있어 기존 사용자 데이터 손상 없음. **verified**.
|
||||||
|
|
||||||
|
### 2-3. 조사 오탐 회고
|
||||||
|
|
||||||
|
**Explore agent 참조 0 판정의 한계**:
|
||||||
|
- 파일 이름 기반 grep + 클래스 이름 grep 만으로는 top-level function 참조를 놓칠 수 있음
|
||||||
|
- 특히 `DfuManager` 처럼 `import com.medithings.vesiscan.firmware.BleScanner` 형태로 top-level function import 사용 시 클래스 이름과 파일 이름이 달라 놓침
|
||||||
|
- **교훈**: 삭제 전 반드시 `./gradlew compile` 로 확인 · 실패 시 즉시 `git checkout` 복구 후 재판정
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 3. 브랜치별 최종 상태
|
||||||
|
|
||||||
|
### demo-final
|
||||||
|
```
|
||||||
|
0fe0687 → 1ce1994 (A: NIRS) → 26dc53b (B: YOLO) → b028060 (C: 참조 0)
|
||||||
|
```
|
||||||
|
|
||||||
|
### feature/cloud-mvp
|
||||||
|
```
|
||||||
|
844e0c0 → 7ff166f (A: NIRS) → dce9cca (B: YOLO) → 13955bc (C: 참조 0)
|
||||||
|
```
|
||||||
|
|
||||||
|
두 브랜치 모두 push 완료. 각 카테고리 커밋이 분리돼있어 rollback (git revert) 가능.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 4. 다음 스텝 (선택)
|
||||||
|
|
||||||
|
1. **Category D 개별 재검증**:
|
||||||
|
- 각 화면에 대해 실사용 grep 재확인
|
||||||
|
- 사용자와 각 화면 필요성 논의 후 삭제/유지
|
||||||
|
2. **strings.xml 미참조 키 정리**:
|
||||||
|
- 대규모 grep 스캔 필요 · 별도 세션
|
||||||
|
3. **AlignmentAdvisorV2/V3 정리**:
|
||||||
|
- clinical alignment session 진입점 실사용 확인 · dead 이면 대량 삭제 가능
|
||||||
|
4. **assets/ 검사**:
|
||||||
|
- `bladdy_loading3.riv` 처럼 미참조 asset 있는지 · Rive 파일 목록 grep
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 5. 검증 상태
|
||||||
|
|
||||||
|
| 브랜치 | 컴파일 | 실기기 |
|
||||||
|
|---|---|---|
|
||||||
|
| demo-final (Demo Debug) | ✅ BUILD SUCCESSFUL | 미확인 (재설치 필요) |
|
||||||
|
| feature/cloud-mvp (Dev Debug) | ✅ BUILD SUCCESSFUL | 미확인 |
|
||||||
|
|
||||||
|
**주의**: 컴파일 통과 = 문법 검증만. **실기기 회귀 테스트 권장** (앱 진입 → 정렬 → 측정 → 히스토리 → 설정 → DFU · 각 flow smoke test).
|
||||||
Reference in New Issue
Block a user