어떤 기능인가요?
계정이 바뀔 때 이전 계정의 로컬 캐시가 기기에 남습니다. 오프라인 설계 문서의 목표 6은 "로그아웃하거나 다른 계정으로 로그인하면 기기에 남은 데이터가 모두 지워집니다"인데, 지금은 로그아웃 경로만 캐시를 지우고 계정 전환 경로에는 정리가 없습니다.
정리 경로는 ClearSessionUseCase 하나이고 호출부는 두 곳입니다. SettingFragment.performLogout의 clearLocalSession()과 MainViewModel.transitionToLogin()입니다. 로그아웃을 거치지 않고 다른 계정으로 로그인하면 AuthRepositoryImpl.checkIsRegistered()가 saveMemberId()로 회원ID만 덮어씁니다. 조회 쿼리에 memberId 조건이 걸려 있어 이전 계정의 행이 화면에 보이지는 않지만, 기기에는 계속 남습니다.
삭제 순서도 지금 뒤집혀 있습니다. ClearSessionUseCase가 authRepository.clearSession()으로 회원ID를 먼저 지우고 그다음 sessionDataCleaner.clearAll()을 부릅니다. 현재 구현이 clearAllTables()라 회원ID가 필요 없어 문제가 드러나지 않지만, 계정 스코프 삭제(DELETE WHERE memberId = ?)로 좁히는 순간 아무것도 지우지 못합니다. 타이머와 운동 기록 쓰기가 들어오면 전송 대기 행이 계정별로 남으므로 그때 반드시 좁혀야 하는 쿼리입니다.
이 이슈는 정리 시점과 순서까지입니다. 앱 전용 이미지 파일 정리는 파일 보관을 도입하는 이슈에서 같은 경로에 붙입니다. checkIsRegistered의 errorCode 분기 계약 테스트는 #590에서 다룹니다.
작업 상세 내용
참고할만한 자료(선택)
오프라인 기능 지원 설계 문서의 목표 6, 설계 규칙 D9(로그아웃·탈퇴 시 전부 지움), 위험 요소 1(계정 전환 시 이전 사용자 데이터 노출)이 기준입니다. #581에서 SessionDataCleaner를 도입했고 그 KDoc이 계정 전환을 대상으로 적었지만 호출부가 없습니다.
회원 탈퇴는 현재 외부 구글 폼을 웹뷰로 여는 경로여서 로컬 정리 시점이 없습니다. 별도 논의가 필요합니다.
어떤 기능인가요?
계정이 바뀔 때 이전 계정의 로컬 캐시가 기기에 남습니다. 오프라인 설계 문서의 목표 6은 "로그아웃하거나 다른 계정으로 로그인하면 기기에 남은 데이터가 모두 지워집니다"인데, 지금은 로그아웃 경로만 캐시를 지우고 계정 전환 경로에는 정리가 없습니다.
정리 경로는
ClearSessionUseCase하나이고 호출부는 두 곳입니다.SettingFragment.performLogout의clearLocalSession()과MainViewModel.transitionToLogin()입니다. 로그아웃을 거치지 않고 다른 계정으로 로그인하면AuthRepositoryImpl.checkIsRegistered()가saveMemberId()로 회원ID만 덮어씁니다. 조회 쿼리에memberId조건이 걸려 있어 이전 계정의 행이 화면에 보이지는 않지만, 기기에는 계속 남습니다.삭제 순서도 지금 뒤집혀 있습니다.
ClearSessionUseCase가authRepository.clearSession()으로 회원ID를 먼저 지우고 그다음sessionDataCleaner.clearAll()을 부릅니다. 현재 구현이clearAllTables()라 회원ID가 필요 없어 문제가 드러나지 않지만, 계정 스코프 삭제(DELETE WHERE memberId = ?)로 좁히는 순간 아무것도 지우지 못합니다. 타이머와 운동 기록 쓰기가 들어오면 전송 대기 행이 계정별로 남으므로 그때 반드시 좁혀야 하는 쿼리입니다.이 이슈는 정리 시점과 순서까지입니다. 앱 전용 이미지 파일 정리는 파일 보관을 도입하는 이슈에서 같은 경로에 붙입니다.
checkIsRegistered의 errorCode 분기 계약 테스트는 #590에서 다룹니다.작업 상세 내용
ClearSessionUseCase에서 로컬 캐시 삭제를 회원ID 소거보다 먼저 실행checkIsRegistered()가 회원ID를 저장할 때 이전 값과 다르면 캐시를 먼저 지움참고할만한 자료(선택)
오프라인 기능 지원 설계 문서의 목표 6, 설계 규칙 D9(로그아웃·탈퇴 시 전부 지움), 위험 요소 1(계정 전환 시 이전 사용자 데이터 노출)이 기준입니다. #581에서
SessionDataCleaner를 도입했고 그 KDoc이 계정 전환을 대상으로 적었지만 호출부가 없습니다.회원 탈퇴는 현재 외부 구글 폼을 웹뷰로 여는 경로여서 로컬 정리 시점이 없습니다. 별도 논의가 필요합니다.