Skip to content

Conversation

@loseminho
Copy link
Collaborator

📌 개요

Redis 연결을 위해 RoomMember 엔티티를 수정하던 중, RTC/채팅 관련 최신 코드가 병합되면서 충돌 및 에러가 지속적으로 발생했습니다.
따라서 Redis까지 연동했던 작업을 초기화하고, DB ↔ Redis 역할 분리까지만 진행했습니다.

주요 변경 사항:

  • RoomMember 엔티티에서 실시간 상태 관련 필드 제거 (Redis 이관을 위해)
  • 관련 테스트 케이스 수정
  • 향후 Redis 마이그레이션 파트는 // TODO 주석으로 처리

🔨 작업 내용

1. RoomMember 엔티티 리팩토링

제거된 필드

  • isOnline: 온라인 상태 → Redis 이관 예정
  • connectionId: WebSocket 연결 ID → Redis 이관 예정
  • lastHeartbeat: 마지막 하트비트 시간 → Redis 이관 예정
  • lastActiveAt: 마지막 활동 시간 → Redis 이관 예정

추가된 필드

  • promotedAt: MEMBER 이상으로 권한 변경된 시간

의미 변경

  • joinedAt: 기존 = 방 입장 시간
    변경 후 = MEMBER 이상으로 승격된 시간 (Member 이상부터만 db에 권한에 대한 정보로써 저장하기 위해)

2. Repository 수정

  • RoomMemberRepository.findByConnectionId() 제거
  • RoomMemberRepositoryImpl.leaveRoom()@Deprecated
  • RoomMemberRepositoryImpl.disconnectAllMembers()@Deprecated
  • RoomRepository.updateCurrentParticipants()rm.isOnline = true 조건 제거
  • RoomRepositoryImpl.findRoomsByUserId()isOnline 조건 제거

3. Service 로직 수정

  • RoomService.joinRoom()isOnline 체크 및 updateOnlineStatus() 호출 제거
  • RoomService.leaveRoom()member.leave() 호출 제거 + Redis 이관 TODO 추가
  • RoomService.terminateRoom()disconnectAllMembers() 주석 처리
  • RoomService.kickMember()targetMember.leave() 호출 제거

4. Validator 수정

  • WebRTCSignalValidator: 온라인 상태 검증 로직 제거

5. DTO 수정

  • RoomMemberResponseisOnline, lastActiveAt 제거 / promotedAt 추가

6. 테스트 수정

  • RoomServiceTest: updateOnlineStatus() 호출 제거, disconnectAllMembers 검증 제거
  • WebRTCSignalValidatorTest: 온라인/오프라인 관련 테스트 제거 및 간소화

🔗 관련 이슈

Closes #96


📝 참고 사항

  • DB에는 MEMBER, SUB_HOST, HOST만 저장
  • VISITOR는 Redis에서만 관리 (DB 저장 X)
  • 명세서 변경 예정:
    • RoomMemberResponse: isOnline, lastActiveAt 제거
  • 현재는 updateCurrentParticipants(): Redis 연결 전이라 온라인 구분 없이 전체 인원 기준으로 처리로 변경한 상태입니다.

바로 진행할 다음 작업 예정

  • Redis 기반 온라인 상태 관리 구현
  • WebSocket 연결 시 Redis에 세션 정보 저장
  • Heartbeat 로직을 Redis 기반으로 전환
  • 방 참가자 수 실시간 업데이트 로직 구현

✅ 체크리스트

  • 기능 동작 확인
  • 테스트 코드 작성
  • 문서/주석 최신화

@loseminho loseminho self-assigned this Oct 1, 2025
@github-actions github-actions bot changed the title refactor: RoomMember 엔티티에서 실시간 상태 필드 제거, redis로 이관 refactor: RoomMember 엔티티에서 실시간 상태 필드 제거, redis로 이관 (#96) Oct 1, 2025
@loseminho
Copy link
Collaborator Author

DB스키마 불일치 에러 발생 시!!
application-dev.yml 파일 내에서 ddl-auto: update 이 부분을 ddl-auto: create-drop로 변경 한 후,

  • rm db_dev.mv.db
  • ./gradlew clean build
    위 두 명령어를 실행해서 기존의 DB 파일 삭제 후에 다시 db_dev.mv.db파일 생성 확인 되면 ddl-auto: update로 원상복귀 해주시면 됩니다!

@loseminho loseminho merged commit cfa8a0e into dev Oct 2, 2025
2 checks passed
@github-actions github-actions bot deleted the feat/96 branch October 2, 2025 01:21
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.

4 participants