Today's

길을 나서지 않으면 그 길에서 만날 수 있는 사람을 만날 수 없다

모바일 앱(안드로이드)

할인쿠폰 (수정 시나리오, feat AI)

Billcorea 2026. 4. 14. 15:25

**) 단계별 구현 로드맵 (MVP -> 확장)

앱 작업중 이미지

 

Phase 1 - MVP (핵심 기능)

  • Hilt/Room 기본 세팅
  • Receipt Entity/DAO/Repository 구현
  • 스캔 화면 + 코드값 저장
  • 목록/상세/수정/삭제 (현재 상세는 Edit 화면 겸용)
  • 기본 테스트(DAO + ViewModel)

Phase 2 - 사용자 경험 강화

  • 검색/필터/정렬
  • 영수증 이미지 첨부
  • 스캔 실패/중복 처리 UX 개선
  • DataStore 설정화

2-1) 검색/필터/정렬

세부 작업

  • ReceiptUiStatesort, 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 적용
  • 통계/리포트(월별 금액, 카테고리)
반응형