30 Commits

Author SHA1 Message Date
365a2a37ae feat: 새로 추가할 Order에서 가져올 ReservationStateResponse 조회 로직 및 PAYMENT_IN_PROGRESS 상태 변경 로직 추가 2025-10-07 22:19:39 +09:00
5e77b1cf91 feat: ReservationStatus에 PAYMENT_IN_PROGRESS 타입 추가 2025-10-07 22:18:46 +09:00
c4cd168175 refactor: PaymentService에서의 예외 처리 방법 변경에 따른 별도의 ExceptionHandler 추가 및 테스트 보완 2025-10-07 22:17:46 +09:00
1902fc6f7c refactor: payment 내 DTO / mapper 패키지 분리 및 클래스명 수정 2025-10-07 21:06:40 +09:00
1caa9d3f3d refactor: auth 내 DTO 패키지 분리 2025-10-07 20:27:19 +09:00
f06bef8ea5 refactor: region 내 DTO, Mapper 패키지 분리 2025-10-07 20:16:59 +09:00
0820c0ccd9 refactor: admin 내 DTO, Mapper 패키지 분리 2025-10-07 20:15:15 +09:00
ab5edce38c refactor: reservation 내 DTO, Mapper 패키지 분리 2025-10-07 20:13:18 +09:00
07263426b2 refactor: schedule에서의 DTO 스펙 수정 2025-10-07 19:33:16 +09:00
7b0ebcc6dc refactor: ScheduleService / AdminScheduleService 분리 2025-10-07 18:33:44 +09:00
5bd6250184 refactor: schedule 내 DTO, Mapper 패키지 분리 2025-10-07 18:33:35 +09:00
7bda14984e refactor: 인기 테마 조회 시 ORDER BY 위치 수정 및 동일 예약수인 경우 ID 오름차순 정렬 추가 2025-10-07 18:05:18 +09:00
8bb22a6a84 refactor: store 내 DTO, Mapper 패키지 분리 2025-10-07 18:04:12 +09:00
c4604ccdde refactor: theme 내 DTO, Mapper 패키지 분리 2025-10-07 17:47:25 +09:00
038381424c refactor: user 내 DTO, Mapper 패키지 분리 2025-10-07 17:03:49 +09:00
ef64a740c2 refactor: 기존의 외부 API 호출 + 결제 정보 저장 통합 로직을 각각 분리 2025-10-07 16:31:40 +09:00
dd406505ec feat: 결제 확정 API 에러 중, 사용자에게 노출할 메시지 에러 코드 별도 정의 2025-10-07 16:31:27 +09:00
fd96bd9939 refactor: PaymentClientConfirmResponse에 paymentKey, paymentType 추가 2025-10-07 16:30:42 +09:00
1652398fcc refactor: TosspayClient에서 사용할 별도의 ExternalPaymentException 정의 2025-10-07 16:18:23 +09:00
6fa8c76b87 refactor: Pending 예약 생성시 validation 조건 추가 및 테스트
- 해당 schedule이 만료되었는지, 시작 시간이 현재 시간 이전인지 확인
2025-10-06 17:56:52 +09:00
0a7bd85dc9 refactor: 테스트용 schedule 더미 데이터 생성 로직에 holdExpiredAt 처리 추가 2025-10-06 17:50:48 +09:00
022742d1fa refactor: 일정 재활성화 스케쥴링 작업에서 예약이 없는 일정 -> PENDING 예약이 없는 일정으로 수정 및 테스트 추가 2025-10-06 17:33:01 +09:00
8378e10192 refactor: Pending 예약시 일정 검증을 위한 ReservationService에서 가져오는 ScheduleSummaryResponse에 holdExpiredAt 필드 추가 2025-10-06 16:53:43 +09:00
5bcba12a61 refactor: ReservationValidator 로그 매시지에서의 클래스명 제거 2025-10-06 16:52:48 +09:00
44c556776d refactor: 일정 HOLD 로직 수정
- 충돌 방지를 위해 조회시 Lock 추가
- 해당 일정의 시작 시간이 현재 시간 이후인지 검증 로직 추가
2025-10-06 16:49:58 +09:00
1c700130c4 refactor: ScheduleValidator의 로그 매시지에서의 클래스명 제거 2025-10-06 16:40:11 +09:00
8215492eea [#54] 애플리케이션 배포 (#55)
<!-- 제목 양식 -->
<!-- [이슈번호] 작업 요약 (예시: [#10] Gitea 템플릿 생성) -->

## 📝 관련 이슈 및 PR

**PR과 관련된 이슈 번호**
- #54

##  작업 내용
<!-- 어떤 작업을 했는지 알려주세요! -->
- 애플리케이션 배포
- 1차 배포에서 각 Service의 Trace가 구분이 되지 않아 XxxService 클래스에 \@Observation을 적용하는 AOP 추가
- 불필요하게 느껴지는 Prometheus Actuator 요청과 스케쥴링 작업 Tracing 제외
- 애플리케이션이 UTC로 배포됨에 따라 발생하는 문제 해결을 위해 LocalDateTime, OffsetDateTime -> Instant 타입 변경 및 LocalDate, LocalTime은 KST로 비교하도록 수정
- 기존 로그의 가독성이 좋지 않아, 로그 메시지가 가장 먼저 보이도록 형식 수정

## 🧪 테스트
<!-- 어떤 테스트를 생각했고 진행했는지 알려주세요! -->
- 실제 웹에 접속하여 전체적인 기능 점검
- 예약 처리 로직에서 미숙한 부분이 발견되어 다음 작업은 예약 처리 로직 개선 예정

## 📚 참고 자료 및 기타
<!-- 참고한 자료, 또는 논의할 사항이 있다면 알려주세요! -->

Reviewed-on: #55
Co-authored-by: pricelees <priceelees@gmail.com>
Co-committed-by: pricelees <priceelees@gmail.com>
2025-10-06 02:42:13 +00:00
186d6e118c [#52] 만료 예약 / 일정 스케쥴링 작업 추가 및 동시성 처리를 위한 일부 코드 수정 (#53)
<!-- 제목 양식 -->
<!-- [이슈번호] 작업 요약 (예시: [#10] Gitea 템플릿 생성) -->

## 📝 관련 이슈 및 PR

**PR과 관련된 이슈 번호**
- #52

##  작업 내용
<!-- 어떤 작업을 했는지 알려주세요! -->
- 예약 페이지에서 일정 조회시, 현 시간 이후부터 조회되도록 수정
- 사용자의 schedule 수정은 \@LastModified JPA Auditing이 적용되지 않도록 UPDATE 쿼리를 바로 전송하도록 수정
- 매 1분마다 Pending 예약이 되지 않은 일정, 결제가 되지 않은 Pending 예약 만료 처리 스케쥴링 작업 추가
- 스케쥴링 작업으로 인해 발생할 수 있는 'Pending 예약은 생성했으나 해당 일정이 재활성화' 되는 문제 해결을 위해 schedule 조회에 pessimistic lock 적용

## 🧪 테스트
<!-- 어떤 테스트를 생각했고 진행했는지 알려주세요! -->
- LocalTime.plusHours()로 인해 특정 시간대 이후로는 실패하는 테스트 수정
- Pessimistic Lock 적용 후 해당 문제 상황 동시성 테스트 추가
- 하나의 일정에 대한 동시 HOLD 요청 상황 테스트 추가

## 📚 참고 자료 및 기타
<!-- 참고한 자료, 또는 논의할 사항이 있다면 알려주세요! -->

Reviewed-on: #53
Co-authored-by: pricelees <priceelees@gmail.com>
Co-committed-by: pricelees <priceelees@gmail.com>
2025-10-04 08:40:37 +00:00
d056e12278 [#50] Tosspay API Mocking 서버 구현 (#51)
<!-- 제목 양식 -->
<!-- [이슈번호] 작업 요약 (예시: [#10] Gitea 템플릿 생성) -->

## 📝 관련 이슈 및 PR

**PR과 관련된 이슈 번호**
- #50

##  작업 내용
<!-- 어떤 작업을 했는지 알려주세요! -->
- 입력된 paymentKey 등을 담아, 랜덤한 결제 정보를 반환하도록 구현
- 전체 중 50%는 간편결제 + 카드, 25%는 카드, 20%는 간편결제(선불 충전액), 나머지 5%는 계좌이체 결과를 반환
- micrometer 적용으로 Main Service와의 Tracing 처리
- 해당 서비스는 GCP에 배포 예정

## 🧪 테스트
<!-- 어떤 테스트를 생각했고 진행했는지 알려주세요! -->
- 전체 기능 테스트 완료

## 📚 참고 자료 및 기타
<!-- 참고한 자료, 또는 논의할 사항이 있다면 알려주세요! -->

Reviewed-on: #51
Co-authored-by: pricelees <priceelees@gmail.com>
Co-committed-by: pricelees <priceelees@gmail.com>
2025-10-02 01:13:07 +00:00
97c3e1598c [#48] Tosspay mocking 서버 구현을 위한 멀티모듈 전환 (#49)
<!-- 제목 양식 -->
<!-- [이슈번호] 작업 요약 (예시: [#10] Gitea 템플릿 생성) -->

## 📝 관련 이슈 및 PR

**PR과 관련된 이슈 번호**
- #48

##  작업 내용
<!-- 어떤 작업을 했는지 알려주세요! -->
- Tosspay mocking 서버를 해당 프로젝트 내 구현할 때 각 서비스간 구분이 수월하도록 모듈 분리
- 분리하는 과정에서 추후 공통적으로 활용될 수 있다고 판단한 기능들은 common 모듈로 분리
- 일부 테스트 보완

## 🧪 테스트
<!-- 어떤 테스트를 생각했고 진행했는지 알려주세요! -->
<img width="612" alt="스크린샷 2025-09-29 22.05.25.png" src="attachments/d401a48a-3dd5-4ced-9315-b9d8aff16bf9">

- 전체 테스트 후 클래스 커버리지 기준 100% 달성 확인

## 📚 참고 자료 및 기타
<!-- 참고한 자료, 또는 논의할 사항이 있다면 알려주세요! -->

Reviewed-on: #49
Co-authored-by: pricelees <priceelees@gmail.com>
Co-committed-by: pricelees <priceelees@gmail.com>
2025-09-30 00:39:13 +00:00