Skip to content

Conversation

@023-dev
Copy link
Member

@023-dev 023-dev commented Nov 20, 2025

#️⃣연관된 이슈

close #325

📝 작업 내용

패키지 분리 작업을 진행했습니다.

  • AdminTempApply 클래스 및 인터페이스명을 TempApply로 변경
  • TempApply 관련 패키지 구조 및 경로 리팩토링
  • TempApplyServiceTest 패키지 경로 변경
  • SubmittedApply 관련 패키지 구조 및 경로 조정
  • ApplyPass 관련 패키지 구조 및 경로 수정
  • AdminAuth 관련 패키지 구조 및 경로 업데이트
  • Admin Member 도메인 관련 패키지 및 경로 리팩토링
  • 예외 처리(Exception Handling) 관련 패키지 구조 재정비 및 경로 업데이트

Summary by CodeRabbit

릴리스 노트

  • 리팩토링
    • 관리자 모듈의 내부 코드 구조를 재정렬했습니다. 패키지 구조를 더 명확하게 분리하여 코드 유지보수성을 개선했습니다.

✏️ Tip: You can customize this high-level summary in your review settings.

@023-dev 023-dev self-assigned this Nov 20, 2025
@023-dev 023-dev added 👨🏻‍💻backend 백엔드 작업 🧹cleanup 기능 변경 없이 코드만 깔끔하게 수정 labels Nov 20, 2025
@023-dev 023-dev linked an issue Nov 20, 2025 that may be closed by this pull request
@023-dev 023-dev added the 🪄refactor 리팩토링 label Nov 20, 2025
@coderabbitai
Copy link

coderabbitai bot commented Nov 20, 2025

개요

클래스들이 org.ject.support.domain.admin.* 패키지 구조에서 org.ject.support.admin.*로 재구성되었습니다. 관리 기능이 apply, auth, member 하위 모듈로 분리되었고, 일부 클래스명이 변경되었습니다.

변경사항

코호트 / 파일 변경 요약
Apply 컨트롤러
src/main/java/org/ject/support/admin/apply/controller/ApplyPassApiSpec.java, ApplyPassController.java, SubmittedApplyApiSpec.java, SubmittedApplyController.java, TempApplyApiSpec.java, TempApplyController.java
패키지를 org.ject.support.domain.admin.controller에서 org.ject.support.admin.apply.controller로 이동. AdminTempApplyApiSpecTempApplyApiSpec, AdminTempApplyControllerTempApplyController로 클래스명 변경. 모든 DTO 및 서비스 import 경로 업데이트.
Apply DTO
src/main/java/org/ject/support/admin/apply/dto/ApplicationFormResponse.java, ApplyPassRequest.java, SubmittedApplyBulkDeleteRequest.java, SubmittedApplyCountResponse.java, SubmittedApplyDetailResponse.java, SubmittedApplyEditRequest.java, SubmittedApplyResponse.java, TempApplyDetailResponse.java, TempSavedApplyCountResponse.java, TempSavedApplyResponse.java
패키지를 org.ject.support.domain.admin.dto에서 org.ject.support.admin.apply.dto로 변경.
Apply 서비스
src/main/java/org/ject/support/admin/apply/service/ApplyPassService.java, SubmittedApplyService.java, TempApplyService.java
패키지를 org.ject.support.domain.admin.service에서 org.ject.support.admin.apply.service로 이동. AdminTempApplyServiceTempApplyService로 클래스명 변경. 관련 DTO import 업데이트.
Auth 컨트롤러
src/main/java/org/ject/support/admin/auth/controller/AdminAuthApiSpec.java, AdminAuthController.java
패키지를 org.ject.support.domain.admin.controller에서 org.ject.support.admin.auth.controller로 이동. 인증 관련 DTO import를 새 위치로 업데이트.
Auth DTO
src/main/java/org/ject/support/admin/auth/dto/AdminAuthSendSlackRequest.java, AdminAuthSendSlackResponse.java, AdminVerifySlackRequest.java
패키지를 org.ject.support.domain.admin.dto에서 org.ject.support.admin.auth.dto로 변경.
Auth 서비스 및 컴포넌트
src/main/java/org/ject/support/admin/auth/service/AdminAuthService.java, src/main/java/org/ject/support/admin/auth/component/AdminMemberComponent.java
패키지를 org.ject.support.domain.admin.*에서 org.ject.support.admin.auth.*로 이동. 관련 import 경로 업데이트.
예외 처리
src/main/java/org/ject/support/admin/exception/AdminErrorCode.java, AdminException.java
패키지를 org.ject.support.domain.admin.exception에서 org.ject.support.admin.exception으로 변경.
Member 컨트롤러
src/main/java/org/ject/support/admin/member/controller/MemberManagementApiSpec.java, MemberManagementController.java
패키지를 org.ject.support.domain.admin.controller에서 org.ject.support.admin.member.controller로 이동. 멤버 관련 DTO 및 서비스 import 업데이트.
Member DTO
src/main/java/org/ject/support/admin/member/dto/MemberBulkDeleteRequest.java, MemberDetailResponse.java, MemberEditRequest.java, MemberRegisterRequest.java, MemberResponse.java
패키지를 org.ject.support.domain.admin.dto에서 org.ject.support.admin.member.dto로 변경.
Member 서비스
src/main/java/org/ject/support/admin/member/service/MemberManagementService.java
패키지를 org.ject.support.domain.admin.service에서 org.ject.support.admin.member.service로 이동. 멤버 DTO import 업데이트.
저장소 계층
src/main/java/org/ject/support/domain/member/repository/MemberQueryRepository.java, MemberQueryRepositoryImpl.java
MemberResponse import를 org.ject.support.domain.admin.dto에서 org.ject.support.admin.member.dto로 업데이트.
테스트 - Apply
src/test/java/org/ject/support/admin/apply/service/ApplyPassServiceTest.java, SubmittedApplyServiceTest.java, TempApplyServiceTest.java
테스트 패키지를 org.ject.support.domain.admin.service에서 org.ject.support.admin.apply.service로 이동. AdminTempApplyServiceTestTempApplyServiceTest로 클래스명 변경. 관련 import 업데이트.
테스트 - Auth
src/test/java/org/ject/support/admin/auth/component/AdminMemberComponentTest.java, AdminAuthControllerTest.java, AdminAuthServiceTest.java
테스트 패키지를 org.ject.support.domain.admin.*에서 org.ject.support.admin.auth.*로 이동. 모든 import 경로 업데이트.
테스트 - Member
src/test/java/org/ject/support/admin/member/controller/MemberManagementControllerTest.java, MemberManagementServiceTest.java
테스트 패키지를 org.ject.support.domain.admin.*에서 org.ject.support.admin.member.*로 이동. 멤버 관련 import 업데이트.
테스트 - 저장소
src/test/java/org/ject/support/domain/member/repository/MemberQueryRepositoryTest.java
MemberResponse import를 org.ject.support.domain.admin.dto에서 org.ject.support.admin.member.dto로 변경.

예상 코드 리뷰 난이도

🎯 2 (단순) | ⏱️ ~12분

  • 주의가 필요한 영역:
    • TempApplyService.java에서 제거된 @Service, @RequiredArgsConstructor, @Transactional(readOnly = true) 주석이 의존성 주입에 영향을 미치는지 확인 필요
    • 전체 프로젝트에서 이전 패키지 경로에 대한 다른 참조가 남아있지 않은지 확인 필요 (특히 설정 파일이나 다른 모듈)
    • 모든 import 경로가 일관되게 업데이트되었는지 컴파일 검증 필요

🐰 꼬리 설렁설렁 흔들며

패키지 나누고 정리하니 참 깔끔하네,

apply, auth, member로 구분하니 보기 좋네,

옛 domain 제쳐두고 새 admin 아래 모이니,

리팩토링의 손길로 더욱 단정해졌네! 🌿

Pre-merge checks and finishing touches

❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
✅ Passed checks (4 passed)
Check name Status Explanation
Linked Issues check ✅ Passed PR의 모든 코드 변경사항이 #325의 목표를 충족합니다: admin 기능을 domain 패키지 밖으로 분리하고, 도메인별로 세분화된 구조(apply, auth, member, exception)로 재구성했습니다.
Out of Scope Changes check ✅ Passed 모든 변경사항이 관리자 패키지 구조 개선이라는 범위 내에 있습니다. 패키지 경로 이동, 클래스명 변경(AdminTempApplyService→TempApplyService 등), 임포트 경로 업데이트만 포함되어 있습니다.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed PR 제목은 주요 변경 사항인 관리자 패키지 구조 개선을 명확하게 설명하고 있으며, 전체 PR의 목표와 일치합니다.
✨ 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 refactor/325-admin-package-arch

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.

@github-actions
Copy link

Test Results

233 tests   233 ✅  10s ⏱️
 52 suites    0 💤
 52 files      0 ❌

Results for commit 3b29114.

@github-actions
Copy link

📊테스트 커버리지

Overall Project 78.63% 🍏
File Coverage
MemberQueryRepositoryImpl.java 100% 🍏
SubmittedApplyService.java 100% 🍏
TempApplyService.java 100% 🍏
ApplyPassService.java 100% 🍏
AdminMemberComponent.java 96.43% 🍏
AdminAuthService.java 92.86% 🍏
MemberManagementService.java 92.12% 🍏

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (5)
src/main/java/org/ject/support/domain/member/repository/MemberQueryRepositoryImpl.java (1)

9-118: 도메인 레포지토리에서 admin DTO를 직접 반환하는 구조는 중장기적으로 분리 검토가 필요해 보입니다

이번 변경은 QMemberResponse, MemberResponse의 패키지만 admin.member.dto로 옮긴 것이지만, 여전히 도메인 레포지토리(MemberQueryRepositoryImpl)가 admin 전용 DTO를 직접 생성·반환하고 있어 레이어 간 의존성이 뒤엉킬 여지가 있습니다.

추후에는 레포지토리가 도메인 전용 프로젝션(예: MemberSummary 같은 DTO)을 반환하고, admin 쪽 서비스/컨트롤러에서 이를 MemberResponse로 매핑하도록 분리하는 구조를 검토해 보시면 좋겠습니다.

src/main/java/org/ject/support/admin/apply/dto/SubmittedApplyResponse.java (1)

1-36: 패키지 이동은 적절하고, hasPortfolio 계산 기준만 한 번 점검해 보면 좋겠습니다

패키지 이동 외에는 기능 변화가 없고, SubmittedApplyResponse.from(...)의 필드 매핑도 자연스럽습니다. 다만 hasPortfolioApplicationForm의 포트폴리오 리스트를 기준으로 계산되고, 응답에 내려가는 포트폴리오는 매개변수 portfolios를 사용하고 있어 두 소스가 항상 동일하다는 전제를 가집니다.

서비스 계층에서 포트폴리오를 필터링/매핑하는 경우가 있다면, hasPortfolioportfolios 인자 기준으로 계산하는 쪽이 더 안전할 수 있는지 한 번만 검토해 보시면 좋겠습니다.

src/main/java/org/ject/support/admin/apply/controller/TempApplyController.java (1)

25-25: 필드명을 새로운 네이밍 규칙에 맞게 변경하는 것을 권장합니다.

클래스명이 AdminTempApplyController에서 TempApplyController로, 서비스 타입이 AdminTempApplyService에서 TempApplyService로 변경되었으나, 필드명은 여전히 adminTempApplyService로 "Admin" 접두사를 포함하고 있습니다. 일관성을 위해 필드명도 tempApplyService로 변경하는 것이 좋습니다.

다음과 같이 변경을 권장합니다:

-    private final TempApplyService adminTempApplyService;
+    private final TempApplyService tempApplyService;

그리고 Line 30, 36, 42, 49에서도 해당 필드 사용 부분을 함께 변경해야 합니다:

-        return adminTempApplyService.getTempApplyDetail(tempApplyId);
+        return tempApplyService.getTempApplyDetail(tempApplyId);
src/test/java/org/ject/support/admin/apply/service/TempApplyServiceTest.java (1)

31-35: 필드 이름을 서비스 이름과 맞추면 가독성이 조금 더 좋아질 것 같습니다.

TempApplyService 타입을 주입받으면서 필드명이 여전히 adminTempApplyService로 남아 있는데, tempApplyService 등으로 맞춰 두면 이후 코드 리딩/검색 시 혼동을 줄일 수 있을 것 같습니다. isZero() 사용으로 AssertJ 스타일을 통일한 부분은 👍 입니다.

Also applies to: 173-178

src/main/java/org/ject/support/admin/apply/controller/TempApplyApiSpec.java (1)

1-7: 임시 지원서 ApiSpec 네임스페이스 및 타입명 변경 시 외부 참조 영향만 한 번 더 확인해 주세요.

AdminTempApplyApiSpecTempApplyApiSpec로 타입명이 바뀌고 패키지가 admin.apply.controller로 이동해서, 같은 모듈 내 컨트롤러 구현체들은 잘 따라온다면 문제 없겠지만, 다른 모듈에서 이 인터페이스를 직접 참조하고 있었다면 import/타입 변경이 필요할 수 있습니다. 현재 PR 범위 안에서는 DTO·패키지 구조가 일관되어 보입니다.

Also applies to: 15-41

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 7a06271 and 3b29114.

📒 Files selected for processing (47)
  • src/main/java/org/ject/support/admin/apply/controller/ApplyPassApiSpec.java (1 hunks)
  • src/main/java/org/ject/support/admin/apply/controller/ApplyPassController.java (1 hunks)
  • src/main/java/org/ject/support/admin/apply/controller/SubmittedApplyApiSpec.java (1 hunks)
  • src/main/java/org/ject/support/admin/apply/controller/SubmittedApplyController.java (1 hunks)
  • src/main/java/org/ject/support/admin/apply/controller/TempApplyApiSpec.java (2 hunks)
  • src/main/java/org/ject/support/admin/apply/controller/TempApplyController.java (2 hunks)
  • src/main/java/org/ject/support/admin/apply/dto/ApplicationFormResponse.java (1 hunks)
  • src/main/java/org/ject/support/admin/apply/dto/ApplyPassRequest.java (1 hunks)
  • src/main/java/org/ject/support/admin/apply/dto/SubmittedApplyBulkDeleteRequest.java (1 hunks)
  • src/main/java/org/ject/support/admin/apply/dto/SubmittedApplyCountResponse.java (1 hunks)
  • src/main/java/org/ject/support/admin/apply/dto/SubmittedApplyDetailResponse.java (1 hunks)
  • src/main/java/org/ject/support/admin/apply/dto/SubmittedApplyEditRequest.java (1 hunks)
  • src/main/java/org/ject/support/admin/apply/dto/SubmittedApplyResponse.java (1 hunks)
  • src/main/java/org/ject/support/admin/apply/dto/TempApplyDetailResponse.java (1 hunks)
  • src/main/java/org/ject/support/admin/apply/dto/TempSavedApplyCountResponse.java (1 hunks)
  • src/main/java/org/ject/support/admin/apply/dto/TempSavedApplyResponse.java (1 hunks)
  • src/main/java/org/ject/support/admin/apply/service/ApplyPassService.java (1 hunks)
  • src/main/java/org/ject/support/admin/apply/service/SubmittedApplyService.java (1 hunks)
  • src/main/java/org/ject/support/admin/apply/service/TempApplyService.java (2 hunks)
  • src/main/java/org/ject/support/admin/auth/component/AdminMemberComponent.java (1 hunks)
  • src/main/java/org/ject/support/admin/auth/controller/AdminAuthApiSpec.java (1 hunks)
  • src/main/java/org/ject/support/admin/auth/controller/AdminAuthController.java (1 hunks)
  • src/main/java/org/ject/support/admin/auth/dto/AdminAuthSendSlackRequest.java (1 hunks)
  • src/main/java/org/ject/support/admin/auth/dto/AdminAuthSendSlackResponse.java (1 hunks)
  • src/main/java/org/ject/support/admin/auth/dto/AdminVerifySlackRequest.java (1 hunks)
  • src/main/java/org/ject/support/admin/auth/service/AdminAuthService.java (1 hunks)
  • src/main/java/org/ject/support/admin/exception/AdminErrorCode.java (1 hunks)
  • src/main/java/org/ject/support/admin/exception/AdminException.java (1 hunks)
  • src/main/java/org/ject/support/admin/member/controller/MemberManagementApiSpec.java (1 hunks)
  • src/main/java/org/ject/support/admin/member/controller/MemberManagementController.java (1 hunks)
  • src/main/java/org/ject/support/admin/member/dto/MemberBulkDeleteRequest.java (1 hunks)
  • src/main/java/org/ject/support/admin/member/dto/MemberDetailResponse.java (1 hunks)
  • src/main/java/org/ject/support/admin/member/dto/MemberEditRequest.java (1 hunks)
  • src/main/java/org/ject/support/admin/member/dto/MemberRegisterRequest.java (1 hunks)
  • src/main/java/org/ject/support/admin/member/dto/MemberResponse.java (1 hunks)
  • src/main/java/org/ject/support/admin/member/service/MemberManagementService.java (1 hunks)
  • src/main/java/org/ject/support/domain/member/repository/MemberQueryRepository.java (1 hunks)
  • src/main/java/org/ject/support/domain/member/repository/MemberQueryRepositoryImpl.java (1 hunks)
  • src/test/java/org/ject/support/admin/apply/service/ApplyPassServiceTest.java (1 hunks)
  • src/test/java/org/ject/support/admin/apply/service/SubmittedApplyServiceTest.java (1 hunks)
  • src/test/java/org/ject/support/admin/apply/service/TempApplyServiceTest.java (3 hunks)
  • src/test/java/org/ject/support/admin/auth/component/AdminMemberComponentTest.java (1 hunks)
  • src/test/java/org/ject/support/admin/auth/controller/AdminAuthControllerTest.java (1 hunks)
  • src/test/java/org/ject/support/admin/auth/service/AdminAuthServiceTest.java (1 hunks)
  • src/test/java/org/ject/support/admin/member/controller/MemberManagementControllerTest.java (2 hunks)
  • src/test/java/org/ject/support/admin/member/service/MemberManagementServiceTest.java (2 hunks)
  • src/test/java/org/ject/support/domain/member/repository/MemberQueryRepositoryTest.java (1 hunks)
🧰 Additional context used
🧠 Learnings (2)
📚 Learning: 2025-10-23T13:43:33.075Z
Learnt from: 023-dev
Repo: JECT-Study/JECT-Official-WebSite-Server PR: 306
File: src/main/java/org/ject/support/domain/admin/service/SubmittedApplyService.java:29-38
Timestamp: 2025-10-23T13:43:33.075Z
Learning: In `SubmittedApplyService.java` (Java service class in Spring Boot application), the bulk delete method `deleteSubmittedApplies` uses `applyIds.stream().distinct().toList()` to deduplicate input IDs before calling `findAllByIdAndStatusWithMember(distinctIds, Status.SUBMITTED)` to fetch Apply entities with status filtering and member join fetch, preventing duplicate ID issues in the size check.

Applied to files:

  • src/main/java/org/ject/support/admin/apply/controller/SubmittedApplyApiSpec.java
  • src/main/java/org/ject/support/admin/apply/controller/SubmittedApplyController.java
  • src/main/java/org/ject/support/admin/apply/service/SubmittedApplyService.java
  • src/main/java/org/ject/support/admin/apply/service/ApplyPassService.java
  • src/main/java/org/ject/support/admin/apply/service/TempApplyService.java
  • src/main/java/org/ject/support/admin/apply/controller/TempApplyApiSpec.java
  • src/main/java/org/ject/support/admin/apply/controller/TempApplyController.java
  • src/main/java/org/ject/support/admin/apply/dto/SubmittedApplyBulkDeleteRequest.java
  • src/test/java/org/ject/support/admin/apply/service/SubmittedApplyServiceTest.java
📚 Learning: 2025-10-23T13:43:48.042Z
Learnt from: 023-dev
Repo: JECT-Study/JECT-Official-WebSite-Server PR: 306
File: src/main/java/org/ject/support/domain/admin/service/SubmittedApplyService.java:28-38
Timestamp: 2025-10-23T13:43:48.042Z
Learning: In `SubmittedApplyService.java` (Java service class in Spring Boot application), the bulk delete method `deleteSubmittedApplies` deduplicates the input ID list using `stream().distinct().toList()` before calling `findAllByIdAndStatusWithMember(distinctIds, Status.SUBMITTED)` to fetch multiple Apply entities with status filtering and member join fetch in a single query, preventing N+1 issues and ensuring only SUBMITTED applies are deleted.

Applied to files:

  • src/main/java/org/ject/support/admin/apply/controller/SubmittedApplyApiSpec.java
  • src/main/java/org/ject/support/admin/apply/controller/SubmittedApplyController.java
  • src/main/java/org/ject/support/admin/apply/service/SubmittedApplyService.java
  • src/main/java/org/ject/support/admin/apply/service/ApplyPassService.java
  • src/main/java/org/ject/support/admin/apply/service/TempApplyService.java
  • src/main/java/org/ject/support/admin/apply/dto/SubmittedApplyBulkDeleteRequest.java
  • src/test/java/org/ject/support/admin/apply/service/SubmittedApplyServiceTest.java
🧬 Code graph analysis (4)
src/main/java/org/ject/support/admin/auth/service/AdminAuthService.java (2)
src/main/java/org/ject/support/common/util/CodeGeneratorUtil.java (1)
  • CodeGeneratorUtil (6-29)
src/main/java/org/ject/support/admin/exception/AdminException.java (1)
  • AdminException (5-9)
src/test/java/org/ject/support/admin/auth/service/AdminAuthServiceTest.java (1)
src/main/java/org/ject/support/admin/exception/AdminException.java (1)
  • AdminException (5-9)
src/test/java/org/ject/support/admin/auth/component/AdminMemberComponentTest.java (1)
src/main/java/org/ject/support/admin/exception/AdminException.java (1)
  • AdminException (5-9)
src/main/java/org/ject/support/admin/auth/component/AdminMemberComponent.java (1)
src/main/java/org/ject/support/admin/exception/AdminException.java (1)
  • AdminException (5-9)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: check-application
🔇 Additional comments (44)
src/main/java/org/ject/support/admin/apply/dto/TempSavedApplyResponse.java (1)

1-1: 패키지 구조 개선이 적절합니다.

Apply 관련 DTO를 admin.apply.dto 패키지로 이동한 것은 도메인별 모듈화 목표와 일치하며, 논리적인 구조입니다.

src/main/java/org/ject/support/admin/member/dto/MemberEditRequest.java (1)

1-1: 멤버 관련 DTO의 패키지 이동이 적절합니다.

Member 관련 DTO를 admin.member.dto 패키지로 이동하여 도메인별 관심사 분리가 명확해졌습니다.

src/main/java/org/ject/support/admin/apply/dto/SubmittedApplyEditRequest.java (1)

1-1: Apply 도메인 DTO의 일관된 재배치입니다.

제출된 지원서 관련 DTO를 admin.apply.dto로 이동하여 apply 도메인의 응집도가 향상되었습니다.

src/main/java/org/ject/support/admin/exception/AdminException.java (1)

1-1: 공통 예외 클래스의 위치가 적절합니다.

Admin 전반에서 사용되는 공통 예외를 admin.exception 패키지로 이동하여 admin 하위 모든 서브도메인에서 접근하기 용이한 구조가 되었습니다.

src/main/java/org/ject/support/admin/apply/service/ApplyPassService.java (1)

1-1: Apply 서비스의 패키지 이동이 올바릅니다.

Apply 합격 처리 서비스를 admin.apply.service 패키지로 이동하여 apply 도메인의 컨트롤러, DTO, 서비스가 하나의 모듈로 응집되었습니다.

src/main/java/org/ject/support/admin/apply/dto/TempSavedApplyCountResponse.java (1)

1-1: 임시 저장 지원서 관련 DTO의 패키지 이동이 적절합니다.

Apply 관련 카운트 응답 DTO를 admin.apply.dto로 이동하여 apply 도메인의 일관된 패키지 구조가 완성되었습니다.

src/main/java/org/ject/support/admin/auth/controller/AdminAuthApiSpec.java (1)

1-1: Auth 도메인의 패키지 및 임포트 업데이트가 완벽합니다.

API 스펙을 admin.auth.controller 패키지로 이동하고, 관련 DTO 임포트를 admin.auth.dto로 업데이트하여 auth 도메인의 완전한 모듈화를 달성했습니다.

Also applies to: 8-10

src/main/java/org/ject/support/admin/member/dto/MemberBulkDeleteRequest.java (1)

1-1: 패키지 이동이 완벽하게 완료되었습니다.

검증 결과, 이전 domain.admin.* 패키지 경로에 대한 참조가 코드베이스 전체에서 발견되지 않았습니다. 멤버 관련 DTO의 패키지 이동이 완전하게 처리되었으며, 모든 의존성이 올바르게 업데이트되었습니다.

src/main/java/org/ject/support/admin/apply/dto/SubmittedApplyDetailResponse.java (1)

1-34: 패키지 이동으로 admin.apply DTO 계층 정리가 잘 되었습니다

SubmittedApplyDetailResponse는 패키지만 변경되었고, from(...) 팩토리 메서드의 멤버/날짜 매핑 로직도 기존 도메인 모델과 일관적으로 보입니다. 이번 변경으로 인한 기능상의 이슈는 없어 보입니다.

src/test/java/org/ject/support/admin/apply/service/ApplyPassServiceTest.java (1)

1-115: 새 admin.apply 서비스 구조에 맞게 테스트 패키지/임포트가 잘 정리되었습니다

테스트 패키지와 임포트가 admin.apply.service 구조와 일치하도록 변경되었고, 합격 처리/예외 처리 시나리오 자체는 그대로 유지되어 ApplyPassService 동작을 잘 검증하고 있습니다.

src/test/java/org/ject/support/admin/auth/component/AdminMemberComponentTest.java (1)

1-87: Auth 컴포넌트 패키지로의 이동 및 예외 임포트 정리가 일관적입니다

테스트 패키지와 AdminErrorCode, AdminException 임포트가 새 admin.auth/admin.exception 구조에 맞게 정리되었고, 예외/정상/상태 변경 시나리오도 여전히 기대 동작을 정확히 검증하고 있습니다.

src/main/java/org/ject/support/admin/apply/dto/SubmittedApplyBulkDeleteRequest.java (1)

1-11: 요청 DTO는 패키지 이동 외에 기존 서비스 계약을 그대로 유지하고 있습니다

applyIds@NotEmpty만 두고, 중복 제거·상태 검증은 서비스 계층에서 처리하는 구조가 유지되어 있어 책임 분리가 명확합니다. 패키지만 admin.apply.dto로 이동된 것으로 보이며, 추가적인 변경 필요성은 없어 보입니다. (Based on learnings)

src/main/java/org/ject/support/admin/auth/component/AdminMemberComponent.java (1)

1-34: AdminMemberComponent의 auth 컴포넌트 편입과 예외 패키지 변경이 자연스럽습니다

AdminMemberComponentadmin.auth.component로 이동하면서 AdminException, AdminErrorCode의 새 위치를 사용하도록 정리된 점이 PR 목적과 잘 맞습니다. 관리자 조회/상태 변경 로직과 트랜잭션 설정도 기존 동작을 그대로 유지할 것으로 보입니다.

src/main/java/org/ject/support/admin/member/dto/MemberDetailResponse.java (1)

1-33: Member 관리용 DTO를 admin.member 패키지로 이동한 정리가 적절합니다

MemberDetailResponseadmin.member.dto로 이동하면서, Member/Semester에서의 필드 매핑 로직(특히 semesterName에서 숫자만 추출하는 부분)도 그대로 유지되어 기존 API 계약과 일관성을 잘 지키고 있습니다.

src/main/java/org/ject/support/admin/apply/controller/ApplyPassApiSpec.java (1)

1-16: 패키지 구조 개선이 올바르게 적용되었습니다.

domain.admin 패키지에서 admin.apply로 모듈이 적절히 분리되었으며, 관련 DTO 임포트 경로도 일관되게 업데이트되었습니다.

src/main/java/org/ject/support/domain/member/repository/MemberQueryRepository.java (1)

5-5: DTO 임포트 경로가 새로운 패키지 구조에 맞게 올바르게 업데이트되었습니다.

도메인 레이어의 리포지토리가 관리자 모듈의 DTO를 참조하도록 임포트 경로가 적절히 변경되었습니다.

src/test/java/org/ject/support/domain/member/repository/MemberQueryRepositoryTest.java (1)

10-10: 테스트 코드의 임포트가 새로운 패키지 구조에 맞게 올바르게 업데이트되었습니다.

테스트 로직에는 변경이 없으며, DTO 임포트 경로만 적절히 업데이트되었습니다.

src/main/java/org/ject/support/admin/auth/dto/AdminAuthSendSlackRequest.java (1)

1-11: 관리자 인증 관련 DTO가 적절한 패키지로 이동되었습니다.

admin.auth.dto 패키지로의 이동은 인증 관련 코드를 명확히 분리하는 리팩토링 목표와 일치합니다.

src/test/java/org/ject/support/admin/auth/controller/AdminAuthControllerTest.java (1)

1-83: 테스트 클래스의 패키지 및 임포트가 일관되게 업데이트되었습니다.

컨트롤러 테스트가 admin.auth.controller 패키지로 이동되었으며, 모든 관련 DTO 및 서비스 임포트가 새로운 구조에 맞게 올바르게 변경되었습니다. 테스트 로직은 변경되지 않았습니다.

src/main/java/org/ject/support/admin/apply/controller/SubmittedApplyApiSpec.java (1)

1-53: 제출된 지원서 API 스펙이 새로운 모듈 구조로 적절히 이동되었습니다.

admin.apply 패키지로의 이동과 모든 DTO 임포트의 일관된 업데이트가 확인됩니다. API 시그니처에는 변경이 없습니다.

src/test/java/org/ject/support/admin/apply/service/SubmittedApplyServiceTest.java (1)

1-487: 서비스 테스트의 패키지 구조가 올바르게 개선되었습니다.

admin.apply.service 패키지로 이동되었으며, 관련 DTO 임포트가 일관되게 업데이트되었습니다. 16개의 테스트 케이스 모두 변경 없이 유지되어 기능 무결성이 보장됩니다.

src/main/java/org/ject/support/admin/auth/dto/AdminAuthSendSlackResponse.java (1)

1-7: 응답 DTO가 인증 모듈의 적절한 위치로 이동되었습니다.

요청 DTO(AdminAuthSendSlackRequest)와 함께 admin.auth.dto 패키지에 배치되어 응집도가 향상되었습니다.

src/main/java/org/ject/support/admin/apply/service/SubmittedApplyService.java (2)

1-10: 패키지 구조 개선이 잘 적용되었습니다.

서비스 클래스와 DTO 임포트가 새로운 모듈 구조(admin.apply.*)로 일관되게 리팩토링되었습니다. 비즈니스 로직 변경 없이 패키지 구조만 개선된 점이 좋습니다.


1-173: 패키지 마이그레이션 검증 완료 - 참조 업데이트 확인됨

검증 결과, 코드베이스 전체에서 SubmittedApplyService 및 관련 DTO들의 패키지 마이그레이션이 정상적으로 완료되었습니다:

  • ✅ 이전 패키지 경로(org.ject.support.domain.admin.*) 참조 없음
  • ✅ 모든 DTO와 서비스가 올바른 새 패키지 경로 사용 중
  • ✅ 컨트롤러(SubmittedApplyController), API 스펙, 테스트에서 모두 정상 import
  • ✅ 전체 크로스 참조 업데이트 완료
src/main/java/org/ject/support/admin/auth/dto/AdminVerifySlackRequest.java (1)

1-1: 인증 관련 DTO의 패키지 이동이 적절합니다.

admin.auth.dto 네임스페이스로의 이동이 모듈 분리 목적에 부합합니다.

src/main/java/org/ject/support/admin/apply/dto/ApplicationFormResponse.java (1)

1-1: 지원서 관련 DTO의 패키지 이동이 올바릅니다.

admin.apply.dto 네임스페이스로의 이동이 도메인별 분리 구조에 적합합니다.

src/main/java/org/ject/support/admin/apply/controller/ApplyPassController.java (1)

1-5: 컨트롤러의 패키지 리팩토링이 깔끔합니다.

컨트롤러와 관련 DTO, 서비스의 임포트가 새로운 admin.apply.* 구조로 일관되게 업데이트되었습니다.

src/main/java/org/ject/support/admin/member/dto/MemberRegisterRequest.java (1)

1-1: 회원 관리 DTO의 패키지 분리가 적절합니다.

admin.member.dto 네임스페이스로의 이동이 회원 관리 모듈 분리에 적합합니다.

src/main/java/org/ject/support/admin/member/dto/MemberResponse.java (1)

1-1: 회원 응답 DTO의 패키지 이동이 올바릅니다.

admin.member.dto로의 이동이 일관된 모듈 구조를 형성합니다.

src/test/java/org/ject/support/admin/member/service/MemberManagementServiceTest.java (1)

1-1: 테스트 클래스의 패키지 구조 업데이트가 완료되었습니다.

테스트 패키지와 임포트가 새로운 admin.member.* 구조에 맞춰 정확하게 리팩토링되었습니다. 테스트 로직은 변경되지 않아 안전합니다.

Also applies to: 12-16

src/test/java/org/ject/support/admin/auth/service/AdminAuthServiceTest.java (1)

1-1: 인증 서비스 테스트의 패키지 리팩토링이 완료되었습니다.

테스트 패키지가 admin.auth.service로 이동하고, 관련 컴포넌트 및 예외 클래스 임포트가 새로운 구조(admin.auth.component, admin.exception)에 맞춰 업데이트되었습니다.

Also applies to: 5-7

src/main/java/org/ject/support/admin/apply/dto/ApplyPassRequest.java (1)

1-6: 패키지 구조 개선이 적절하게 적용되었습니다.

DTO 클래스가 domain.admin.dto에서 admin.apply.dto로 이동되어 apply 도메인별로 모듈화된 구조를 갖추게 되었습니다.

src/main/java/org/ject/support/admin/exception/AdminErrorCode.java (1)

1-20: 예외 처리 패키지 재정비가 올바르게 수행되었습니다.

관리자 관련 예외 코드가 domain.admin.exception에서 admin.exception으로 이동하여 도메인 패키지와 분리되었습니다.

src/main/java/org/ject/support/admin/apply/dto/TempApplyDetailResponse.java (1)

1-43: 임시 지원서 상세 응답 DTO의 패키지 이동이 적절합니다.

DTO가 admin.apply.dto 패키지로 이동되어 apply 관련 응답 객체들이 일관되게 그룹화되었습니다.

src/main/java/org/ject/support/admin/auth/service/AdminAuthService.java (1)

1-112: 관리자 인증 서비스의 패키지 재구성이 성공적으로 완료되었습니다.

서비스가 domain.admin.service에서 admin.auth.service로 이동하여 인증 관련 로직이 명확하게 분리되었습니다. 모든 의존성 import도 새로운 패키지 구조에 맞게 정확히 업데이트되었습니다.

src/main/java/org/ject/support/admin/apply/controller/SubmittedApplyController.java (1)

1-75: 제출된 지원서 컨트롤러의 패키지 구조 개선이 올바르게 적용되었습니다.

컨트롤러와 관련 DTO/서비스 import가 admin.apply.* 네임스페이스로 일관되게 이동되어 apply 모듈이 적절히 모듈화되었습니다.

src/main/java/org/ject/support/admin/apply/dto/SubmittedApplyCountResponse.java (1)

1-11: 제출된 지원서 카운트 응답 DTO의 패키지 이동이 적절합니다.

DTO가 admin.apply.dto로 이동되었으며, compact constructor에서 null-safety 처리도 적절히 유지되고 있습니다.

src/test/java/org/ject/support/admin/member/controller/MemberManagementControllerTest.java (1)

1-518: 회원 관리 컨트롤러 테스트의 패키지 구조 업데이트가 정확합니다.

테스트 파일의 패키지와 import 구문이 새로운 admin.member.* 구조에 맞게 업데이트되었으며, 기존 테스트 로직은 그대로 보존되어 있습니다.

src/main/java/org/ject/support/admin/apply/controller/TempApplyController.java (1)

1-51: 임시 지원서 컨트롤러의 리팩토링이 대체로 잘 수행되었습니다.

클래스명과 인터페이스가 적절히 변경되었고, 패키지 구조도 admin.apply.controller로 올바르게 이동되었습니다.

src/main/java/org/ject/support/admin/member/controller/MemberManagementController.java (1)

1-12: 멤버 관리 컨트롤러의 admin 전용 패키지 분리가 잘 정리되었습니다.

패키지 및 서비스/DTO 경로가 admin.member 하위로 일관되게 이동했고, 기존 API 시그니처·보안 애노테이션 구조를 그대로 유지하고 있어 호환성 측면에서도 무리가 없어 보입니다.

Also applies to: 30-78

src/main/java/org/ject/support/admin/member/service/MemberManagementService.java (1)

1-12: 멤버 관리 서비스의 admin.member 네임스페이스 이관이 일관되게 적용되었습니다.

DTO 의존성과 패키지 경로가 컨트롤러/ApiSpec과 동일한 admin.member 모듈로 정리되어, 도메인(domain.member)과 관리 기능이 명확히 분리된 구조로 보입니다. 비즈니스 로직은 변경 없이 유지된 것도 좋습니다.

Also applies to: 28-124

src/main/java/org/ject/support/admin/auth/controller/AdminAuthController.java (1)

1-11: Admin 인증 컨트롤러의 패키지/DTO 이관이 깔끔하게 적용되었습니다.

컨트롤러, DTO, 서비스 모두 admin.auth 하위로 정리되면서 책임 범위가 분명해졌고, 기존 엔드포인트 및 동작은 그대로 유지되어 리스크도 낮아 보입니다.

Also applies to: 21-43

src/main/java/org/ject/support/admin/member/controller/MemberManagementApiSpec.java (1)

1-12: Member 관리 ApiSpec의 패키지/DTO 정리가 컨트롤러·서비스와 잘 맞습니다.

admin.member.controller 패키지로 이동하고 DTO 의존성도 admin.member.dto로 변경되어, 멤버 도메인(조회/수정/등록/삭제)과 관리자용 API 스펙이 깔끔히 분리된 구조로 보입니다.

Also applies to: 20-57

src/main/java/org/ject/support/admin/apply/service/TempApplyService.java (1)

1-8: 임시 지원서 서비스의 admin.apply 모듈 이관이 잘 이루어졌습니다.

TempApplyServiceadmin.apply.service로 이동하고 관련 DTO도 admin.apply.dto로 정리되어, 임시 저장 지원서 도메인에 관한 조회·삭제 로직이 한 모듈로 모여 있습니다. TEMP_SAVED 상태로 한정해 조회·삭제하는 기존 제약과 트랜잭션 설정도 그대로 유지되어 동작 변화 없이 구조만 개선된 것으로 보입니다.

Also applies to: 25-91

Copy link
Member

@fivedragon5 fivedragon5 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

고생하셨습니다!

@023-dev
Copy link
Member Author

023-dev commented Nov 27, 2025

@fivedragon5 해당 PR에 대해서는 이번 릴리즈 이후 머지하는 게 좋을 것 같은데 어떻게 생각하시나요?
혹시 모를 사이드 이펙트를 검증 후 다음 릴리즈부터 적용하는게 좋을 것 같다고 생각이 듭니다!

@fivedragon5
Copy link
Member

제가 일정이 있어서 코멘트를 이제 봤네요 ㅠㅠ!

얘기해주신대로 사이드 이펙트가 발생할 수 있으니 다음 릴리즈때 배포하는게 좋아보입니다!
우선 Draft 상태로 둘까요?

@023-dev
Copy link
Member Author

023-dev commented Dec 1, 2025

넵! 그게 좋을 것 같아여

@023-dev 023-dev changed the title [REFACTOR] 관리자 패키지 구조 개선 refactor: 관리자 패키지 구조 개선 Dec 21, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

👨🏻‍💻backend 백엔드 작업 🧹cleanup 기능 변경 없이 코드만 깔끔하게 수정 🪄refactor 리팩토링

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[REFACTOR] 관리자 패키지 구조 개선

3 participants