Skip to content

fix: 마지막 멤버가 나가면 봇방장으로 넘기지 않고 방을 닫는다 - #316

Merged
selee1012 merged 1 commit into
devfrom
fix/empty-room-closes-on-leave
Oct 15, 2026
Merged

selee1012 merged 1 commit into
devfrom
fix/empty-room-closes-on-leave

Conversation

@selee1012

Copy link
Copy Markdown
Contributor

문제 (stg QA 2026-10-15)

혼자 있던 그룹 방을 나가면 서버가 방을 봇방장으로 넘기기만 했다(botOwnerActivated: true). 아무도 없는 방이 하루 1번(04:10) 도는 유령방 삭제 배치가 지울 때까지 탐색·인기에 남았다. 판정 대기·주차 점수 미마감이 있으면 삭제가 미뤄져 1주 넘게 남을 수 있고, 그동안 남이 가입해 되살릴 수도 있었다.

변경

  • ChallengeMemberService#closeIfLastMember: 나가는 사람이 마지막 활성 멤버면 봇방장 전환·승계 알림 없이 방을 삭제 표시(deleted_at) 한다.
    • 자진 탈퇴(leave)·회원 탈퇴/티어 게이트(leaveAllExternally)·자동 강퇴(AutomaticKickService) 세 경로 모두 같다.
    • 멤버가 1명 이상 남으면 지금처럼 봇방장 체제.
  • 삭제 표시만으로 탐색(커밋 뒤 인덱스 재계산이 뺀다)·인기·상세·가입이 즉시 막힌다. 이력 스냅샷과 실제 삭제는 기존 배치가 정산 뒤 이어서 한다.
  • 마이페이지 이탈 탭은 닫힌 방도 기록으로 보여 준다(실제 삭제 뒤에는 이력에서 같은 행이 나온다).
  • V14__close_empty_rooms.sql: 이미 0명인 채 남은 방을 같은 상태로 닫는다.

앱 영향

  • 마지막 멤버의 나가기 응답은 botOwnerActivated: false. 그 방 상세·가입은 404 CHALLENGE_NOT_FOUND.
  • 이탈 탭에서 닫힌 방을 누르면 404 — 앱 안내 처리 확인 필요(Android 전달 완료).

테스트

  • ChallengeLifecycleSpecIT: 마지막 멤버 탈퇴 → 봇방장 아님·닫힘·상세 404·가입 404·진행 중 목록 제외·이탈 탭 포함 / 다른 멤버가 남으면 봇방장·닫히지 않음
  • 전체 ./gradlew test 1,458건 통과(V14 포함)

🤖 Generated with Claude Code

0명 방도 봇방장으로 넘기기만 해서, 하루 1번 유령방 삭제 배치가 지울 때까지
(정산 대기가 있으면 1주 넘게) 탐색·인기에 남고 남이 가입해 되살릴 수 있었다.
자진 탈퇴·회원 탈퇴·자동 강퇴에서 남는 활성 멤버가 없으면 삭제 표시한다 —
탐색·인기·상세·가입이 즉시 막히고, 이력과 실제 삭제는 같은 배치가 이어서 한다.
멤버가 1명 이상 남으면 지금처럼 봇방장 체제다.

이탈 탭은 닫힌 방도 기록으로 보여 준다. 이미 남아 있는 0명 방은 V14 로 닫는다.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown

Test Coverage

Overall Project 82.63% -0.01% 🍏
Files changed 92.71% 🍏

File Coverage
MyChallengeQueryService.java 97.74% 🍏
ChallengeMemberService.java 89.25% -0.41% 🍏
AutomaticKickService.java 87.45% -0.63% 🍏

@selee1012
selee1012 merged commit 9d0a964 into dev Oct 15, 2026
3 checks passed
@selee1012
selee1012 deleted the fix/empty-room-closes-on-leave branch October 15, 2026 02:36
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.

1 participant