Skip to content

Conversation

@023-dev
Copy link
Member

@023-dev 023-dev commented Jan 6, 2026

#️⃣연관된 이슈

close #407

📝 작업 내용

기존 summary 데이터를 tag로 migraition하고, summary에 ministudy에 대한 description 정보를 저장합니다.

  • 미니 스터디 엔티티에 tag 필드를 추가
  • DB Migration tag 필드 추가 (VARCHAR(255), NOT NULL)
  • QueryDSL 조회 쿼리에 tag 필드 포함하도록 수정
  • 미니 스터디 조회 테스트에 tag 필드 검증 로직 추가
  • 테스트 데이터 생성 시 tag 필드 포함

@023-dev 023-dev self-assigned this Jan 6, 2026
@023-dev 023-dev added ✨feature 구현, 개선 사항 관련 부분 👨🏻‍💻backend 백엔드 작업 labels Jan 6, 2026
@023-dev 023-dev linked an issue Jan 6, 2026 that may be closed by this pull request
@coderabbitai
Copy link

coderabbitai bot commented Jan 6, 2026

Walkthrough

MiniStudy 엔티티에 새로운 tag 필드를 추가하고, 이를 데이터베이스 스키마, 응답 DTO, 저장소 쿼리 프로젝션, 그리고 테스트에 반영했습니다. 데이터 계층부터 표현 계층까지 일관되게 적용되었습니다.

Changes

응집군 / 파일(들) 변경 요약
엔티티 및 DTO
src/main/java/org/ject/support/domain/ministudy/entity/MiniStudy.java, src/main/java/org/ject/support/domain/ministudy/dto/MiniStudyResponse.java
MiniStudy 엔티티에 @Column(nullable = false) 주석이 있는 tag 필드 추가; MiniStudyResponse 레코드에 tag 필드 추가하여 공개 생성자 시그니처 변경
저장소 쿼리
src/main/java/org/ject/support/domain/ministudy/repository/MiniStudyQueryRepositoryImpl.java
findMiniStudies 메서드의 QMiniStudyResponse 생성자 호출에 miniStudy.tag 추가; 반환되는 MiniStudyResponse의 필드 확장
데이터베이스 마이그레이션
src/main/resources/db/migration/V14__add_tag_column_to_mini_study.sql
mini_study 테이블에 새로운 tag 컬럼(VARCHAR(255), NOT NULL, 기본값 빈 문자열) 추가
테스트
src/test/java/org/ject/support/domain/ministudy/repository/MiniStudyQueryRepositoryTest.java
테스트 엔티티 생성 시 tag("test-tag") 포함; 첫 번째 응답의 tag 값 검증 추가

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Poem

🐰 새로운 tag 필드가 쌩큼 도착했어,
엔티티부터 DTO까지 모두 맞추었네!
데이터베이스도 열심히 따라가고,
테스트도 꼼꼼히 검증하니,
미니스터디가 더 멋져졌어! ✨

Pre-merge checks and finishing touches

❌ Failed checks (1 warning, 1 inconclusive)
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.
Title check ❓ Inconclusive PR 제목은 '관리자 지원서 조회 API에 기수 파라미터 추가'이지만, 실제 변경사항은 미니 스터디 엔티티에 tag 필드를 추가하는 것으로 다른 내용을 설명하고 있습니다. PR 제목을 실제 변경사항에 맞게 수정하세요. 예: 'feat: 미니 스터디 엔티티에 tag 필드 추가' 또는 'feat: 미니 스터디 설명 필드 추가'
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Linked Issues check ✅ Passed PR의 모든 변경사항이 연관 이슈 #407의 목적과 일치합니다. 미니 스터디 엔티티에 설명 필드(tag)를 추가하고, DB 마이그레이션, QueryDSL 쿼리, 테스트를 모두 적절히 구현했습니다.
Out of Scope Changes check ✅ Passed 모든 변경사항이 이슈 #407의 범위 내에 있습니다. 미니 스터디 tag 필드 추가와 관련된 엔티티, DTO, 리포지토리, 마이그레이션, 테스트 변경만 포함되어 있습니다.
✨ Finishing touches
  • 📝 Generate docstrings

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.

@023-dev 023-dev changed the title feat: 관리자 지원서 조회 API에 기수 파라미터 추가 feat: 미니 스터디 설명 필드 추가 Jan 6, 2026
@github-actions
Copy link

github-actions bot commented Jan 6, 2026

Test Results

250 tests  ±0   250 ✅ ±0   10s ⏱️ ±0s
 55 suites ±0     0 💤 ±0 
 55 files   ±0     0 ❌ ±0 

Results for commit 8ba8e71. ± Comparison against base commit 9a2de7a.

@github-actions
Copy link

github-actions bot commented Jan 6, 2026

📊테스트 커버리지

Overall Project 79.63% 🍏
File Coverage
MiniStudyQueryRepositoryImpl.java 100% 🍏

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

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
src/main/java/org/ject/support/domain/ministudy/dto/MiniStudyResponse.java (1)

1-12: PR 제목과 실제 변경 내용의 불일치를 확인하세요.

PR 제목은 "관리자 지원서 조회 API에 기수 파라미터 추가"이지만, 실제로는 MiniStudy 엔티티에 tag 필드를 추가하고 있습니다. 이는 다음 중 하나를 의미할 수 있습니다:

  • PR 제목이 잘못 작성됨
  • 잘못된 브랜치에서 작업
  • Issue #407과의 연결이 잘못됨

PR 제목을 "feat: 미니 스터디 엔티티에 tag 필드 추가"와 같이 실제 변경 내용과 일치하도록 수정하세요.

🧹 Nitpick comments (3)
src/main/java/org/ject/support/domain/ministudy/entity/MiniStudy.java (2)

26-27: 빈 문자열 방지를 위한 유효성 검증 추가를 고려하세요.

@Column(nullable = false)는 NULL을 방지하지만 빈 문자열("")은 허용됩니다. tag 필드에 의미 있는 값이 필수라면 @NotBlank 어노테이션 추가를 권장합니다.

🔎 제안하는 개선사항
+import jakarta.validation.constraints.NotBlank;
+
 @Entity
 @Builder
 @AllArgsConstructor(access = AccessLevel.PRIVATE)
 @NoArgsConstructor(access = AccessLevel.PROTECTED)
 public class MiniStudy extends BaseTimeEntity {
 
     // ... 기존 필드들 ...
     
+    @NotBlank
     @Column(nullable = false)
     private String tag;

26-27: tag 필드의 용도에 대한 문서화를 추가하세요.

tag 필드가 어떤 정보를 담는지, 어떤 형식이나 값이 예상되는지 Javadoc 또는 주석으로 명시하면 코드 가독성과 유지보수성이 향상됩니다.

🔎 제안하는 개선사항
     @Column(nullable = false)
     private String summary;
 
+    /**
+     * 미니 스터디를 분류하거나 설명하는 태그
+     * 예: "백엔드", "프론트엔드", "알고리즘" 등
+     */
     @Column(nullable = false)
     private String tag;
src/test/java/org/ject/support/domain/ministudy/repository/MiniStudyQueryRepositoryTest.java (1)

59-68: 다양한 tag 값에 대한 테스트 케이스 추가를 고려하세요.

현재 모든 테스트 데이터가 동일한 "test-tag" 값을 사용합니다. 서로 다른 tag 값, 특수문자, 긴 문자열 등 다양한 케이스를 테스트하면 더욱 견고한 검증이 가능합니다.

🔎 제안하는 개선 예시
     void findMiniStudies() {
         // given
-        MiniStudy miniStudy1 = createMiniStudy("미니 스터디 1");
-        MiniStudy miniStudy2 = createMiniStudy("미니 스터디 2");
-        MiniStudy miniStudy3 = createMiniStudy("미니 스터디 3");
+        MiniStudy miniStudy1 = createMiniStudy("미니 스터디 1", "백엔드");
+        MiniStudy miniStudy2 = createMiniStudy("미니 스터디 2", "프론트엔드");
+        MiniStudy miniStudy3 = createMiniStudy("미니 스터디 3", "알고리즘");
         miniStudyRepository.saveAll(List.of(miniStudy1, miniStudy2, miniStudy3));
 
         // when
@@ -46,7 +46,7 @@
         MiniStudyResponse firstResponse = responses.get(0);
         assertThat(firstResponse.id()).isNotNull();
         assertThat(firstResponse.name()).isEqualTo("미니 스터디 3");
         assertThat(firstResponse.summary()).isEqualTo("summary");
-        assertThat(firstResponse.tag()).isEqualTo("test-tag");
+        assertThat(firstResponse.tag()).isEqualTo("알고리즘");
         
-    private MiniStudy createMiniStudy(String name) {
+    private MiniStudy createMiniStudy(String name, String tag) {
         String urlSafeName = name.replaceAll("[미니 스터디]", "");
         return MiniStudy.builder()
                 .name(name)
                 .summary("summary")
-                .tag("test-tag")
+                .tag(tag)
                 .linkUrl("https://test.net/ministudy" + urlSafeName)
                 .imageUrl("https://test.net/image" + urlSafeName + ".png")
                 .build();
     }
📜 Review details

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 9a2de7a and 8ba8e71.

📒 Files selected for processing (5)
  • src/main/java/org/ject/support/domain/ministudy/dto/MiniStudyResponse.java
  • src/main/java/org/ject/support/domain/ministudy/entity/MiniStudy.java
  • src/main/java/org/ject/support/domain/ministudy/repository/MiniStudyQueryRepositoryImpl.java
  • src/main/resources/db/migration/V14__add_tag_column_to_mini_study.sql
  • src/test/java/org/ject/support/domain/ministudy/repository/MiniStudyQueryRepositoryTest.java
⏰ 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 (4)
src/test/java/org/ject/support/domain/ministudy/repository/MiniStudyQueryRepositoryTest.java (1)

50-50: 테스트 커버리지가 확장되었습니다.

tag 필드에 대한 assertion이 추가되어 새로운 필드가 올바르게 조회되는지 검증합니다.

src/main/java/org/ject/support/domain/ministudy/dto/MiniStudyResponse.java (1)

7-7: DTO에 tag 필드가 올바르게 추가되었습니다.

레코드 시그니처가 새로운 tag 필드를 포함하도록 확장되어 엔티티와 리포지토리 변경사항과 일관성을 유지합니다.

src/main/java/org/ject/support/domain/ministudy/repository/MiniStudyQueryRepositoryImpl.java (1)

26-33: QueryDSL 어노테이션 프로세서가 자동으로 Q클래스를 생성합니다.

MiniStudyResponse 레코드에 @QueryProjection 어노테이션이 있고 레코드 서명에 tag 필드가 포함되어 있으므로, 컴파일 시 QueryDSL 어노테이션 프로세서가 자동으로 6개 파라미터(id, name, linkUrl, imageUrl, summary, tag)를 가진 QMiniStudyResponse 클래스를 생성합니다. 코드 변경은 완전하고 정확합니다.

src/main/resources/db/migration/V14__add_tag_column_to_mini_study.sql (1)

1-2: 기존 레코드의 tag 컬럼 기본값 처리 확인 필요

이 마이그레이션이 실행될 때 이미 존재하는 mini_study 레코드들에 모두 빈 문자열('')이 tag 값으로 설정됩니다. 테스트 코드에서는 tag("test-tag")와 같이 실제 tag 값을 사용하므로, 빈 문자열 기본값이 의도된 동작인지 확인하고, 필요하면 마이그레이션 후 기존 데이터에 적절한 tag 값을 설정하는 추가 처리를 검토해야 합니다.

@023-dev 023-dev requested a review from fivedragon5 January 6, 2026 15:55
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 023-dev merged commit 810aef9 into dev Jan 6, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

👨🏻‍💻backend 백엔드 작업 ✨feature 구현, 개선 사항 관련 부분

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[FEAT] 미니 스터디 설명 필드 추가

3 participants