-
Notifications
You must be signed in to change notification settings - Fork 4
feat: 미니 스터디 설명 필드 추가 #408
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
WalkthroughMiniStudy 엔티티에 새로운 Changes
Estimated code review effort🎯 2 (Simple) | ⏱️ ~10 minutes Poem
Pre-merge checks and finishing touches❌ Failed checks (1 warning, 1 inconclusive)
✅ Passed checks (3 passed)
✨ Finishing touches
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. Comment |
📊테스트 커버리지
|
There was a problem hiding this 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
📒 Files selected for processing (5)
src/main/java/org/ject/support/domain/ministudy/dto/MiniStudyResponse.javasrc/main/java/org/ject/support/domain/ministudy/entity/MiniStudy.javasrc/main/java/org/ject/support/domain/ministudy/repository/MiniStudyQueryRepositoryImpl.javasrc/main/resources/db/migration/V14__add_tag_column_to_mini_study.sqlsrc/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 값을 설정하는 추가 처리를 검토해야 합니다.
fivedragon5
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
고생하셨습니다.
#️⃣연관된 이슈
close #407
📝 작업 내용
기존 summary 데이터를 tag로 migraition하고, summary에 ministudy에 대한 description 정보를 저장합니다.