Skip to content

Conversation

@HyemIin
Copy link
Member

@HyemIin HyemIin commented Jul 18, 2025

작업 요약

  • status 한번만 뜨도록 수정

Issue Link

#124

문제점 및 어려움

해결 방안

Reference

Summary by CodeRabbit

  • 신규 기능

    • 매장별 대기 인원 수를 조회할 수 있는 기능이 추가되었습니다.
  • 기능 개선

    • 주문 생성 시 주문 항목 상세 정보가 응답에 포함됩니다.
    • 주문 항목 목록 조회 시 상태 정보 필드가 제거되고, 주문 항목이 상태별로 그룹화되어 반환됩니다.
  • 버그 수정

    • 불필요한 import 문이 제거되었습니다.

- status 한번만 뜨도록 수정
@HyemIin HyemIin self-assigned this Jul 18, 2025
@coderabbitai
Copy link

coderabbitai bot commented Jul 18, 2025

Walkthrough

새로운 Redis 기반 대기열 카운트 조회 저장소가 관리자 API에 추가되었습니다. 주문 관련 DTO 및 서비스에서 주문 항목 정보를 더 풍부하게 반환하도록 메서드 시그니처와 매핑 로직이 변경되었습니다. 일부 불필요한 import 구문이 삭제되었습니다.

Changes

파일/경로 요약 변경 내용
.../reservation/repository/WaitingRedisRepository.java (admin) Redis에서 매장별 대기 인원수를 조회하는 WaitingRedisRepository 신규 클래스 추가
.../order/dto/OrderCreateResponseDto.java
.../order/dto/OrderItemResponseDTO.java
주문 생성 응답 DTO의 팩토리 메서드가 주문 항목 목록을 받아 상세 정보를 포함하도록 변경, OrderItemResponseDTO에 엔티티 변환 메서드 추가
.../order/dto/OrderItemListGetResponseDto.java status 필드 및 관련 팩토리 메서드 파라미터 제거
.../order/service/OrderService.java 주문 생성 시 주문 항목 리스트를 DTO로 전달, 주문 항목 상태별 그룹핑 로직에서 DTO 매핑 방식 변경
.../order/controller/OrderController.java
.../reservation/repository/WaitingRedisRepository.java (user)
불필요한 import 구문 삭제

Sequence Diagram(s)

sequenceDiagram
    participant Controller
    participant Service
    participant Repository
    participant Redis

    Controller->>Service: createOrder(storeId, tableId, orderCreateRequestDto, sessionId)
    Service->>Repository: saveOrder(...)
    Repository-->>Service: UserOrder, List<OrderItem>
    Service->>OrderCreateResponseDto: fromEntity(UserOrder, List<OrderItem>)
    Service-->>Controller: OrderCreateResponseDto
Loading
sequenceDiagram
    participant Service
    participant Redis

    Service->>Redis: zCard(waitingKeyPrefix + storeId)
    Redis-->>Service: waitingCount
    Service-->>Service: 반환값: 대기 인원수(long)
Loading

Possibly related PRs

  • feat(Order,Reservation): redis 적용 #122: Redis 기반 대기열 관리 및 예약 기능을 포괄적으로 구현하며, 본 PR에서 추가된 WaitingRedisRepository와 직접적으로 관련된 구현이 포함되어 있음.

Suggested labels

enhancement

✨ 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
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Explain this complex logic.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai explain this code block.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and explain its main purpose.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@github-actions github-actions bot requested a review from Jjiggu July 18, 2025 10:52
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

🧹 Nitpick comments (3)
nowait-app-user-api/src/main/java/com/nowait/applicationuser/order/service/OrderService.java (1)

121-122: 불필요한 빈 줄 제거 권장

코드 가독성을 위해 불필요한 빈 줄들을 제거하는 것이 좋겠습니다.

-
-
-
nowait-app-admin-api/src/main/java/com/nowait/applicationadmin/reservation/repository/WaitingRedisRepository.java (2)

1-9: 레포지토리 이름 중복 가능성 검토

applicationuser 모듈에도 동일한 클래스명이 존재합니다. 패키지가 달라 충돌은 없겠지만, 스프링 컴포넌트 스캔 범위를 통합할 계획이 있다면 빈 이름 충돌이 발생할 수 있습니다.
AdminWaitingRedisRepository 같이 역할이 드러나는 명칭을 고려해 보세요.


15-20: null-safe 처리 좋습니다 – 가독성 한 단계 개선 제안

삼항 연산자 사용으로 NPE 를 막은 점은 충분히 만족스럽습니다. 다만, 가독성을 높이려면 Objects.requireNonNullElse(Java 9+) 또는 Optional.ofNullable(count).orElse(0L) 패턴도 고려할 수 있습니다.

예시:

-Long count = redisTemplate.opsForZSet().zCard(key);
-return count == null ? 0 : count;
+Long count = redisTemplate.opsForZSet().zCard(key);
+return Objects.requireNonNullElse(count, 0L);

선택 사항이므로 참고만 해 주세요.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 9b469de and 82413c8.

📒 Files selected for processing (7)
  • nowait-app-admin-api/src/main/java/com/nowait/applicationadmin/reservation/repository/WaitingRedisRepository.java (1 hunks)
  • nowait-app-user-api/src/main/java/com/nowait/applicationuser/order/controller/OrderController.java (0 hunks)
  • nowait-app-user-api/src/main/java/com/nowait/applicationuser/order/dto/OrderCreateResponseDto.java (2 hunks)
  • nowait-app-user-api/src/main/java/com/nowait/applicationuser/order/dto/OrderItemListGetResponseDto.java (1 hunks)
  • nowait-app-user-api/src/main/java/com/nowait/applicationuser/order/dto/OrderItemResponseDTO.java (2 hunks)
  • nowait-app-user-api/src/main/java/com/nowait/applicationuser/order/service/OrderService.java (2 hunks)
  • nowait-app-user-api/src/main/java/com/nowait/applicationuser/reservation/repository/WaitingRedisRepository.java (1 hunks)
💤 Files with no reviewable changes (1)
  • nowait-app-user-api/src/main/java/com/nowait/applicationuser/order/controller/OrderController.java
🧰 Additional context used
🧬 Code Graph Analysis (2)
nowait-app-user-api/src/main/java/com/nowait/applicationuser/reservation/repository/WaitingRedisRepository.java (1)
nowait-domain/domain-redis/src/main/java/com/nowait/domaincoreredis/common/util/RedisKeyUtils.java (1)
  • RedisKeyUtils (5-43)
nowait-app-admin-api/src/main/java/com/nowait/applicationadmin/reservation/repository/WaitingRedisRepository.java (2)
nowait-app-user-api/src/main/java/com/nowait/applicationuser/reservation/repository/WaitingRedisRepository.java (1)
  • Repository (10-50)
nowait-domain/domain-redis/src/main/java/com/nowait/domaincoreredis/common/util/RedisKeyUtils.java (1)
  • RedisKeyUtils (5-43)
🔇 Additional comments (8)
nowait-app-user-api/src/main/java/com/nowait/applicationuser/order/dto/OrderItemResponseDTO.java (2)

3-3: 새로운 import 추가 승인

OrderItem 엔티티 import가 적절하게 추가되었습니다.


19-25: 정적 팩토리 메서드 구현 승인

OrderItem 엔티티를 DTO로 변환하는 정적 팩토리 메서드가 올바르게 구현되었습니다. 빌더 패턴을 사용하여 깔끔하게 구현되었고, 엔티티에서 필요한 필드들(메뉴 ID, 메뉴 이름, 수량)을 적절히 추출하고 있습니다.

nowait-app-user-api/src/main/java/com/nowait/applicationuser/order/dto/OrderItemListGetResponseDto.java (1)

22-30: 상태 필드 제거 및 팩토리 메서드 단순화 승인

OrderStatus 파라미터가 제거되고 status 필드 매핑이 제거된 것은 PR 목표와 일치합니다. 이제 상태는 개별 주문 항목이 아닌 상위 레벨에서 그룹핑 기준으로 사용되어 중복을 방지합니다. 팩토리 메서드가 적절히 단순화되었습니다.

nowait-app-user-api/src/main/java/com/nowait/applicationuser/order/dto/OrderCreateResponseDto.java (2)

5-5: OrderItem 엔티티 import 추가 승인

OrderItem 엔티티에 대한 import가 적절하게 추가되었습니다.


26-37: fromEntity 메서드 개선 승인

OrderItem 목록을 파라미터로 받아 OrderItemResponseDTO 목록으로 변환하는 로직이 올바르게 구현되었습니다. 스트림을 사용하여 각 OrderItem을 OrderItemResponseDTO로 변환하는 방식이 깔끔하고, 새로 추가된 OrderItemResponseDTO.fromEntity 메서드를 적절히 활용하고 있습니다.

nowait-app-user-api/src/main/java/com/nowait/applicationuser/order/service/OrderService.java (2)

93-93: createOrder 메서드 반환 구문 개선 승인

OrderCreateResponseDto.fromEntity 호출 시 orderItems를 추가로 전달하는 변경사항이 올바르게 구현되었습니다. 이를 통해 주문 생성 응답에 상세한 주문 항목 정보가 포함됩니다.


101-109: 주문 항목 상태별 그룹핑 로직 개선 승인

스트림 처리 로직이 PR 목표에 맞게 훌륭하게 리팩토링되었습니다. 이제 각 주문 항목에서 상태를 중복해서 반환하는 대신, UserOrder의 상태를 기준으로 그룹핑하여 상태가 한 번만 나타나도록 구현되었습니다. flatMap을 사용하여 주문 항목을 직접 추출하고, Collectors.mapping을 사용하여 DTO 변환을 수행하는 방식이 효율적이고 명확합니다.

nowait-app-user-api/src/main/java/com/nowait/applicationuser/reservation/repository/WaitingRedisRepository.java (1)

5-7: 불필요한 import 제거 👍

java.util.Set 사용 흔적이 없었는데 깔끔하게 정리하셨습니다. 빌드-타임 경고 감소에 도움이 됩니다.

@HyemIin HyemIin merged commit 126e566 into develop Jul 18, 2025
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants