Skip to content

refactor: TrackMaster를 member로 옮겨 member↔track 순환 의존을 끊는다 - #159

Merged
ff1451 merged 11 commits into
mainfrom
refactor/break-member-track-cycle
Oct 18, 2026
Merged

ff1451 merged 11 commits into
mainfrom
refactor/break-member-track-cycle

Conversation

@ff1451

@ff1451 ff1451 commented Oct 18, 2026

Copy link
Copy Markdown
Contributor

요약

  • TrackMaster·TrackMasterRepository를 track → member로 옮겨 member → track 의존을 없앴습니다. (부원 소속을 나타내는 엔티티라 member가 소유하고, track은 참조만 합니다. 테이블·스키마 변경은 없습니다.)
  • member 서비스가 쓰던 TrackExceptionType.TRACK_NOT_FOUND를 MemberExceptionType.TRACK_NOT_FOUND로 바꿨습니다. 상태 코드 404와 메시지 "존재하지 않는 트랙입니다."는 같아서 응답은 바뀌지 않습니다.
  • ArchUnit(archunit-junit5:1.4.1, 테스트 전용)으로 도메인 패키지 사이에 새 순환이 생기지 않게 막습니다.
    • 허용 예외: auth↔member(member→auth 무시), track↔curriculum(track→curriculum 무시)
    • global.config는 보안·MVC 설정을 조립하는 곳이라 검사에서 뺍니다(global.config → auth).
    • member→track 의존을 일부러 넣으면 규칙이 실패하는 것을 로컬에서 확인했습니다.

머지 순서

#148~#157이 머지된 뒤에 이 PR을 main으로 rebase하고 ready로 바꿉니다. 그 전까지는 diff에 앞선 PR들의 변경이 함께 보입니다. 이 PR의 변경은 마지막 커밋 하나입니다.

검증

  • 로컬: 컴파일, DomainDependencyTest·TrackAccessGuardTest·MemberTest 통과
  • 전체 테스트: CI

ff1451 added 10 commits October 18, 2026 21:52
…into chore/merge-train

# Conflicts:
#	src/main/java/com/bcsdlab/bcsdinternalapiv2/curriculum/service/AdminCurriculumService.java
- TrackMaster·TrackMasterRepository를 member.model·member.repository로 옮긴다.
  부원 소속을 나타내는 엔티티라 member가 소유하고, track은 이를 참조만 한다.
- 회원 등록·명부 수정의 트랙 없음 예외를 MemberExceptionType.TRACK_NOT_FOUND로 바꾼다.
  상태 코드(404)와 메시지는 기존 TrackExceptionType과 같아 응답은 그대로다.
- ArchUnit으로 도메인 패키지 사이의 새 순환을 막는다. auth↔member, track↔curriculum은
  한 방향만 무시하는 허용 예외로, global.config는 조립 지점이라 검사에서 뺀다.
@coderabbitai

coderabbitai Bot commented Oct 18, 2026 •

Copy link
Copy Markdown

Warning

Review limit reached

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Next included review available in 8 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used the included review currently available.

Learn how review limits work.

Review configuration:

⚙️ Run configuration
  • Configuration used: defaults
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 7cc1f84f-0dfc-408c-bb0d-210207973bdc
📥 Commits

Reviewing files that changed from the base of the PR and between dd4c3d0 and 8270cfb.

📒 Files selected for processing: 51
  • build.gradle.kts
  • src/main/java/com/bcsdlab/bcsdinternalapiv2/game/model/Game.java
  • src/main/java/com/bcsdlab/bcsdinternalapiv2/game/service/AdminGameService.java
  • src/main/java/com/bcsdlab/bcsdinternalapiv2/member/exception/MemberExceptionType.java
  • src/main/java/com/bcsdlab/bcsdinternalapiv2/member/model/Member.java
  • src/main/java/com/bcsdlab/bcsdinternalapiv2/member/model/TrackMaster.java
  • src/main/java/com/bcsdlab/bcsdinternalapiv2/member/repository/TrackMasterRepository.java
  • src/main/java/com/bcsdlab/bcsdinternalapiv2/member/service/AdminMemberService.java
  • src/main/java/com/bcsdlab/bcsdinternalapiv2/member/service/MemberDirectoryService.java
  • src/main/java/com/bcsdlab/bcsdinternalapiv2/track/controller/dto/response/TrackMasterResponse.java
  • src/main/java/com/bcsdlab/bcsdinternalapiv2/track/model/TrackPage.java
  • src/main/java/com/bcsdlab/bcsdinternalapiv2/track/service/AdminTrackMasterService.java
  • src/main/java/com/bcsdlab/bcsdinternalapiv2/track/service/AdminTrackPageService.java
  • src/main/java/com/bcsdlab/bcsdinternalapiv2/track/service/TrackAccessGuard.java
  • src/test/java/com/bcsdlab/bcsdinternalapiv2/activity/AdminActivityCategoryIntegrationTest.java
  • src/test/java/com/bcsdlab/bcsdinternalapiv2/activity/AdminActivityIntegrationTest.java
  • src/test/java/com/bcsdlab/bcsdinternalapiv2/architecture/DomainDependencyTest.java
  • src/test/java/com/bcsdlab/bcsdinternalapiv2/auth/ExpiredTokenCleanupIntegrationTest.java
  • src/test/java/com/bcsdlab/bcsdinternalapiv2/auth/InitialSetupIntegrationTest.java
  • src/test/java/com/bcsdlab/bcsdinternalapiv2/auth/LoginIntegrationTest.java
  • src/test/java/com/bcsdlab/bcsdinternalapiv2/auth/PasswordResetIntegrationTest.java
  • src/test/java/com/bcsdlab/bcsdinternalapiv2/auth/RefreshTokenIntegrationTest.java
  • src/test/java/com/bcsdlab/bcsdinternalapiv2/curriculum/AdminCurriculumCloneIntegrationTest.java
  • src/test/java/com/bcsdlab/bcsdinternalapiv2/curriculum/AdminCurriculumIntegrationTest.java
  • src/test/java/com/bcsdlab/bcsdinternalapiv2/curriculum/AdminCurriculumTreeIntegrationTest.java
  • src/test/java/com/bcsdlab/bcsdinternalapiv2/curriculum/PublicCurriculumIntegrationTest.java
  • src/test/java/com/bcsdlab/bcsdinternalapiv2/game/AdminGameBuildIntegrationTest.java
  • src/test/java/com/bcsdlab/bcsdinternalapiv2/game/AdminGameIntegrationTest.java
  • src/test/java/com/bcsdlab/bcsdinternalapiv2/game/AdminGameScreenshotRatingMemberIntegrationTest.java
  • src/test/java/com/bcsdlab/bcsdinternalapiv2/game/GameIntegrationTest.java
  • src/test/java/com/bcsdlab/bcsdinternalapiv2/home/AdminMentorSlotIntegrationTest.java
  • src/test/java/com/bcsdlab/bcsdinternalapiv2/home/AdminQnaAndRecruitLinkIntegrationTest.java
  • src/test/java/com/bcsdlab/bcsdinternalapiv2/ledger/LedgerIntegrationTestSupport.java
  • src/test/java/com/bcsdlab/bcsdinternalapiv2/media/AdminImageIntegrationTest.java
  • src/test/java/com/bcsdlab/bcsdinternalapiv2/member/AdminMemberIntegrationTest.java
  • src/test/java/com/bcsdlab/bcsdinternalapiv2/member/AdminMemberWelcomeMailIntegrationTest.java
  • src/test/java/com/bcsdlab/bcsdinternalapiv2/member/AdminPasswordLinkSlackIntegrationTest.java
  • src/test/java/com/bcsdlab/bcsdinternalapiv2/member/MemberDirectoryIntegrationTest.java
  • src/test/java/com/bcsdlab/bcsdinternalapiv2/member/MemberDirectoryQueryCountIntegrationTest.java
  • src/test/java/com/bcsdlab/bcsdinternalapiv2/member/MemberSlackIdIntegrationTest.java
  • src/test/java/com/bcsdlab/bcsdinternalapiv2/member/MemberWithoutAccountIntegrationTest.java
  • src/test/java/com/bcsdlab/bcsdinternalapiv2/member/ServiceMemberIntegrationTest.java
  • src/test/java/com/bcsdlab/bcsdinternalapiv2/member/model/MemberTest.java
  • src/test/java/com/bcsdlab/bcsdinternalapiv2/reservation/ReservationIntegrationTestSupport.java
  • src/test/java/com/bcsdlab/bcsdinternalapiv2/track/AdminTrackIntegrationTest.java
  • src/test/java/com/bcsdlab/bcsdinternalapiv2/track/AdminTrackPageMemberIntegrationTest.java
  • src/test/java/com/bcsdlab/bcsdinternalapiv2/track/TechStackIntegrationTest.java
  • src/test/java/com/bcsdlab/bcsdinternalapiv2/track/TrackAccessGuardTest.java
  • src/test/java/com/bcsdlab/bcsdinternalapiv2/track/TrackIntegrationTest.java
  • src/test/java/com/bcsdlab/bcsdinternalapiv2/track/TrackPromotionIntegrationTest.java
  • src/test/java/com/bcsdlab/bcsdinternalapiv2/track/TrackStudyPointIntegrationTest.java
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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.

@ff1451
ff1451 merged commit 92e0e3a into main Oct 18, 2026
3 checks passed
@ff1451
ff1451 deleted the refactor/break-member-track-cycle branch October 18, 2026 13:51
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