Skip to content

Conversation

@ImHyungsuk
Copy link
Contributor

@ImHyungsuk ImHyungsuk commented Oct 12, 2025

📌 PR 요약

🌱 작업한 내용

  • 탈퇴
  • 로그아웃
  • 내가 등록한 장소

🌱 PR 포인트

  • 내가 등록한 장소는 확인이 안되서 일단 내가 저장한 장소 api 활용해서 ui 구현함

📸 스크린샷

스크린샷
파일첨부바람

📮 관련 이슈

Summary by CodeRabbit

  • 신기능
    • 마이페이지 회원탈퇴 플로우 추가: 사유 선택·기타 입력·확인 다이얼로그, 완료 시 재인증 화면 이동
    • 마이페이지 ‘저장한 장소 전체보기’ 화면 추가(2열 그리드, 카드 클릭 시 장소 상세 이동)
    • 로그아웃 확인 시 자동 로그인 해제
  • 내비게이션
    • 메인에 탈퇴 플로우 및 지도/인증 경로 연결
  • UI
    • 마이페이지 텍스트/문구 정리, 저장한 장소 리스트 간격 개선
    • 컬렉션 화면 선택 모드 바 배치 방식 개선
  • 유지보수
    • 불필요한 코드 정리 및 모듈 추가

@ImHyungsuk ImHyungsuk requested a review from a team October 12, 2025 05:46
@ImHyungsuk ImHyungsuk self-assigned this Oct 12, 2025
@ImHyungsuk ImHyungsuk added the 형석 🐧🍀 그날 인류는 떠올렸다 . 진격의 형석서서서석 label Oct 12, 2025
@coderabbitai
Copy link

coderabbitai bot commented Oct 12, 2025

Caution

Review failed

The pull request is closed.

Walkthrough

마이페이지 탈퇴 기능을 신설하고 네비게이션/화면/뷰모델/도메인/데이터/원격 API를 일괄 추가·확장했다. 저장소(DataStore) 기반 자동로그인 플래그 저장 로컬 데이터소스를 도입했다. 장소 목록 엔티티에 townId를 추가하고 관련 매핑을 갱신했다. 컬렉션 화면의 선택 모드 전달 방식을 슬롯 기반으로 변경했다.

Changes

Cohort / File(s) Summary
Project setup & modules
settings.gradle.kts, app/build.gradle.kts, domain/mypage/build.gradle.kts, data/mypage/build.gradle.kts, local/mypage/build.gradle.kts, local/mypage/.gitignore
로컬 모듈(local:mypage) 포함 및 의존성 추가, Kotlin Serialization 플러그인/라이브러리 적용, 앱/데이터 모듈에 신규 의존성 연결, 빌드 디렉터리 무시 추가
Local data source (mypage)
local/mypage/src/.../datasource/MypageLocalDataSourceImpl.kt, local/mypage/src/.../di/MypageLocalDataModule.kt, data/mypage/src/.../datasource/MypageLocalDataSource.kt
MypageLocalDataSource 인터페이스 및 DataStore 구현 추가, Hilt 모듈 바인딩 제공
Remote API & implementation
remote/mypage/src/.../service/MypageService.kt, remote/mypage/src/.../datasource/MypageRemoteDataSourceImpl.kt, data/mypage/src/.../datasource/MypageRemoteDataSource.kt, remote/onboarding/src/.../OnBoardingService.kt
신고 장소 조회, 탈퇴 사유 목록, 회원 탈퇴 API 추가 및 구현, OnBoarding 경로 수정
DTOs (mypage)
data/mypage/src/.../dto/request/DeleteUserRequestDto.kt, data/mypage/src/.../dto/response/GetWithdrawListResponseDto.kt, data/mypage/src/.../dto/response/PlaceListResponseDto.kt
탈퇴 요청 DTO 추가, 탈퇴 사유 응답 DTO 추가, 장소 응답에 townId 필드 추가
Domain models & repository API
domain/mypage/src/.../model/PlaceInfoEntity.kt, domain/mypage/src/.../model/WithdrawEntity.kt, domain/mypage/src/.../model/WithdrawType.kt, domain/mypage/src/.../repository/MypageRepository.kt
PlaceInfoEntity에 townId 추가, WithdrawEntity/WithdrawType 신규 도입, 리포지토리 API 확장(신고 장소, 탈퇴 사유, 탈퇴, 자동로그인 저장)
Repository implementation
data/mypage/src/.../repository/MypageRepositoryImpl.kt
로컬 DS 주입, 신규 메서드 구현(신고 장소, 탈퇴 사유, 탈퇴, 자동로그인 저장), 매핑에 townId 반영
Mypage feature: contract/screen/vm/navigation/resources
feature/mypage/src/.../MypageContract.kt, .../MypageScreen.kt, .../MypageViewModel.kt, .../component/MypagePlaceAllScreen.kt, .../component/SavedPlaceListContainer.kt, .../navigation/MypageNavigation.kt, .../res/values/strings.xml
상태/인텐트/사이드이펙트 확장(뒤로가기, 전체보기, 지도/탈퇴 이동 등), UI 분기(전체보기 화면 추가), 클릭 처리 및 네비게이션 연동, 리스트 UI 간격 추가, 문자열 리소스 추가/키 변경
Withdraw feature: contract/screen/vm/navigation
feature/mypage/src/.../withdraw/WithdrawContract.kt, .../withdraw/WithdrawScreen.kt, .../withdraw/WithdrawViewModel.kt, .../withdraw/navigation/WithdrawNavigation.kt
탈퇴 플로우 신설: 상태/인텐트/사이드이펙트, 화면/라우트, 뷰모델(사유 목록 로드, 확인 다이얼로그, 탈퇴 실행→OAuth 이동), 네비게이션 구성
Main navigation wiring
feature/main/src/.../MainNavigator.kt, feature/main/src/.../MainScreen.kt
Withdraw 그래프 통합, 마이페이지 그래프에 OAuth/Withdraw/Maps 콜백 추가, 네비게이션 옵션 연결
Collection feature refactor
feature/collection/src/.../CollectionScreen.kt, .../course/CourseCollectionScreen.kt, .../place/PlaceCollectionScreen.kt
CollectionScreen에서 선택모드 관련 파라미터 제거, SelectModeBar를 콘텐츠 슬롯 아이템으로 주입하도록 호출부 수정
Design system minor
core/designsystem/src/.../component/button/SolplyButton.kt
불필요 import 제거

Sequence Diagram(s)

sequenceDiagram
  autonumber
  actor U as User
  participant MS as MainScreen
  participant MN as MainNavigator
  participant WG as WithdrawNavGraph
  participant WR as WithdrawRoute/Screen
  participant VM as WithdrawViewModel
  participant REP as MypageRepository
  participant REM as MypageService
  participant LDS as DataStore(Local)

  U->>MS: 마이페이지에서 "탈퇴" 선택
  MS->>MN: navigateToWithdraw()
  MN->>WG: navigate Withdraw
  WG->>WR: Compose WithdrawRoute
  WR->>VM: Intent.Init
  VM->>REP: getWithdrawList()
  REP->>REM: GET /api/users/withdraw/reasons
  REM-->>REP: withdraw list
  REP-->>VM: Result<List<WithdrawEntity>>
  VM-->>WR: 상태 업데이트(리스트 표시)
  U->>WR: 항목 선택/사유 입력
  U->>WR: "탈퇴하기" 클릭
  WR->>VM: Intent.WithdrawButtonClick (→ 다이얼로그 표시)
  U->>WR: 다이얼로그 확인
  WR->>VM: Intent.DialogConfirmClick
  VM->>REP: deleteUser(type, reason)
  REP->>REM: DELETE /api/users/withdraw (body)
  REM-->>REP: NullableBaseResponse<Unit>
  REP-->>VM: Result<Unit>
  VM->>REP: saveAutoSignIn(false)
  REP->>LDS: updateData(autoSignIn=false)
  LDS-->>REP: 완료
  VM-->>WR: SideEffect.NavigateToOauth
  WR->>MN: navigateToOauth()
Loading
sequenceDiagram
  autonumber
  actor U as User
  participant MP as MypageRoute
  participant VM as MypageViewModel
  participant REP as MypageRepository
  participant REM as MypageService
  participant MAP as Maps

  U->>MP: "저장한 장소 전체보기" 클릭
  MP->>VM: Intent.PlaceAllClick
  VM-->>MP: placeAllState = true
  MP->>VM: (초기 로드) getReportPlaceList
  VM->>REP: getReportPlaceList(userId)
  REP->>REM: GET /api/users/{id}/places
  REM-->>REP: PlaceListResponseDto(townId 포함)
  REP-->>VM: Result<List<PlaceInfoEntity>>
  VM-->>MP: 상태 업데이트(그리드 표시)
  U->>MP: 카드 클릭(placeId, townId)
  MP->>VM: Intent.PlaceCardClick
  VM-->>MP: SideEffect.NavigateToMap(placeId, townId)
  MP->>MAP: 지도 상세 이동
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

Possibly related PRs

Suggested reviewers

  • leeseokchan00
  • nagaeng
  • 88guri

Poem

깡총, 깡총 — 새 길을 연다
탈퇴 길목 표지판도 단다
사유를 고르고 안녕을 눌러
토큰엔 잠금, 오스로 훌쩍
지도엔 동네ID 반짝인다
그리드에 점점, 토끼도 웃음 :=)

✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feature/#149-mypage-withdraw

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 37001fc and 39a6e2c.

📒 Files selected for processing (38)
  • app/build.gradle.kts (1 hunks)
  • core/designsystem/src/main/java/com/teamsolply/solply/designsystem/component/button/SolplyButton.kt (0 hunks)
  • data/mypage/build.gradle.kts (1 hunks)
  • data/mypage/src/main/java/com/teamsolply/solply/mypage/datasource/MypageLocalDataSource.kt (1 hunks)
  • data/mypage/src/main/java/com/teamsolply/solply/mypage/datasource/MypageRemoteDataSource.kt (1 hunks)
  • data/mypage/src/main/java/com/teamsolply/solply/mypage/dto/request/DeleteUserRequestDto.kt (1 hunks)
  • data/mypage/src/main/java/com/teamsolply/solply/mypage/dto/response/GetWithdrawListResponseDto.kt (1 hunks)
  • data/mypage/src/main/java/com/teamsolply/solply/mypage/dto/response/PlaceListResponseDto.kt (1 hunks)
  • data/mypage/src/main/java/com/teamsolply/solply/mypage/repository/MypageRepositoryImpl.kt (3 hunks)
  • domain/mypage/build.gradle.kts (1 hunks)
  • domain/mypage/src/main/java/com/teamsolply/solply/mypage/model/PlaceInfoEntity.kt (1 hunks)
  • domain/mypage/src/main/java/com/teamsolply/solply/mypage/model/WithdrawEntity.kt (1 hunks)
  • domain/mypage/src/main/java/com/teamsolply/solply/mypage/model/WithdrawType.kt (1 hunks)
  • domain/mypage/src/main/java/com/teamsolply/solply/mypage/repository/MypageRepository.kt (1 hunks)
  • feature/collection/src/main/java/com/teamsolply/solply/collection/collection/component/CollectionScreen.kt (2 hunks)
  • feature/collection/src/main/java/com/teamsolply/solply/collection/collection/course/CourseCollectionScreen.kt (2 hunks)
  • feature/collection/src/main/java/com/teamsolply/solply/collection/collection/place/PlaceCollectionScreen.kt (2 hunks)
  • feature/main/src/main/java/com/teamsolply/solply/main/MainNavigator.kt (2 hunks)
  • feature/main/src/main/java/com/teamsolply/solply/main/MainScreen.kt (3 hunks)
  • feature/mypage/src/main/java/com/teamsolply/solply/mypage/MypageContract.kt (1 hunks)
  • feature/mypage/src/main/java/com/teamsolply/solply/mypage/MypageScreen.kt (8 hunks)
  • feature/mypage/src/main/java/com/teamsolply/solply/mypage/MypageViewModel.kt (3 hunks)
  • feature/mypage/src/main/java/com/teamsolply/solply/mypage/component/MypagePlaceAllScreen.kt (1 hunks)
  • feature/mypage/src/main/java/com/teamsolply/solply/mypage/component/SavedPlaceListContainer.kt (2 hunks)
  • feature/mypage/src/main/java/com/teamsolply/solply/mypage/navigation/MypageNavigation.kt (2 hunks)
  • feature/mypage/src/main/java/com/teamsolply/solply/mypage/withdraw/WithdrawContract.kt (1 hunks)
  • feature/mypage/src/main/java/com/teamsolply/solply/mypage/withdraw/WithdrawScreen.kt (1 hunks)
  • feature/mypage/src/main/java/com/teamsolply/solply/mypage/withdraw/WithdrawViewModel.kt (1 hunks)
  • feature/mypage/src/main/java/com/teamsolply/solply/mypage/withdraw/navigation/WithdrawNavigation.kt (1 hunks)
  • feature/mypage/src/main/res/values/strings.xml (2 hunks)
  • local/mypage/.gitignore (1 hunks)
  • local/mypage/build.gradle.kts (1 hunks)
  • local/mypage/src/main/java/com/teamsolply/solply/mypage/datasource/MypageLocalDataSourceImpl.kt (1 hunks)
  • local/mypage/src/main/java/com/teamsolply/solply/mypage/di/MypageLocalDataModule.kt (1 hunks)
  • remote/mypage/src/main/java/com/teamsolply/solply/mypage/datasource/MypageRemoteDataSourceImpl.kt (2 hunks)
  • remote/mypage/src/main/java/com/teamsolply/solply/mypage/service/MypageService.kt (2 hunks)
  • remote/onboarding/src/main/java/com/teamsolply/solply/onboarding/service/OnBoardingService.kt (2 hunks)
  • settings.gradle.kts (1 hunks)

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@ImHyungsuk ImHyungsuk merged commit 4cdce4d into develop Oct 12, 2025
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

형석 🐧🍀 그날 인류는 떠올렸다 . 진격의 형석서서서석

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feature] 마이페이지 탈퇴 구현

2 participants