Skip to content

version 2.16.1#328

Merged
rlagkswn00 merged 2 commits intomainfrom
develop
Dec 19, 2025
Merged

version 2.16.1#328
rlagkswn00 merged 2 commits intomainfrom
develop

Conversation

@rlagkswn00
Copy link
Member

@rlagkswn00 rlagkswn00 commented Dec 18, 2025

version 2.16.1

Summary by CodeRabbit

릴리즈 노트

  • 새로운 기능

    • 댓글 삭제 시 해당 댓글에 달린 하위 댓글도 함께 삭제되도록 개선
    • 3개의 새로운 학과 추가: 기계로봇자동차, 신소재, 항공모빌리티
  • 개선 사항

    • 삭제된 댓글의 데이터 일관성 개선
  • 테스트

    • 학과 목록 및 댓글 삭제 관련 테스트 업데이트

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

jiyun921 and others added 2 commits October 31, 2025 13:58
* [feat]: 기계로봇자동차공학부, 재료공학과, 항공우주모빌리티공학과 추가

* [refactor]: 학과 목록 개수 수정
* feat: CommentCommandPort 부모 댓글의 답글 삭제 메서드 추가

* feat: CommentQueryRepository 부모 댓글의 답급 소프트 삭제 쿼리 추가

* feat: NoticeCommandService 댓글 삭제 시 답급도 같이 삭제하도록 수정

* feat: 댓글 삭제 정책에 맞게 데이터 정합성 유지를 위한 Flyway 쿼리 추가

* test: 댓글 삭제 시 답글 삭제하는 인수 테스트 추가

* test : 댓글 개수 테스트 로직 수정

* test : 소나큐브 이슈 대응(isZero 사용)
@coderabbitai
Copy link

coderabbitai bot commented Dec 18, 2025

Walkthrough

댓글 부모-자식 계층 구조에서 계단식 삭제를 구현하고, 기존 부서 목록에 세 개의 새로운 공학 부서(기계로봇자동차, 재료, 항공모빌리티)를 추가하며, 해당 부서의 스크래핑 핸들러를 작성합니다.

Changes

Cohort / File(s) Summary
댓글 계단식 삭제 기능
src/main/java/com/kustacks/kuring/notice/application/port/out/CommentCommandPort.java, src/main/java/com/kustacks/kuring/notice/adapter/out/persistence/CommentPersistenceAdapter.java, src/main/java/com/kustacks/kuring/notice/adapter/out/persistence/CommentQueryRepository.java, src/main/java/com/kustacks/kuring/notice/adapter/out/persistence/CommentQueryRepositoryImpl.java, src/main/java/com/kustacks/kuring/notice/application/service/NoticeCommandService.java
부모 댓글 ID로 자식 댓글을 삭제하는 deleteByParentId 메서드를 커맨드 포트, 어댑터, 쿼리 리포지토리에 추가하고, 부모 댓글 삭제 시 자동으로 자식 댓글들을 삭제하는 계단식 삭제 로직 구현
새로운 부서 추가
src/main/java/com/kustacks/kuring/notice/domain/DepartmentName.java, src/main/java/com/kustacks/kuring/worker/scrap/deptinfo/engineering/MechaRobotAutoDept.java, src/main/java/com/kustacks/kuring/worker/scrap/deptinfo/engineering/MaterialDept.java, src/main/java/com/kustacks/kuring/worker/scrap/deptinfo/engineering/AeroMobilityDept.java
DepartmentName 열거형에 MECHA_ROBOT_AUTO, MATERIAL, AERO_MOBILITY 상수 추가 및 각 부서별 스크래핑 클래스 구현
데이터베이스 마이그레이션
src/main/resources/db/migration/V251108__Update_comment_destroyedAt_as_parent_destroyedAt.sql
부모 댓글이 소프트 삭제될 때 자식 댓글의 destroyed_at을 부모와 동기화하는 마이그레이션
테스트 업데이트
src/test/java/com/kustacks/kuring/acceptance/CategoryAcceptanceTest.java, src/test/java/com/kustacks/kuring/acceptance/NoticeAcceptanceTest.java
부서 목록 조회 기대값을 63에서 66으로 수정하고, 부모 댓글 계단식 삭제 동작을 검증하는 새로운 수용 테스트 추가

Possibly related PRs

  • Fix: 댓글 개수 표시 오류 수정 #327: 동일한 댓글 계단식 삭제 플로우를 수정하며, deleteByParentId 메서드를 커맨드 포트, 어댑터, 리포지토리에 걸쳐 추가하고 NoticeCommandService에서 계단식 삭제를 구현하는 직접적인 관련 PR

Suggested labels

⭐ Feat

Poem

🐰 부모가 떠나면 자식도 함께,
계단식 삭제로 넘실대네!
세 부서도 새로 맞이하며,
깔끔한 데이터 정원을 가꾼다네~
토끼도 기뻐, 캐롓을 씹네! 🥕

Pre-merge checks and finishing touches

❌ Failed checks (2 warnings)
Check name Status Explanation Resolution
Title check ⚠️ Warning Pull request 제목 'version 2.16.1'은 버전 번호만 나타내며, 변경 사항의 실제 내용(댓글 계단식 삭제, 부서 추가 등)을 설명하지 못하고 있습니다. 제목을 '댓글 계단식 삭제 및 부서 정보 추가' 또는 '댓글 삭제 시 자식 댓글 자동 삭제 기능 추가' 등으로 변경하여 실제 기능 변경 사항을 명확히 반영해야 합니다.
Docstring Coverage ⚠️ Warning Docstring coverage is 18.18% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
✅ Passed checks (1 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
✨ 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 develop

📜 Recent review details

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 56a8fd4 and 766b16c.

📒 Files selected for processing (12)
  • src/main/java/com/kustacks/kuring/notice/adapter/out/persistence/CommentPersistenceAdapter.java (1 hunks)
  • src/main/java/com/kustacks/kuring/notice/adapter/out/persistence/CommentQueryRepository.java (1 hunks)
  • src/main/java/com/kustacks/kuring/notice/adapter/out/persistence/CommentQueryRepositoryImpl.java (2 hunks)
  • src/main/java/com/kustacks/kuring/notice/application/port/out/CommentCommandPort.java (1 hunks)
  • src/main/java/com/kustacks/kuring/notice/application/service/NoticeCommandService.java (1 hunks)
  • src/main/java/com/kustacks/kuring/notice/domain/DepartmentName.java (1 hunks)
  • src/main/java/com/kustacks/kuring/worker/scrap/deptinfo/engineering/AeroMobilityDept.java (1 hunks)
  • src/main/java/com/kustacks/kuring/worker/scrap/deptinfo/engineering/MaterialDept.java (1 hunks)
  • src/main/java/com/kustacks/kuring/worker/scrap/deptinfo/engineering/MechaRobotAutoDept.java (1 hunks)
  • src/main/resources/db/migration/V251108__Update_comment_destroyedAt_as_parent_destroyedAt.sql (1 hunks)
  • src/test/java/com/kustacks/kuring/acceptance/CategoryAcceptanceTest.java (1 hunks)
  • src/test/java/com/kustacks/kuring/acceptance/NoticeAcceptanceTest.java (2 hunks)
🧰 Additional context used
🧬 Code graph analysis (3)
src/main/java/com/kustacks/kuring/worker/scrap/deptinfo/engineering/MaterialDept.java (2)
src/main/java/com/kustacks/kuring/worker/scrap/deptinfo/engineering/AeroMobilityDept.java (1)
  • RegisterDepartmentMap (15-36)
src/main/java/com/kustacks/kuring/worker/scrap/deptinfo/engineering/MechaRobotAutoDept.java (1)
  • RegisterDepartmentMap (15-36)
src/main/java/com/kustacks/kuring/worker/scrap/deptinfo/engineering/AeroMobilityDept.java (2)
src/main/java/com/kustacks/kuring/worker/scrap/deptinfo/engineering/MaterialDept.java (1)
  • RegisterDepartmentMap (15-36)
src/main/java/com/kustacks/kuring/worker/scrap/deptinfo/engineering/MechaRobotAutoDept.java (1)
  • RegisterDepartmentMap (15-36)
src/main/java/com/kustacks/kuring/worker/scrap/deptinfo/engineering/MechaRobotAutoDept.java (2)
src/main/java/com/kustacks/kuring/worker/scrap/deptinfo/engineering/AeroMobilityDept.java (1)
  • RegisterDepartmentMap (15-36)
src/main/java/com/kustacks/kuring/worker/scrap/deptinfo/engineering/MaterialDept.java (1)
  • RegisterDepartmentMap (15-36)
⏰ 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: Build and analyze
🔇 Additional comments (14)
src/test/java/com/kustacks/kuring/acceptance/CategoryAcceptanceTest.java (1)

63-63: LGTM! 새로운 학과 추가가 정확히 반영되었습니다.

테스트 기대값이 63에서 66으로 업데이트되어 3개의 새로운 공학 부서(기계로봇자동차, 재료, 항공모빌리티) 추가를 올바르게 반영하고 있습니다.

src/main/java/com/kustacks/kuring/notice/application/service/NoticeCommandService.java (1)

106-107: 댓글 계층 구조에 대한 계단식 삭제가 올바르게 구현되었습니다.

부모 댓글 삭제 후 deleteByParentId를 호출하여 모든 자식 댓글을 함께 삭제하는 로직이 정확합니다. @Transactional 경계 내에서 실행되므로 원자성이 보장됩니다.

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

1-11: 기존 데이터에 대한 마이그레이션 로직이 정확합니다.

부모 댓글이 이미 삭제되었으나 자식 댓글의 destroyed_at이 아직 설정되지 않은 경우를 올바르게 처리하여 데이터 일관성을 확보합니다. 애플리케이션 레벨의 계단식 삭제와 잘 조화를 이룹니다.

src/main/java/com/kustacks/kuring/notice/application/port/out/CommentCommandPort.java (1)

13-13: LGTM! 포트 인터페이스에 계단식 삭제를 위한 메서드가 깔끔하게 추가되었습니다.

deleteByParentId 메서드는 부모 ID로 자식 댓글을 삭제하는 명확한 계약을 정의합니다.

src/main/java/com/kustacks/kuring/notice/adapter/out/persistence/CommentQueryRepository.java (1)

17-17: LGTM! 리포지토리 인터페이스가 올바르게 확장되었습니다.

부모 ID로 삭제하는 기능이 쿼리 리포지토리에 명확하게 추가되었습니다.

src/main/java/com/kustacks/kuring/notice/adapter/out/persistence/CommentQueryRepositoryImpl.java (2)

10-10: LGTM! LocalDateTime import가 새로운 기능에 맞게 추가되었습니다.


90-96: 계단식 삭제 구현이 효율적이고 안전합니다.

QueryDSL을 사용한 일괄 업데이트로 부모 ID에 해당하는 모든 자식 댓글의 destroyedAt을 설정합니다. 소프트 삭제 패턴이 일관되게 적용되었으며, 파라미터화된 쿼리로 안전합니다.

src/test/java/com/kustacks/kuring/acceptance/NoticeAcceptanceTest.java (2)

5-5: LGTM! Import 문이 wildcard로 정리되었습니다.

JUnit 5 애노테이션을 wildcard import로 변경하여 코드가 간결해졌습니다.


457-503: 계단식 삭제에 대한 포괄적인 인수 테스트가 추가되었습니다.

테스트가 다음을 철저하게 검증합니다:

  • 부모 댓글과 3개의 답글 생성
  • 삭제 전 댓글 수 확인 (4개)
  • 부모 댓글 삭제
  • 삭제 후 모든 댓글(부모 + 자식)이 제거되었는지 확인 (0개)

엔드투엔드 시나리오가 잘 구성되어 계단식 삭제 기능의 정확성을 보장합니다.

src/main/java/com/kustacks/kuring/notice/adapter/out/persistence/CommentPersistenceAdapter.java (1)

37-40: LGTM! 어댑터가 포트를 올바르게 구현합니다.

리포지토리에 위임하는 깔끔한 구현으로 계단식 삭제 기능이 퍼시스턴스 레이어에 잘 통합되었습니다.

src/main/java/com/kustacks/kuring/worker/scrap/deptinfo/engineering/MaterialDept.java (1)

15-35: 재료공학과 스크래핑 핸들러 구현이 올바릅니다.

MaterialDept 클래스는 기존의 AeroMobilityDeptMechaRobotAutoDept와 동일한 패턴을 따라 구현되었습니다. 의존성 주입과 설정이 적절하게 이루어졌습니다.

src/main/java/com/kustacks/kuring/worker/scrap/deptinfo/engineering/MechaRobotAutoDept.java (1)

15-35: 기계로봇자동차공학부 스크래핑 핸들러 구현이 올바릅니다.

MechaRobotAutoDept 클래스는 기존 패턴을 따라 올바르게 구현되었으며, 의존성 주입과 설정이 적절합니다.

src/main/java/com/kustacks/kuring/worker/scrap/deptinfo/engineering/AeroMobilityDept.java (1)

15-35: 항공우주모빌리티공학과 스크래핑 핸들러 구현이 올바릅니다.

AeroMobilityDept 클래스는 기존 패턴을 따라 올바르게 구현되었으며, 의존성 주입과 설정이 적절합니다.

src/main/java/com/kustacks/kuring/notice/domain/DepartmentName.java (1)

41-43: 새로운 학부 상수 추가가 적절합니다.

세 개의 새로운 공학부 상수가 기존 패턴을 따라 올바르게 추가되었습니다. 각 상수는 name, hostPrefix, korName 값을 가지며, 정적 맵(NAME_MAP, HOST_PREFIX_MAP, KOR_NAME_MAP)에 자동으로 포함됩니다. 새로 추가된 값들(mechanical_robot_automotive, materials_science, aerospace_mobilityme, mse, aeroeng, 기계로봇자동차공학부, 재료공학과, 항공우주모빌리티공학과)은 기존 enum 상수들과 중복되지 않습니다.


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.

@sonarqubecloud
Copy link

@github-actions
Copy link

Unit Test Results

  74 files  ±0    74 suites  ±0   1m 25s ⏱️ ±0s
532 tests +1  525 ✔️ +1  7 💤 ±0  0 ±0 
535 runs  +1  528 ✔️ +1  7 💤 ±0  0 ±0 

Results for commit 766b16c. ± Comparison against base commit 56a8fd4.

@rlagkswn00 rlagkswn00 merged commit 357824e into main Dec 19, 2025
7 checks passed
@rlagkswn00 rlagkswn00 self-assigned this Dec 19, 2025
@rlagkswn00 rlagkswn00 added the 🚀 Deploy Production deploy production server label Dec 19, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

🚀 Deploy Production deploy production server

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants