Skip to content

Conversation

@chanwonlee
Copy link
Contributor

관련 Issue (필수)

주요 변경 사항 (필수)

  • session clustering 추가
  • api 기능 추가

리뷰어 참고 사항

없음

추가 정보

없음

PR 작성 체크리스트 (필수)

  • 제목이 Issue와 동일함을 확인했습니다.
  • 리뷰어를 지정했습니다.
  • 프로젝트를 연결했습니다.

@chanwonlee chanwonlee merged commit 70e86b7 into main Sep 11, 2025
2 checks passed
@github-project-automation github-project-automation bot moved this to Done in 💙 BE Sep 11, 2025
Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

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

Summary of Changes

Hello @chanwonlee, 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!

이 PR은 애플리케이션의 인프라와 기능 확장을 목표로 합니다. Redis를 이용한 세션 클러스터링을 구현하여 서비스의 안정성과 확장성을 높였으며, 사용자에게 새로운 기능을 제공하기 위해 운송장 조회 및 회원 탈퇴 관련 API를 추가했습니다. 또한, 회원 탈퇴 시 데이터 처리 로직을 개선하여 보다 견고한 시스템을 구축했습니다.

Highlights

  • 세션 클러스터링 기능 추가: Spring Session Data Redis를 활용하여 세션 클러스터링 기능을 도입했습니다. 이를 통해 애플리케이션의 확장성과 안정성을 향상시켰습니다.
  • 새로운 API 엔드포인트 추가: 운송장 번호 및 발송일 조회 API와 회원 탈퇴 API를 추가하여 서비스 기능을 확장했습니다.
  • 회원 탈퇴 로직 개선: 회원 탈퇴 시 providerId도 탈퇴일시와 함께 포맷되도록 변경하여 데이터 일관성을 강화했습니다.
Using Gemini Code Assist

The 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 in your pull request via creating an issue comment (i.e. comment on the pull request page) using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in issue comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize 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 .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. 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.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

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

Code Review

이번 PR은 Redis를 이용한 세션 클러스터링 기능과 배송 정보 조회 API를 추가하고, 회원 탈퇴 로직을 개선하는 변경 사항을 포함하고 있습니다. 전반적으로 잘 작성되었으나, 새로 추가된 API 응답 DTO에서 발생할 수 있는 NullPointerException 문제와 코딩 컨벤션 위반 사항이 발견되어 수정을 제안합니다. 자세한 내용은 각 파일의 리뷰 코멘트를 참고해주세요.

Comment on lines +17 to +19
public static TrackingNumberResponse of(String trackingNumber, LocalDateTime startAt) {
return new TrackingNumberResponse(trackingNumber, startAt.toLocalDate());
}
Copy link
Contributor

Choose a reason for hiding this comment

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

high

🚨 잠재적 NullPointerException 발생 가능성

심각도: High

문제점: shippingService.getTrackingNumber()에서 배송이 시작되지 않은 (startAtnull인) Shipping 객체를 조회할 경우, 이 of 메서드가 호출되면서 startAt.toLocalDate()에서 NullPointerException이 발생할 수 있습니다.1 테스트 코드에서는 shipping.startShipping()을 호출하여 이 케이스를 발견하지 못하고 있습니다.

제안사항: startAtnull인 경우를 안전하게 처리하도록 코드를 수정하는 것을 권장합니다.

Suggested change
public static TrackingNumberResponse of(String trackingNumber, LocalDateTime startAt) {
return new TrackingNumberResponse(trackingNumber, startAt.toLocalDate());
}
public static TrackingNumberResponse of(String trackingNumber, LocalDateTime startAt) {
return new TrackingNumberResponse(trackingNumber, startAt != null ? startAt.toLocalDate() : null);
}

Style Guide References

Footnotes

  1. 정확성 검토 항목 중 하나로, NullPointerException 발생 가능성을 항상 확인해야 합니다.

Comment on lines +16 to +17
) {
public static TrackingNumberResponse of(String trackingNumber, LocalDateTime startAt) {
Copy link
Contributor

Choose a reason for hiding this comment

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

medium

🔍 코드 리뷰 요약

심각도: Medium

문제점: CHERRY 프로젝트 코딩 컨벤션을 위반했습니다. record 선언 후 본문 시작 전에 한 줄 띄어쓰기가 없습니다.1

제안사항: 가독성 향상을 위해 record 선언부와 of 정적 팩토리 메서드 사이에 빈 줄을 추가하는 것을 권장합니다.

// ✅ 개선된 코드:
public record TrackingNumberResponse(...) {

    public static TrackingNumberResponse of(...) {
        // ...
    }
}
Suggested change
) {
public static TrackingNumberResponse of(String trackingNumber, LocalDateTime startAt) {
) {
public static TrackingNumberResponse of(String trackingNumber, LocalDateTime startAt) {

Style Guide References

Footnotes

  1. 모든 클래스, record, interface, enum은 선언 후 반드시 한 줄 띄어쓰기가 있어야 합니다.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

4 participants