Skip to content

[Refactor] status 누락 파트 수정 - #79

Closed
githyj-jang wants to merge 5 commits into
devfrom
refactor/status
Closed

githyj-jang wants to merge 5 commits into
devfrom
refactor/status

Conversation

@githyj-jang

@githyj-jang githyj-jang commented May 20, 2026

Copy link
Copy Markdown
Contributor

📝 작업 내용

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

  • status 책임 분리 온전하지 못한 부분수정

🚀 주요 변경 사항

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

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

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

📸 테스트 인증샷

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

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

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

  • 논의점


📎 참고 자료

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

Summary by CodeRabbit

릴리스 노트

  • Chores

    • 애플리케이션 타임존을 Asia/Seoul로 통일하여 시간 데이터 처리의 일관성을 강화했습니다.
    • CI/CD 파이프라인을 최적화하여 배포 신뢰성을 개선했습니다.
    • 테스트 및 빌드 단계를 분리하여 배포 효율성을 높였습니다.
  • Refactor

    • 예약 상태 관리 로직을 개선하여 코드 유지보수성을 강화했습니다.

Review Change Stack

@githyj-jang githyj-jang self-assigned this May 20, 2026
Copilot AI review requested due to automatic review settings May 20, 2026 15:40
@coderabbitai

coderabbitai Bot commented May 20, 2026

Copy link
Copy Markdown

Caution

Review failed

Pull request was closed or merged during review

📝 Walkthrough

개요

예약 상태 검증 로직을 상태 패턴으로 위임하고, 런타임 타임존을 Asia/Seoul로 통일하며, CI/CD 워크플로우를 테스트/빌드 분리 및 환경변수 확장으로 최적화합니다.

변경 사항

예약 상태 관리 및 배포 개선

레이어 / 파일 요약
상태 인터페이스 확장
src/main/java/com/michelet/reservation/domain/state/ReservationState.java
ReservationState에 deadline 기반 검증 메서드(isCancellable, isModifiable, assertModifiable, assertCompletable)를 기본 구현으로 추가하여 상태별 조건 판단의 계약을 정의합니다.
확정 상태 검증 구현
src/main/java/com/michelet/reservation/domain/state/ConfirmedState.java
ConfirmedState에서 deadline 기반의 구체적인 검증 로직을 구현합니다. 취소/수정 가능 여부는 현재 날짜와 deadline 비교로, 완료 검증은 체크인 윈도우(noshowDeadline 전후 60분)로 판단합니다.
예약 엔티티 검증 위임
src/main/java/com/michelet/reservation/domain/entity/Reservation.java
complete, isCancellable, isModifiable, modify 메서드가 상태 객체의 검증 메서드를 호출하도록 리팩토링됩니다. ReservationTransition enum과 테스트가 제거됩니다.
타임존 설정 통일
Dockerfile, src/main/resources/application.yaml
Dockerfile JVM 파라미터와 application.yaml Jackson 설정에 Asia/Seoul 타임존을 명시적으로 설정합니다.
CI 워크플로우 재구조화
.github/workflows/ci-prod.yml
테스트 job과 빌드 job을 분리하여 test는 모든 이벤트에서, build-and-push는 push 이벤트일 때만 실행되도록 조건화합니다. 트리거 브랜치를 main으로 단일화합니다.
CD 환경변수 확장
.github/workflows/cd-prod.yml
ECS task definition 렌더링 시 POSTGRES/REDIS/INTERNAL_AUTH 환경변수를 jq --arg로 추가 전달하고, 컨테이너 .environment에 TZ를 포함하여 병합합니다.

예상 코드 리뷰 난이도

🎯 3 (보통) | ⏱️ ~25분

관련 PR

추천 라벨

enhancement

추천 리뷰어

  • ji-circle
  • jihxonx
  • Jinyoung-Kim96

🐰 상태가 제 역할을 하도록,
타임존은 서울 시간으로,
CI/CD는 갈래를 나누어
우아하게 배포하세요! ✨
예약의 마법은 이제 패턴 속에. 🎭

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Title check ⚠️ Warning 제목이 실제 변경 사항의 핵심인 상태 관련 책임 분리 부분을 일부 다루고 있으나, 워크플로우, 타임존 설정, 환경 변수 확장 등 다양한 광범위한 변경을 포괄하지 못함. 더 구체적이고 포괄적인 제목으로 변경하되, 예를 들어 '상태 관련 책임 분리 및 타임존/환경 설정 개선' 같은 형태로 주요 변경 사항을 반영하도록 수정 권장.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

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

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch refactor/status
⚔️ Resolve merge conflicts
  • Resolve merge conflict in branch refactor/status

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.

@githyj-jang
githyj-jang deleted the refactor/status branch May 20, 2026 15:45

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

상태 책임 분리(Reservation ↔ ReservationState)에서 누락된 정책/검증 로직을 상태 객체로 이동해 도메인 로직을 정리하고, 운영 환경 타임존 및 배포 파이프라인 설정을 함께 조정하는 PR입니다.

Changes:

  • Reservation의 완료/수정 가능 여부 및 체크인 가능 시간 검증을 ReservationState(주로 ConfirmedState)로 위임
  • 애플리케이션/런타임 타임존을 Asia/Seoul로 설정(Jackson, JVM 옵션, ECS 환경변수)
  • PROD CI를 테스트/빌드-푸시로 분리하고, PROD CD에서 DB/Redis/내부 인증 관련 환경변수 주입 확장

Reviewed changes

Copilot reviewed 9 out of 9 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
src/test/java/com/michelet/reservation/domain/enums/ReservationTransitionTest.java 상태 전이 enum 기반 테스트 제거
src/main/resources/application.yaml Jackson 타임존 설정 추가
src/main/java/com/michelet/reservation/domain/state/ReservationState.java cancellable/modifiable/completable 정책/검증 메서드 기본 제공(상태별 override 전제)
src/main/java/com/michelet/reservation/domain/state/ConfirmedState.java CONFIRMED 상태에 대한 취소/수정/완료 가능 검증 로직 구현 추가
src/main/java/com/michelet/reservation/domain/enums/ReservationTransition.java 상태 전이 enum 제거
src/main/java/com/michelet/reservation/domain/entity/Reservation.java 완료/수정/정책 판단을 state로 위임하도록 리팩터링
Dockerfile JVM 타임존 옵션 추가
.github/workflows/ci-prod.yml 테스트 job 분리 및 push 시에만 build/push 수행하도록 변경
.github/workflows/cd-prod.yml ECS task definition에 DB/Redis/내부 인증 관련 env 주입 추가 및 TZ 설정 추가

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +17 to +19
jackson:
time-zone: Asia/Seoul

Comment thread Dockerfile
EXPOSE 19500

ENTRYPOINT ["java", "-jar", "/app/app.jar"] No newline at end of file
ENTRYPOINT ["java", "-Duser.timezone=Asia/Seoul", "-jar", "/app/app.jar"] No newline at end of file
Comment on lines +99 to +104
{"name":"POSTGRES_DB","value":$POSTGRES_DB},
{"name":"POSTGRES_USER","value":$POSTGRES_USER},
{"name":"POSTGRES_PASSWORD","value":$POSTGRES_PASSWORD},
{"name":"REDIS_HOST","value":$REDIS_HOST},
{"name":"REDIS_PORT","value":$REDIS_PORT},
{"name":"INTERNAL_AUTH_SECRET","value":$INTERNAL_AUTH_SECRET}
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