-
Notifications
You must be signed in to change notification settings - Fork 0
[FEATURE] 승차권 조회 로직을 Booking, Ticket 기준으로 변경 #99
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
feat: 승차권 목록 조회 필터링 및 Ticket 기반 조회로 변경 (#95)
chanwonlee
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
변경 내용 전부 확인했습니다!
Ticket 생성 로직이 작성 안 된 상태에서 조회 로직을 구현하는 게 어려웠을 텐데 잘 작성해 주셨네요!
또한 중간에 회의 내용으로 인해 추가된 내용도 잘 반영해 주셔서 감사합니다.
BookingTestHelper는 지금 이 상태로 유지하고 이후 Ticket 생성/삭제 로직이 추가되면 전반적으로 손봐야 할 것 같네요.
시간 필터와 컨버터 등록 등 여러 부분에서 고민을 많이 하신 것 같아 좋은 구조가 나온 것 같습니다!
정말 고생하셨습니다 👍👍
+ CLAUDE.md 파일을 .gitignore에 추가할지 아니면 모두 공통으로 유지할지 다음 회의 시간에 정하면 어떨까요?
Jimin730
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
구현해주신 로직 모두 확인했습니다!
컨트롤러에서 converter를 어떤 경우에 사용되는 것인지, 또 어떻게 사용할 수 있는지 궁금했었는데 민아님이 구현해주신 로직이 공부하는데 많은 도움이 되었습니다! 🥹
확실히 DB 단에서 필터를 적용해 필요한 데이터만 조회하니 불필요한 데이터를 메모리에 올리지 않아도 되어 효율적이네요 👍
고생하셨습니다!! 👍 👍 👍
관련 Issue (필수)
주요 변경 사항 (필수)
1. 승차권 조회 API 시간 필터링 추가
GET /api/v1/bookings?status={filter} 엔드포인트에 시간 기반 필터 추가
upcoming: 앞으로 이용 가능한 승차권 (BOOKED 상태 + 현재 시간 이후 출발)history: 이용 완료 및 취소된 승차권 (BOOKED/CANCELLED + 현재 시간 이전 출발)all: 전체 조회 (BOOKED 상태만, 기본값)BookingTimeFilterenum 및BookingTimeFilterConverter추가2. SeatBooking → Ticket 기반 조회로 변경
3. TicketStatus 정리
REFUNDED상태 삭제 →CANCELLED로 통합 (취소 시 즉시 환불 처리되므로)4. Ticket 상태 필터링 추가
UPCOMING조회 시ISSUED상태 티켓만 조회 (취소된 티켓 제외)HISTORY,ALL조회 시 전체 티켓 조회 (취소 이력 포함)5. 네이밍 정리
6. Ticket 도메인 모델 로직 추가
cancel(),use()메서드 추가canBeCancelled()메서드 추가canBeUsed()메서드 추가7. 조회 필터링 비즈니스 로직 검증 (테스트 코드 추가)
BookingServiceSearchFilterTest를 통해 시간 및 상태 필터링 정책이 정확히 동작하는지 검증하는 통합 테스트를 추가했습니다.
BookingServiceTest에 추가하기에는 너무 클래스가 길어져 따로 분리했습니다.
UPCOMING: 미래 일정의 예매만 조회되며, 그중 CANCELLED된 티켓은 결과에서 제외됨을 확인.HISTORY: 과거 일정의 예매를 조회하며, 취소된 티켓 및 예매 내역이 모두 포함됨을 확인.ALL: 출발 시간과 관계없이 BOOKED 상태인 모든 예매 내역이 조회됨을 확인.리뷰어 참고 사항
Import 정리
TicketServiceTest 변경사항
TODO
TicketService.createTicket() 메서드의 외부 호출 케이스 확정 필요
티켓 취소 서비스 로직 구현: 현재
Ticket.cancel()도메인 로직은 추가되었으나, 이를 호출하는 서비스 레이어의 개별 티켓 취소 API 구현 필요.테스트 최적화: 티켓 취소 로직 구현 후,
em.flush()와@Transactional에 의존하는 테스트 방식을 서비스 호출 방식으로 리팩토링 예정.추가 정보
없음
PR 작성 체크리스트 (필수)