Skip to content

refactor/15 - 만료시간 자동계산으로 로직 수정, 테스트코드 수정 및 cd 수정 - #37

Merged
ji-circle merged 2 commits into
devfrom
refactor/15-order-expiredAt-calculate
May 19, 2026
Merged

ji-circle merged 2 commits into
devfrom
refactor/15-order-expiredAt-calculate

Conversation

@ji-circle

@ji-circle ji-circle commented May 19, 2026

Copy link
Copy Markdown
Contributor

📝 작업 내용

이번 PR에서 작업한 내용을 설명해주세요.

  • 만료시간 입력받는 게 아니라 자동계산으로 변경
  • ci cd 코드 수정

🚀 주요 변경 사항

완료한 이슈 번호
Close #15
관련된 이슈 번호 (닫고 싶지 않은 경우)
Related to #

✅ 자체 체크리스트 (필수)

  • ./gradlew build 실행 결과 정상 (인증샷 첨부)
  • IntelliJ HTTP Client 테스트 완료 (인증샷 첨부)
  • 팀 내 컨벤션 준수 및 불필요한 로그, import 제거
  • 중요한 변경 사항이 팀에 공유되었는지

📸 테스트 인증샷

빌드 결과 및 IntelliJ HTTP Client 실행 화면을 여기에 첨부해 주세요.

💬 리뷰어 전달사항 (선택)

특별히 봐주었으면 하는 부분이나 논의가 필요한 점을 적어주세요.



📎 참고 자료

관련 문서, 레퍼런스 링크 등이 있다면 여기에 첨부해주세요.

Summary by CodeRabbit

릴리스 노트

  • New Features

    • 주문 만료 시간이 수령 방식에 따라 자동으로 계산됩니다. (픽업: 당일 23시, 배송: 주문 후 15분)
  • Refactor

    • 주문 생성 요청에서 만료 시간 필드가 제거되었습니다.
    • CI/CD 파이프라인 구조가 개선되었습니다.
  • Chores

    • 테스트 코드 및 문서 주석이 업데이트되었습니다.

Review Change Stack

@ji-circle ji-circle added this to the 8. 기타 milestone May 19, 2026
@ji-circle ji-circle added the enhancement New feature or request label May 19, 2026
@ji-circle ji-circle linked an issue May 19, 2026 that may be closed by this pull request
4 tasks
@coderabbitai

coderabbitai Bot commented May 19, 2026

Copy link
Copy Markdown

Warning

Rate limit exceeded

@ji-circle has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 48 minutes and 8 seconds before requesting another review.

You’ve run out of usage credits. Purchase more in the billing tab.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 38cedcda-05d4-4d29-8172-b2c21f30a6ff

📥 Commits

Reviewing files that changed from the base of the PR and between 8648635 and b4d7ced.

📒 Files selected for processing (2)
  • src/main/java/com/michelet/order/domain/model/Order.java
  • src/test/java/com/michelet/order/domain/model/OrderTest.java
📝 Walkthrough

Walkthrough

주문 생성 시 외부 API 요청에서 expiredAt 필드를 제거하고, 도메인 모델 내부에서 수령 방법에 따라 자동으로 계산하는 리팩토링입니다. 동시에 Pull Request 검증용 CI 워크플로우를 추가하고 Production 워크플로우의 트리거 정책을 정리했습니다.

Changes

Order expiredAt 자동 계산 도메인화

Layer / File(s) Summary
Order 도메인 - expiredAt 자동 계산 구현
src/main/java/com/michelet/order/domain/model/Order.java
Order.create() 메서드의 expiredAt 파라미터 제거 및 calculateExpiredAt(receivingMethod) 헬퍼 메서드 추가. PICKUP은 당일 23:00, 그 외는 현재 시각 +15분으로 자동 계산.
Application & Presentation 계층 - expiredAt 필드 제거
src/main/java/com/michelet/order/application/dto/CreateOrderCommand.java, src/main/java/com/michelet/order/presentation/dto/CreateOrderRequest.java, src/main/java/com/michelet/order/application/OrderCommandService.java
CreateOrderCommandCreateOrderRequest에서 expiredAt 필드 및 검증 로직 제거. Order.create() 호출 시 expiredAt 인자 제거 및 toCommand() 변환 메서드 정리.
Domain 테스트 - expiredAt 자동 계산 검증
src/test/java/com/michelet/order/domain/model/OrderTest.java
기존 Order.create() 호출에서 expiredAt 인자 제거. PICKUP 수령 시 23:00 고정, SHIPPING 수령 시 현재+15분 범위를 검증하는 새 테스트 2개 추가.
Application 및 Repository 테스트 업데이트
src/test/java/com/michelet/order/application/OrderCommandServiceTest.java, src/test/java/com/michelet/order/infrastructure/repository/OrderAuditingTest.java, src/test/java/com/michelet/order/infrastructure/repository/OrderPersistenceTest.java
Order.create() 호출에서 LocalDateTime 인자를 LocalDate로 변경. import 정리 및 테스트 헬퍼 메서드 업데이트.
API 테스트 스크립트 - expiredAt 필드 제거
api-test/order.http
주문 취소/수령, Outbox, 멱등성, Saga, 카오스, 순서 보장 등 여러 테스트 시나리오의 주문 생성 요청에서 expiredAt 필드 일괄 제거.

CI/CD 워크플로우 정책 조정

Layer / File(s) Summary
Pull Request CI 워크플로우 추가
.github/workflows/ci.yml
새로운 CI 워크플로우를 정의하여 maindev 브랜치로의 Pull Request 이벤트에서 JDK 17 및 Gradle 기반의 테스트 실행. contents: read 최소 권한만 사용.
Production CI 워크플로우 정책 단순화
.github/workflows/ci-prod.yml
CI-PROD 트리거를 push 이벤트만으로 변경하여 pull_request 트리거 제거. AWS 자격증명, ECR 로그인, Docker 빌드 단계의 if: github.event_name == 'push' 조건 제거.
Production CD 워크플로우 브랜치 필터링
.github/workflows/cd-prod.yml
workflow_run 트리거에 branches: [ main, dev ] 필터 추가하여 해당 브랜치 완료 이벤트만 배포 진행. 배포 성공 조건 판정 구조 정렬.

코드 정리 및 주석 업데이트

Layer / File(s) Summary
FeignConfig 코드 정리
src/main/java/com/michelet/order/infrastructure/config/FeignConfig.java
internalAuthRequestInterceptor() 앞의 //FIXME 주석 제거. 파일 하단의 주석 처리된 대체 설정 블록 삭제.
OrderController 주석 정리
src/main/java/com/michelet/order/presentation/OrderController.java
소유자 검증 AOP 적용 예정 관련 주석을 TODO에서 NOTE로 변경. 인가 검증 미적용 상태 및 향후 적용 계획을 명확히 표기.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

  • Miche-Let/order-service#23: OrderCommandService.createOrder() 메서드의 Order.create() 호출 인자 구성이 변경되므로 코드 수준 연관성 있음.
  • Miche-Let/order-service#4: Order.create(), OrderCommandService, CreateOrderCommand에 포함된 expiredAt 필드 도입을 바탕으로 하는 리팩토링이므로 직접 후속 변경.
  • Miche-Let/order-service#22: OrderCommandService.createOrder()의 입력 인자 및 호출 구조 변경으로 코드 수준 연관성 있음.

Suggested reviewers

  • githyj-jang
  • Jinyoung-Kim96
  • qldo
  • Sehi55
  • jihxonx

Poem

🐰 주문의 시간, 도메인이 맡다
expiredAt은 외부서 나와
Order의 품으로 쏙 들어가네
PICKUP은 밤 11시, 배송은 15분 뒤
자동 계산, 규칙은 안전하게! 🎯

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 14.29% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed PR 제목이 주요 변경사항인 '만료시간 자동계산' 로직 수정과 관련 테스트/CD 수정을 명확하게 요약하고 있습니다.
Linked Issues check ✅ Passed PR이 Issue #15의 모든 주요 요구사항을 충족합니다: CreateOrderRequest/DTO에서 expiredAt 필드 제거, OrderCommandService에서 expiredAt 파라미터 제거, Order 도메인 내부 자동 계산 로직 구현(PICKUP은 당일 23시, 그 외는 현재+15분), 테스트 코드 수정.
Out of Scope Changes check ✅ Passed 모든 변경사항이 Issue #15의 요구범위 내에 있습니다. CI/CD 워크플로우 변경, 주석 정리(FeignConfig), 문서 주석 업데이트(OrderController)는 모두 도메인 로직 리팩터링을 지원하는 범위 내 변경입니다.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch refactor/15-order-expiredAt-calculate

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.

coderabbitai[bot]

This comment was marked as resolved.

@qldo qldo left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

확인하였습니다

@ji-circle
ji-circle merged commit 0615548 into dev May 19, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[REFACTOR] expiredAt 자동 계산 로직 도메인 내재화

2 participants