**) 단계별 구현 로드맵 (MVP -> 확장)
Phase 1 - MVP (핵심 기능)
- Hilt/Room 기본 세팅
- Receipt Entity/DAO/Repository 구현
- 스캔 화면 + 코드값 저장
- 목록/상세/수정/삭제 (현재 상세는 Edit 화면 겸용)
- 기본 테스트(DAO + ViewModel)
Phase 2 - 사용자 경험 강화
- 검색/필터/정렬
- 영수증 이미지 첨부
- 스캔 실패/중복 처리 UX 개선
- DataStore 설정화
2-1) 검색/필터/정렬
세부 작업
-
ReceiptUiState에sort,filters상태(기간/금액/저장여부 등) 추가 -
ReceiptListScreen상단을 검색 + 필터 + 정렬 UI로 확장 -
ReceiptDao에 필터/정렬 쿼리 추가(또는 통합 쿼리 전략 적용) -
ReceiptRepository.observeReceipts(...)를 query + sort + filter 입력으로 확장 -
ReceiptViewModel에서 검색/필터/정렬을 단일 Flow 파이프라인으로 결합
완료 기준 (Acceptance Criteria)
- 검색어/필터/정렬 변경 시 목록이 즉시 반영된다
- 빈 결과/초기 상태/검색 결과 상태가 UI에서 구분된다
권장 테스트 포인트
- DAO 테스트: 정렬 우선순위 및 필터 조합 결과 검증
- ViewModel 테스트: query/sort/filter 변경 시 상태 전이 검증
2-2) 영수증 이미지 첨부
세부 작업
-
ReceiptEditScreen에 이미지 첨부/변경/삭제 액션 및 썸네일 추가 - ActivityResult 기반 이미지 선택 플로우 연결
-
imageUri저장/수정 경로를 Repository 저장 로직에 반영 - URI 접근 실패 시 플레이스홀더 + 재선택 안내 UI 제공
- 목록 카드에서 첨부 여부(썸네일/아이콘) 표시
완료 기준 (Acceptance Criteria)
- 이미지 첨부 후 저장 시 재진입해도 첨부 상태가 유지된다
- 잘못된 URI/권한 문제 시 크래시 없이 복구 안내가 표시된다
권장 테스트 포인트
- Repository 테스트:
imageUri저장/수정/삭제 검증 - UI 테스트: 첨부 전/후/삭제 상태 렌더링 검증
2-3) 스캔 실패/중복 처리 UX 개선
세부 작업
- 스캔 결과 모델을 성공/취소/실패/중복으로 구분
- 취소/실패(
raw없음) 시 사용자 피드백 + 재시도 액션 제공 - 중복 판단 기준 정의 및 DAO/Repository 중복 조회 API 추가
- 중복 시 기존 열기/신규 저장 선택 다이얼로그 제공
- 실패/중복 이벤트를
scan_history에 기록
완료 기준 (Acceptance Criteria)
- 취소/실패/중복 상황에서 다음 행동(재시도/이동) 안내가 제공된다
- 동일 코드 재스캔 시 중복 정책 분기가 일관되게 동작한다
권장 테스트 포인트
- Repository 테스트: 중복 판단 경계값 검증
- UI 테스트: 실패/중복 다이얼로그 표시 및 액션 검증
2-4) DataStore 설정화
세부 작업
- DataStore 의존성 추가 및 버전 카탈로그 반영
- 설정 모델(
SortOrder, 기본 필터, 스캔 옵션)과SettingsDataStore구현 - Hilt 모듈에 DataStore/Settings Repository 제공 추가
- ViewModel에서 DataStore Flow와 목록 Flow 결합
- 최소 UI(정렬/필터 선택)에서 설정 저장 연결
완료 기준 (Acceptance Criteria)
- 선택한 정렬/필터 기본값이 앱 재실행 후에도 유지된다
- 설정 변경 시 목록이 즉시 반영된다
권장 테스트 포인트
- DataStore 테스트: 기본값/쓰기/읽기/복원 검증
- ViewModel 테스트: 설정 Flow 반영으로 목록 상태 변경 검증
Phase 3 - 고도화 기능
- Kakao Map 연동(상세 -> 지도)
- In-app Update 적용
- 통계/리포트(월별 금액, 카테고리)
댓글 없음:
댓글 쓰기