Skip to content

[Feat] 운동 기록 오프라인 조회 및 캐시 정합성 - #630

Merged
edv-Shin merged 14 commits into
devfrom
fix/issue-584
Oct 19, 2026
Merged

edv-Shin merged 14 commits into
devfrom
fix/issue-584

Conversation

@edv-Shin

@edv-Shin edv-Shin commented Oct 17, 2026 •

Copy link
Copy Markdown
Contributor

연관된 이슈

Closes #584

선행 PR #625·#626이 모두 머지된 dev를 반영했습니다. 이 PR은 fix/issue-584 → dev입니다.

작업 내용

  • 캐시 플래그가 켜져 있으면 온라인 조회 결과를 Room에 저장한 뒤 스냅샷으로 읽습니다. 오프라인 캐시 적중·미적중과 실제 빈 조회 결과를 구분합니다.
  • 캘린더·목록·상세와 내비게이션에 로컬 식별자를 연결하고 생성 대기 기록을 표시합니다. 운동 기록 쓰기는 기존 온라인 경로를 유지합니다.
  • 최초 진입·조회 조건 선택·수동 새로고침에서 서버를 조회합니다. 화면 복귀는 로컬 스냅샷을 읽으며 네트워크 복구만으로 목록이나 편집 폼을 교체하지 않습니다.
  • 서버 쓰기 후 캐시를 반영하고, 캐시 반영·무효 표시 저장 실패는 서버 성공을 유지한 채 경고로 전달합니다. 성공한 서버 쓰기를 재시도하지 않습니다. 저장 장치 오류로 무효 표시 자체가 기록되지 못하면 오래된 캐시가 남을 수 있습니다.
  • 빈 응답을 구분하는 조회 마커를 추가합니다. Room 2→3 마이그레이션은 기존 대기 행·타이머를 보존합니다. #585와 같은 테이블·마이그레이션을 사용합니다.

검증

  • 정적 확인: Repository↔Room, String 식별자의 usecase/UI/내비게이션 호출부, E2E fixture 정리, 경고 전달과 취소 처리, #585와의 공통 스키마를 대조했습니다.
  • 회귀 테스트 작성: 캐시 적중·미적중·빈 결과, 플래그 OFF, 대기 행·계정 분리, 쓰기 후 정합성, 화면 복귀, 저장 실패 경고와 서버 변경 단일 호출.
  • 기존 GitHub CI 통과: 커밋 7fdf3bb7의 dev-ci에서 Android Lint·ktlint·단위 테스트·Debug APK 빌드가 모두 통과했습니다. https://github.com/projects200/android/actions/runs/39063414371
  • CI에서 확인한 모듈 네트워크 권한 선언과 ktlint 위반을 수정했습니다. 점수·재연결 테스트는 ViewModel의 초기 조회 순서를 반영하도록 고쳤으며, 실패 알림·기존 점수 유지·재연결 시 추가 조회 없음 검증을 유지했습니다.
  • 로컬 실행: 이 작업 환경은 저장소 코드 실행이 금지되어 빌드·단위 테스트·lint·Maestro를 로컬에서 실행하지 않았습니다. 위 통과 결과는 GitHub CI 결과입니다.
  • 확인 필요: CI 빌드 통과와 별개로 Room v3 data/schemas 생성 파일의 확인·저장소 반영은 남아 있습니다.
  • Maestro 환경 차단 해소(2026-10-18): 첫 실행은 maestro-dev가 refs/pull/630/merge를 허용하지 않아 어떤 단계도 실행하지 못했습니다. 요청자 승인 후 이 ref 하나만 허용 목록에 추가했습니다. 기존 보호 규칙과 다른 PR의 제한은 유지했습니다.
  • Maestro 재실행 결과: 커밋 7fdf3bb7의 attempt 2는 Python runner 테스트와 E2E APK lint·단위 테스트·빌드를 통과했지만, 실제 UI는 23개 중 17개 통과·6개 실패였습니다. smoke-tabs와 타이머 5개 시나리오 모두 기록 탭 진입 시 Missing required view with ID: ...:id/exercise_pending_tv로 종료됐습니다. https://github.com/projects200/android/actions/runs/39063414353/attempts/2
  • 추가 수정 93cd2cd7: exercise/profile/matching 모듈의 동명 calendar_day_layout.xml 충돌을 제거하기 위해 운동 기록 리소스를 exercise_calendar_day_layout.xml로 분리하고 XML 참조·생성 ViewBinding 소비자를 함께 변경했습니다. pending UI와 기존 Maestro 단언은 유지했습니다. 이 커밋의 dev-ci는 통과했습니다. https://github.com/projects200/android/actions/runs/39114978489
  • 수정 후 Maestro 1차: 앱 실행 직후 에뮬레이터의 시스템 UI이(가) 응답하지 않음 대화상자가 화면을 덮어 smoke-tabs와 채팅 첫 단계가 앱 화면에 도달하지 못했고, 러너가 이후 시나리오를 중단했습니다. 같은 커밋을 재실행했습니다. https://github.com/projects200/android/actions/runs/39114978487
  • 같은 커밋 재실행: 23개 중 21개 통과·매칭 2개 실패였습니다. smoke-tabs와 타이머 5개는 모두 통과해 기존 레이아웃 크래시 경로가 수정됐음을 확인했습니다. matching-member-to-chat는 실제 방 진입 후 위치 권한 거부 재시작에서 OS 권한 창이 탭을 가렸습니다. matching-place-validation은 첫 장소 목록 조회가 20초 동안 places_loading에 남았습니다. https://github.com/projects200/android/actions/runs/39114978487/attempts/2
  • 매칭 추가 변경: 권한 거부 재시작에서는 실제 OS 거부 버튼 관찰·탭을 필수로 수행하고, 창이 닫힌 뒤 지도·목적지를 확인합니다. 지도 준비나 하단 탭 표시로 권한 대기를 통과할 수 없습니다. 목록 지연의 원인은 아직 미확정이므로 실제 조회 시작·종료·취소와 고정 오류 분류만 공개 진단에 추가했습니다. 원문 오류·식별자·좌표는 내보내지 않습니다. 대기시간·성공 조건·네트워크 및 인증 동작은 바꾸지 않았습니다.
  • 중간 커밋 45e50041 Maestro 실패: smoke-tabs 통과 뒤 채팅 A 진입 화면을 에뮬레이터 시스템 UI이(가) 응답하지 않음 창이 덮어 22/23이 실패했습니다. 매칭 흐름은 실행되지 않았습니다. 이 PR 변경이 없는 dev push 실행 39056512651도 같은 단계·같은 창으로 실패했으므로 이 PR의 회귀로 보지 않았습니다. https://github.com/projects200/android/actions/runs/39128089610
  • 최신 커밋 06b6b350 검증: dev-ci(Lint·ktlint·단위 테스트·Debug APK)와 Maestro 23/23이 모두 통과했습니다. 권한 거부 재시작은 실제 OS 거부 버튼을 필수로 처리한 뒤 진행했고, 장소 목록 조회 4건은 모두 약 0.2초 안에 success로 끝났습니다. 이전 실행의 20초 places_loading은 이번에 재현되지 않아 원인은 미확정입니다. https://github.com/projects200/android/actions/runs/39128246663 · https://github.com/projects200/android/actions/runs/39128246646
  • 확인 필요: System UI ANR은 원인 미확정 상태로 dev에서도 간헐 재현되므로 별도 이슈 대상입니다. 새 instrumentation 증거 테스트는 이 Maestro 실행에 포함되지 않았고 로컬에서도 실행하지 않았습니다.
  • 전체 자동 E2E와 오프라인 시나리오 연결은 별도 PR [Test] 오프라인 회귀 및 전체 E2E 자동 CI 연결 #631 에서 변경합니다. 이 PR만으로 #617의 전체 오프라인 인수가 완료되지는 않습니다.

@edv-Shin edv-Shin self-assigned this Oct 19, 2026
@edv-Shin
edv-Shin merged commit 122c470 into dev Oct 19, 2026
3 checks passed
@edv-Shin
edv-Shin deleted the fix/issue-584 branch October 19, 2026 12:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Refactor] 운동 기록 읽기를 Room 경유로 전환

1 participant