Pulse Log 현재 문제점 정리
1. 현재 해결된 주요 문제
- 메인 입력이 상세 화면에 묻혀 있던 구조를 정리했다.
- 별도 상세 화면 진입 흐름을 현재 사용자 플로우에서 제거했다.
- 날짜 메모 미리보기와 메모 별표 UI를 제거했다.
- 캘린더를 버튼 나열형에서 컴팩트 월력형으로 바꿨다.
- 메인 입력, 그래프, 설정의 톤을 대체로 통일했다.
- 화면 코드를 기능별 파일로 분리했다.
- 저장/수정 피드백을 스낵바로 처리한다.
- 키보드 바깥 터치 닫힘과 저장 후 키보드 닫힘을 반영했다.
- 세그먼트 탭 인디케이터의 음수 패딩 크래시를 수정했다.
- 그래프에 축, 범례, 포인트, 날짜 선택, 선택 카드, 기준선을 추가했다.
- 그래프에서 미기록 날짜를 건너는 연결 구간을 연한 점선으로 표시한다.
- 그래프에서 선택 날짜를 캘린더 탭으로 연결했다.
- 캘린더 선택 날짜 요약을 월력 카드 상단으로 통합했다.
- 빠른 입력을 1번 탭으로 분리했다.
- 빠른 입력에서 저장된 항목 삭제와 삭제 확인 다이얼로그를 추가했다.
- 빠른 입력에서 저장/삭제 아이콘 버튼을 입력란과 같은 행에 정렬했다.
- 설정을 1차 탭에서 제거하고 헤더 우측 톱니바퀴로 이동했다.
- 헤더 공유 아이콘에서 최근 30일 / 전체 기록 CSV와 PDF 요약본 공유 기능을 추가했다.
- Material 기본 터치 피드백을 앱 컬러 톤으로 통일했다.
- 로컬 체크 스크립트와 하네스 설계 문서를 추가했다.
2. 현재 남아 있는 문제
2.1 알림 기능 보완 필요
AlarmManager 기반 실제 OS 알림 스케줄링은 추가됐다.
- 설정 저장 시 아침/저녁 알림이 예약된다.
- 앱 업데이트/기기 재부팅 후 저장된 설정을 기준으로 재예약한다.
- 이미 아침/저녁 기록이 있으면 해당 알림은 표시하지 않는다.
- 남은 보완점은 실제 기기 알림 검증, 날짜 변경 시 상태 재계산, 시간 입력 UX다.
2.2 DB 마이그레이션 리스크
fallbackToDestructiveMigration(dropAllTables = true)는 제거됐다.
- 현재 migration registry는 v3 baseline 이후 변경을 보존하는 기준으로 둔다.
- v1/v2 schema artifact는 repository history에서 확인되지 않아 자동 복원 migration을 작성할 근거가 부족하다.
- 현재 v4 Room schema export는 켜져 있고
app/schemas에 스냅샷을 보존한다.
- DAO 저장/삭제/observe 동작은 in-memory Room androidTest로 검증한다.
- v3 -> v4 migration은
MigrationTestHelper로 검증한다.
daily_notes 테이블은 v4 migration에서 제거됐다.
2.3 미사용 코드 정리 필요
DayDetailScreen.kt는 제거됐다.
- 메모 DAO와 Repository/ViewModel API는 제거됐다.
- 관련 제거는 v3 -> v4 migration과 함께 검증했다.
2.4 설정 입력 UX
- 시간 입력은 아침/저녁 범위를 반영한 선택 다이얼로그로 교체됐다.
- 재알림 횟수 설정은 제거됐다.
- 남은 보완점은 실제 기기에서 카드 구분, 시간 선택 다이얼로그, 스테퍼 조작감을 확인하는 것이다.
2.5 테스트 부족
- 그래프 정책 테스트와 ViewModel/UI 테스트가 추가됐다.
- 주요 Compose 컨트롤의
testTag와 smoke UI 테스트는 추가됐고 에뮬레이터 실행까지 확인했다.
- 빠른 입력 아침/저녁 혈압과 체중 저장/삭제 UI 테스트는 추가됐다.
- 그래프 선택 후 캘린더 이동 UI 테스트는 추가됐다.
- ViewModel 테스트용 fake repository/clock/scheduler는 공용 테스트 fake로 분리됐다.
- ViewModel의 아침/저녁 혈압, 체중 저장 및 삭제 repository 위임은 단위 테스트로 검증한다.
- ViewModel의 CSV/PDF 내보내기 콜백과 빈 결과 차단은 단위 테스트로 검증한다.
- 캘린더/그래프 연결 흐름은 connected Compose UI 테스트로 검증한다.
2.6 브랜딩 정리
- 앱 내부 헤더와 런처 앱명은
Pulse Log로 정리했다.
- 런처 아이콘은 앱 헤더의 하트 로고 톤을 반영한다.
2.7 Gradle/KSP 경고
- KSP 생성 소스 호환을 위해
android.disallowKotlinSourceSets=false 설정이 남아 있다.
- 해당 플래그를 제거하면 AGP built-in Kotlin 설정에서 KSP 생성 소스 등록 오류가 발생한다.
- KSP/AGP 조합을 올리거나 생성 소스 등록 방식을 바꾸기 전까지는 유지한다.
2.8 내보내기 확장
- 현재 CSV 공유와 그래프 포함 PDF 요약본 공유는 가능하지만 병원별 제출 양식은 아직 없다.
- 기간 직접 선택은 아직 지원하지 않는다.
3. 운영상 리스크
- 화면 회전과 프로세스 재생성 시 상태 복원 검증이 충분하지 않다.
- 실제 기기별 키보드 동작 차이를 더 확인해야 한다.
- Compose 애니메이션 변경 시 레이아웃 깨짐이 다시 생길 수 있다.
- 제거된 메모 테이블은 v3 -> v4 migration 테스트로 검증한다.
- KSP/AGP/Kotlin 조합을 정리하지 않으면 Gradle 경고가 계속 남을 수 있다.
- CSV/PDF 공유 파일에는 민감한 건강 기록이 포함되므로 공유 대상 앱 선택에 주의가 필요하다.
4. 현재 우선순위
높은 우선순위:
- 실제 기기 안정화 검증
- v4 이후 Room 마이그레이션 전략 유지
- 실제 알림 동작 기기 검증
- ViewModel/UI 테스트 추가
- 병원별 제출 양식 고도화
중간 우선순위:
- 설정 화면 실제 기기 조작감 확인
- 런처 이름과 앱 아이콘 정리