Skip to content

Conversation

@Gyuhyeok99
Copy link
Contributor

관련 이슈

작업 내용

대학 관련 통합 테스트 데이터 정의 구조 개선에서 이야기 나온

제가 제안드린 방법이 괜찮으시면, 우선 이 PR에서 region.fixture, country.fixture 패키지를 구성하고,
이후에 프로덕션 코드 패키지를 별도 PR로 정리해보면 어떨까요?

를 반영했습니다.

특이 사항

리뷰 요구사항 (선택)

country와 region을 같은 패키지에 넣어 응집도를 높이는게 낫지 않을까요?
community 처럼 대분류를 만들고 내에 각각 패키지를 만들 수도 있겠네요!

  1. 위백님께서 이런 의견을 주셨는데 어떻게 생각하시나요?

  2. BaseEntity는 지금 entity - common에 있는데 그대로 납둬도 괜찮을까요?

@coderabbitai
Copy link

coderabbitai bot commented May 12, 2025

"""

Walkthrough

  1. 패키지 및 import 경로 정리
     - Country, Region, InterestedCountry, InterestedRegion 등의 핵심 도메인 클래스와 관련된 Repository들의 import 경로가 location.country, location.region 등으로 세분화되어 일괄 변경되었습니다.
  2. 네이밍 일관성 수정
     - 오타로 존재하던 InterestedCountyRepository가 InterestedCountryRepository로 일괄 수정되었으며, 관련 필드명, 생성자 파라미터, 슈퍼클래스 호출 부분도 동일하게 정정되었습니다.
  3. 패키지 선언 변경
     - Country, Region, InterestedCountry, InterestedRegion 등 주요 도메인 클래스와 Repository, Fixture, Test 클래스의 패키지 선언이 기존 entity, repositories, country.fixture, region.fixture 등에서 location.country, location.region 하위 구조로 이동되었습니다.
  4. 테스트 코드 import 및 패키지 경로 변경
     - 테스트 코드 내에서도 Country, Region, Fixture, Repository 등 관련 클래스들의 import 경로와 패키지 선언이 새로운 location 기반 구조에 맞게 변경되었습니다.
  5. 공개 엔티티 선언에는 영향 없음
     - public 클래스, 메서드, 인터페이스의 시그니처에는 변경이 없으며, 내부 네이밍 및 경로 정리에 한정된 수정입니다.

Suggested reviewers

  • wibaek
  • nayonsoso
    """

Tip

⚡️ Faster reviews with caching
  • CodeRabbit now supports caching for code and dependencies, helping speed up reviews. This means quicker feedback, reduced wait times, and a smoother review experience overall. Cached data is encrypted and stored securely. This feature will be automatically enabled for all accounts on May 16th. To opt out, configure Review - Disable Cache at either the organization or repository level. If you prefer to disable all data retention across your organization, simply turn off the Data Retention setting under your Organization Settings.

Enjoy the performance boost—your workflow just got faster.


📜 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 15b11a6 and 2da4c99.

📒 Files selected for processing (1)
  • src/main/java/com/example/solidconnection/university/repository/custom/UniversityFilterRepositoryImpl.java (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • src/main/java/com/example/solidconnection/university/repository/custom/UniversityFilterRepositoryImpl.java
⏰ Context from checks skipped due to timeout of 90000ms (1)
  • GitHub Check: build
✨ Finishing Touches
  • 📝 Generate Docstrings

🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

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: 1

🧹 Nitpick comments (2)
src/test/java/com/example/solidconnection/university/fixture/UniversityFixtureBuilder.java (1)

3-4: 1. 피처 빌더 임포트 경로 업데이트
- CountryRegion 임포트 경로를 새로운 도메인 패키지로 적절히 수정했습니다.

2. BaseEntity 패키지 위치 고려
- BaseEntity가 현재 entity-common 패키지에 남아있는 것이 적절한지 검토해주세요.

src/main/java/com/example/solidconnection/country/domain/Country.java (1)

1-3: 1. 패키지 선언 및 도메인 구조 반영
- package 선언을 country.domain으로 변경해 도메인 계층을 명확히 분리했습니다.
- Region 임포트를 추가해 연관 관계 설정을 최신 구조에 맞게 업데이트했습니다.

2. 상위 패키지 설계 제안
- region.domaincountry.domain을 하나의 상위 패키지(예: community) 아래에 묶어 응집도를 높이는 방안도 고려해보세요.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 5f1474a and 951b407.

📒 Files selected for processing (21)
  • src/main/java/com/example/solidconnection/auth/service/EmailSignUpService.java (2 hunks)
  • src/main/java/com/example/solidconnection/auth/service/SignUpService.java (3 hunks)
  • src/main/java/com/example/solidconnection/auth/service/oauth/OAuthSignUpService.java (2 hunks)
  • src/main/java/com/example/solidconnection/country/domain/Country.java (1 hunks)
  • src/main/java/com/example/solidconnection/country/domain/InterestedCountry.java (1 hunks)
  • src/main/java/com/example/solidconnection/country/repository/CountryRepository.java (1 hunks)
  • src/main/java/com/example/solidconnection/country/repository/InterestedCountryRepository.java (1 hunks)
  • src/main/java/com/example/solidconnection/region/domain/InterestedRegion.java (1 hunks)
  • src/main/java/com/example/solidconnection/region/domain/Region.java (1 hunks)
  • src/main/java/com/example/solidconnection/region/repository/InterestedRegionRepository.java (1 hunks)
  • src/main/java/com/example/solidconnection/region/repository/RegionRepository.java (1 hunks)
  • src/main/java/com/example/solidconnection/university/domain/University.java (1 hunks)
  • src/test/java/com/example/solidconnection/country/fixture/CountryFixture.java (1 hunks)
  • src/test/java/com/example/solidconnection/country/fixture/CountryFixtureBuilder.java (1 hunks)
  • src/test/java/com/example/solidconnection/country/repository/CountryRepositoryForTest.java (1 hunks)
  • src/test/java/com/example/solidconnection/region/fixture/RegionFixture.java (1 hunks)
  • src/test/java/com/example/solidconnection/region/fixture/RegionFixtureBuilder.java (1 hunks)
  • src/test/java/com/example/solidconnection/region/repository/RegionRepositoryForTest.java (1 hunks)
  • src/test/java/com/example/solidconnection/support/integration/BaseIntegrationTest.java (1 hunks)
  • src/test/java/com/example/solidconnection/university/fixture/UniversityFixtureBuilder.java (1 hunks)
  • src/test/java/com/example/solidconnection/university/service/UniversityRecommendServiceTest.java (4 hunks)
🔇 Additional comments (29)
src/main/java/com/example/solidconnection/region/domain/InterestedRegion.java (1)

1-1: 1. 패키지 경로 리팩토링 완료
리팩토링을 통해 com.example.solidconnection.entity에서 region.domain으로 이동해 도메인별 응집도를 높였습니다.
2. 내부 로직 검증
클래스 내부의 JPA 어노테이션(@Entity, @Id, @ManyToOne)과 생성자는 변경 없이 올바르게 유지되었습니다.
3. 향후 고려사항
BaseEntityentity-common 패키지에 유지하는 것은 공통 속성 관리를 위해 적절하나, 도메인별 공통 기능이 확장되면 별도 공통 도메인 패키지로 분리하는 것도 검토해 보세요.

src/main/java/com/example/solidconnection/country/domain/InterestedCountry.java (1)

1-1: 1. 패키지 이사 대성공!
- InterestedCountrycom.example.solidconnection.entity에서 com.example.solidconnection.country.domain으로 무사히 이동했습니다.

src/test/java/com/example/solidconnection/region/fixture/RegionFixture.java (1)

3-3: 1. 테스트 픽스처 임포트 이주!
- Region 클래스의 경로가 entity에서 region.domain으로 깔끔하게 반영되었습니다.

src/test/java/com/example/solidconnection/country/fixture/CountryFixture.java (1)

3-3: 1. Country 픽스처 임포트 정비!
- Country의 패키지 경로가 entity에서 country.domain으로 일관성 있게 업데이트되었습니다.

src/test/java/com/example/solidconnection/region/fixture/RegionFixtureBuilder.java (1)

3-3: 1. 빌더 임포트 이주 완료!
- Region 클래스의 레퍼런스가 entity에서 region.domain으로 올바르게 이동되었습니다.

src/main/java/com/example/solidconnection/region/domain/Region.java (1)

1-1: 1. 메인 도메인 패키지 이동!
- Region 클래스가 com.example.solidconnection.entity에서 com.example.solidconnection.region.domain으로 성공적으로 자리 잡았습니다.

src/test/java/com/example/solidconnection/region/repository/RegionRepositoryForTest.java (1)

3-3: 1. 도메인 패키지 임포트 일관화
- Region 클래스 임포트 경로를 com.example.solidconnection.region.domain으로 업데이트해 구조 일관성을 유지했습니다.

src/test/java/com/example/solidconnection/country/fixture/CountryFixtureBuilder.java (1)

3-4: 1. 피처 빌더 임포트 일관성
- CountryRegion 임포트 경로를 새로운 도메인 패키지로 동기화했습니다.

src/main/java/com/example/solidconnection/country/repository/CountryRepository.java (2)

1-1: 패키지 구조 개선 👍

도메인 기준으로 패키지 구조를 변경한 것은 좋은 리팩토링입니다. 이전의 일반적인 repositories 패키지에서 더 구체적인 country.repository로 변경함으로써 코드의 응집도가 향상되었습니다.

  1. 변경 사항:
    • com.example.solidconnection.repositoriescom.example.solidconnection.country.repository로 패키지 변경

3-3: 임포트 경로 정상 업데이트 확인

도메인 패키지 구조 변경에 맞게 엔티티 임포트 경로도 정확히 업데이트되었습니다.

  1. 변경 사항:
    • com.example.solidconnection.entity.Countrycom.example.solidconnection.country.domain.Country로 임포트 경로 변경
src/main/java/com/example/solidconnection/university/domain/University.java (1)

3-4: 임포트 경로 정상 업데이트 확인

University 클래스에서 참조하는 Country와 Region 클래스의 패키지 경로가 새 도메인 구조에 맞게 잘 업데이트되었습니다.

  1. 변경 사항:
    • com.example.solidconnection.entity.Countrycom.example.solidconnection.country.domain.Country
    • com.example.solidconnection.entity.Regioncom.example.solidconnection.region.domain.Region
src/main/java/com/example/solidconnection/region/repository/InterestedRegionRepository.java (2)

1-1: 패키지 구조 개선 👍

Region 관련 리포지토리를 도메인 기준 패키지로 이동한 것은 좋은 리팩토링입니다. 이를 통해 코드의 구조적 명확성과 응집도가 향상되었습니다.

  1. 변경 사항:
    • com.example.solidconnection.repositoriescom.example.solidconnection.region.repository로 패키지 변경

3-3: 임포트 경로 정상 업데이트 확인

패키지 구조 변경에 맞게 엔티티 임포트 경로도 정확히 업데이트되었습니다.

  1. 변경 사항:
    • com.example.solidconnection.entity.InterestedRegioncom.example.solidconnection.region.domain.InterestedRegion로 임포트 경로 변경
src/main/java/com/example/solidconnection/region/repository/RegionRepository.java (2)

1-1: 패키지 구조 개선 👍

Region 관련 리포지토리를 도메인 기준 패키지로 이동한 것은 좋은 리팩토링입니다. 이를 통해 코드의 구조적 명확성과 응집도가 향상되었습니다.

  1. 변경 사항:
    • com.example.solidconnection.repositoriescom.example.solidconnection.region.repository로 패키지 변경

3-3: 임포트 경로 정상 업데이트 확인

패키지 구조 변경에 맞게 엔티티 임포트 경로도 정확히 업데이트되었습니다.

  1. 변경 사항:
    • com.example.solidconnection.entity.Regioncom.example.solidconnection.region.domain.Region로 임포트 경로 변경
src/test/java/com/example/solidconnection/university/service/UniversityRecommendServiceTest.java (4)

3-6: 임포트 경로 정상 업데이트 및 오타 수정 👍

도메인 기준 패키지 구조 변경에 맞게 임포트 경로가 잘 업데이트되었으며, InterestedCounty에서 InterestedCountry로 오타도 수정되었습니다.

  1. 변경 사항:
    • 임포트 경로 업데이트:
      • InterestedCountry, InterestedRegion, InterestedCountryRepository, InterestedRegionRepository 모두 새 패키지 경로로 변경
    • 이름 오타 수정:
      • InterestedCountyInterestedCountry로 수정

37-37: 변수명 오타 수정 확인

리포지토리 변수명이 패키지 및 클래스명 변경에 맞게 정확히 수정되었습니다.

  1. 변경 사항:
    • interestedCountyRepositoryinterestedCountryRepository로 변수명 수정

71-71: 클래스명 오타 수정 확인

Country/County 오타가 수정된 클래스명으로 올바르게 사용되고 있습니다.

  1. 변경 사항:
    • new InterestedCountynew InterestedCountry로 생성자 호출 수정

90-90: 클래스명 오타 수정 확인

Country/County 오타가 수정된 클래스명으로 올바르게 사용되고 있습니다.

  1. 변경 사항:
    • new InterestedCountynew InterestedCountry로 생성자 호출 수정
src/main/java/com/example/solidconnection/auth/service/oauth/OAuthSignUpService.java (2)

7-10: 1. 패키지 리팩토링에 따른 임포트 경로 업데이트
임포트 경로가 country.repositoryregion.repository로 올바르게 변경되어 새로운 도메인 기준 패키지 구조를 충실히 반영하고 있습니다.


25-28: 2. 생성자 시그니처 및 슈퍼 호출 인자 일치
생성자 파라미터와 super(...) 호출 인자가 countryRepositoryinterestedCountryRepository를 정확히 포함하여 일관성을 유지하고 있습니다.

src/test/java/com/example/solidconnection/support/integration/BaseIntegrationTest.java (1)

9-16: 1. 통합 테스트 인프라의 패키지 임포트 업데이트
CountryRegion 도메인 클래스와 해당 리포지토리 임포트가 country.domain, region.domain, country.repository, region.repository로 올바르게 변경되었습니다. 테스트 설정과 일관성을 유지합니다.

src/main/java/com/example/solidconnection/auth/service/EmailSignUpService.java (2)

5-8: 1. 패키지 리팩토링에 따른 임포트 경로 업데이트
임포트 경로가 country.repositoryregion.repository로 정확히 반영되어 있으며, 기존 InterestedCountyRepository 오타가 InterestedCountryRepository로 일관되게 수정되었습니다.


23-25: 2. 생성자 및 슈퍼 호출 인자 조정
생성자 파라미터 리스트와 super(...) 호출이 새롭게 정리된 리포지토리 인스턴스를 정확히 전달하여 상위 클래스와 일관된 동작을 보장합니다.

src/main/java/com/example/solidconnection/country/repository/InterestedCountryRepository.java (2)

1-4: 1. 패키지 위치 및 엔티티 임포트 경로 수정
인터페이스 패키지가 country.repository로 이동되었으며, InterestedCountry 엔티티 임포트가 country.domain으로 변경되어 도메인 기준 구조를 충실히 반영하고 있습니다.


11-11: 2. 인터페이스 명칭 및 상속 구조 검증
인터페이스명이 InterestedCountyRepository에서 InterestedCountryRepository로 변경되어 오타가 제거되었고, JpaRepository<InterestedCountry, Long>를 올바르게 상속하고 있습니다.

src/main/java/com/example/solidconnection/auth/service/SignUpService.java (3)

6-11: 1. 패키지 리팩토링에 따른 임포트 경로 업데이트
InterestedCountry, InterestedRegion 도메인과 관련 레포지토리 임포트 경로가 새 도메인 기준 패키지(country.domain, region.domain, country.repository, region.repository)로 일관되게 변경되었습니다.


34-45: 2. 필드 선언 및 생성자 파라미터 정렬
interestedCountryRepository 필드 선언과 생성자 파라미터, 필드 할당(this.interestedCountryRepository = interestedCountryRepository)이 일치하며, 오타가 완전히 제거되어 가독성과 일관성이 개선되었습니다.


84-84: 3. 관심 국가 저장 로직 연동 확인
saveInterestedCountry 메서드에서 변경된 interestedCountryRepository.saveAll(...) 호출이 새로운 리포지토리를 정확히 사용하도록 반영되어 있습니다.

package com.example.solidconnection.country.repository;

import com.example.solidconnection.entity.Country;
import com.example.solidconnection.country.domain.Country;
Copy link

Choose a reason for hiding this comment

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

💡 Verification agent

🧩 Analysis chain

1. 도메인 패키지 임포트 일관화
- Country 클래스 임포트 경로를 com.example.solidconnection.country.domain으로 수정해 도메인 기준 구조와 일치시켰습니다.

2. 잔여 레거시 인포트 확인 요청
- 프로젝트 전반에 com.example.solidconnection.entity 패키지 참조가 남아있는지 검색해주세요.


🏁 Script executed:

#!/bin/bash
# 레거시 엔티티 패키지 참조 검색
rg "import com\.example\.solidconnection\.entity"

Length of output: 1038


🚨 잔여 레거시 엔티티 패키지 임포트 수정 요청

  1. 도메인 패키지 임포트 일관화가 com.example.solidconnection.country.domain으로 정상 적용된 것을 확인했습니다.
  2. 아직 아래 파일들에서 com.example.solidconnection.entity 패키지를 참조하고 있습니다. 도메인 기준 구조에 맞춰 임포트를 수정해 주세요:
    • src/main/java/com/example/solidconnection/news/domain/News.java
    • src/main/java/com/example/solidconnection/university/repository/custom/UniversityFilterRepositoryImpl.java
    • src/main/java/com/example/solidconnection/score/domain/GpaScore.java
    • src/main/java/com/example/solidconnection/community/comment/domain/Comment.java
    • src/main/java/com/example/solidconnection/score/domain/LanguageTestScore.java
    • src/main/java/com/example/solidconnection/community/post/domain/Post.java

예시)

-import com.example.solidconnection.entity.common.BaseEntity;
+import com.example.solidconnection.common.BaseEntity;

Committable suggestion skipped: line range outside the PR's diff.

@Gyuhyeok99 Gyuhyeok99 closed this May 12, 2025
@Gyuhyeok99 Gyuhyeok99 deleted the refactor/314-entity-domain-separation branch May 12, 2025 16:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

refactor: entity 패키지를 도메인 기준으로 변경

1 participant