[RELEASE] v2.2.6 PR 생성 시 테스트 자동 실행 CI 워크플로우 추가#392
Conversation
파일 경로별로만 필요한 테스트/영속성/코멘팅 컨벤션을 rules/testing.md, rules/persistence.md, rules/commenting.md로 옮겨 관련 없는 작업 시 불필요한 컨텍스트 로드를 줄인다.
Claude Code 내장 review/code-review skill과 이름이 겹쳐 /review 실행 시 혼선이 생길 수 있어 backend-review로 구분한다. 체크리스트 내용은 그대로 유지.
방향 제시 전 불명확한 부분은 먼저 확인 질문을 하도록 프로세스를 보강하고, 여러 기능이 담긴 이슈는 항목 단위로 분석→방향→트레이드오프→승인 사이클을 반복하도록 명시한다.
commenting.md에 test 코드 경로를, persistence.md에 entity 경로를 추가하여 테스트 코드 작성 및 엔티티 변경 시에도 해당 규칙이 로드되도록 한다.
…e-review feat: Claude Code .claude 설정 개편 (rules 디렉토리 신설 및 review 커맨드 이름 변경)
resolved #385 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
코드 리뷰 반영: EATSSU_JWT_SECRET_TEST 하드코딩 값 제거, openssl로 매 실행마다 생성 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
resolved #387 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
fix: Ratings 생성 시 평점 값이 null이면 NPE 발생하던 문제 수정
resolved #388 BaseResponseStatus의 INVALID_START/END_OF_NICKNAME 메시지에 숫자가 허용 문자로 명시되어 있어, 실제 구현(정규식)이 아니라 테스트의 기대값이 스펙과 어긋나 있었음 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
test: 닉네임 시작/끝 숫자 허용 스펙에 맞게 NicknameValidatorTest 기대값 수정
feat: PR 생성 시 테스트 자동 실행하는 CI 워크플로우 추가
Summary of ChangesHello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! This pull request introduces significant improvements to the development workflow and project standards. It establishes clear conventions for code documentation, persistence layers, and testing, while refining the interaction guidelines for AI-assisted development. Additionally, it enhances validation logic in the domain layer and updates test suites to better reflect current business rules, alongside automating PR/Issue creation workflows. Highlights
New Features🧠 You can now enable Memory (public preview) to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console. Ignored Files
Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize the Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counterproductive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for GitHub and other Google products, sign up here. Code standards set in stone, Tests run where seeds are sown. With workflows now in place, We win the development race. Footnotes
|
There was a problem hiding this comment.
Code Review
이번 풀 요청은 Claude 명령어 및 규칙 설정을 구체화하고, Ratings 엔티티의 평점 검증 로직 수정 및 NicknameValidatorTest 테스트 코드를 영어 메서드명과 given 주석을 추가하는 규칙에 맞게 개선하였습니다. 리뷰어는 Ratings 엔티티 내에서 외부 보안 라이브러리인 io.jsonwebtoken.lang.Assert를 사용하는 대신 표준 Java 예외(IllegalArgumentException)를 던지도록 변경하여 외부 의존성을 제거할 것을 권장하고 있습니다.
Important
The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.
| Assert.notNull(mainRating, "mainRating must not be null"); | ||
| validateRange(mainRating, "mainRating"); |
There was a problem hiding this comment.
도메인 엔티티에서 JWT 라이브러리의 내부 유틸리티 클래스인 io.jsonwebtoken.lang.Assert를 사용하는 것은 도메인 레이어가 외부 보안 라이브러리에 강하게 결합되는 설계적 문제가 있습니다. 표준 Java 예외(IllegalArgumentException)를 직접 던지거나 java.util.Objects를 사용하여 검증하는 것이 좋습니다.
| Assert.notNull(mainRating, "mainRating must not be null"); | |
| validateRange(mainRating, "mainRating"); | |
| if (mainRating == null) { | |
| throw new IllegalArgumentException("mainRating must not be null"); | |
| } | |
| validateRange(mainRating, "mainRating"); |
References
- 도메인 엔티티는 외부 라이브러리(특히 JWT 관련 라이브러리)에 의존하지 않고 순수하게 유지되어야 합니다.
| private static void validateRange(Integer rating, String fieldName) { | ||
| if (rating == null) { | ||
| return; | ||
| } | ||
| Assert.isTrue(rating >= 1 && rating <= 5, fieldName + " must be between 1 and 5"); | ||
| } |
There was a problem hiding this comment.
동일하게 validateRange 메서드에서도 io.jsonwebtoken.lang.Assert 대신 표준 Java 예외를 던지도록 변경하여 외부 라이브러리 의존성을 제거하는 것이 좋습니다.
private static void validateRange(Integer rating, String fieldName) {
if (rating == null) {
return;
}
if (rating < 1 || rating > 5) {
throw new IllegalArgumentException(fieldName + " must be between 1 and 5");
}
}References
- 도메인 엔티티는 외부 라이브러리(특히 JWT 관련 라이브러리)에 의존하지 않고 순수하게 유지되어야 합니다.
#️⃣ Issue Number
📝 요약(Summary)