Skip to content

Dev#56

Merged
loveletheart merged 144 commits into
mainfrom
dev
May 20, 2026
Merged

Dev#56
loveletheart merged 144 commits into
mainfrom
dev

Conversation

@loveletheart

@loveletheart loveletheart commented May 20, 2026

Copy link
Copy Markdown
Contributor

작업 배경

  • main 으로 작업내용물 병합

Summary by CodeRabbit

릴리스 노트

  • New Features

    • 예약 서비스 REST API 추가 (생성, 조회, 상태 변경, 취소 등)
    • 실시간 캐싱 및 동시성 제어 기능
    • 자동 예약 만료 스케줄러
    • Kafka 기반 이벤트 처리 및 발행
    • 예약 이력 추적 기능
  • Infrastructure

    • Docker 및 Docker Compose 멀티환경 지원 (로컬/운영)
    • GitHub Actions 자동 배포 워크플로우
    • Redis 캐싱 및 분산 락 설정
    • 로그 수집(Promtail) 통합
  • Documentation

    • 상세한 README 및 설치 가이드

Review Change Stack

loveletheart and others added 30 commits April 25, 2026 23:00
* feat : reservation 엔티티 및 vo 설정
- ReservationCandidate과 Reservation의 엔티티 설정 및 관련 vo 작성
- 관련 에러 코드 ReservationErrorCode에 작성 완료

* fix : reservation,ReservationCandidate 엔티티 변경
- PENDING가 아니라면 어떠한 상태 변경도 금지
- 낙관적 락을 위한 버전 추가(추후 분산 락으로 수정 할 필요 있는지 고민 필요)
- ReservationCandidate에 생성,선정,취소시 검증 로직 추가

* fix : reservation 엔티티 변경
- cancelInfo필드 삭제(추후 reservation_history 부분 추가시 해당 테이블에 작성 예정

* fix : reservation,reservationCandidate 검증 로직 변경
- reservationCandidate에서 후보자 선정시 검증 로직 추가
- reservation에서 예약 생성시 검증 로직 추가
- reservation에서 순번 구매자 교체시 검증 로직 추가

* fix : reservation 검증 로직 변경
- 예약 후보자에 get,add,remove부분 추가하여 양뱡향 동기화 작업 설정
- 다음 순번자 교체시 검사 로직 부분 추가

* fix : reservation 누락 부분 추가
* feat: 예약 생성 기능 생성

* fix : coderabbitai 코멘트 보안
- ReservationRepositoryImpl 부분 추가
- userId 부분 string -> uuid로 수정
- ReservationResponse에서 ReservationCreateResult를 받아오도록 수정
- ReservationDomainService에서 검증 로직은 분리

* fix : coderabbitai 코멘트 보안
- ReservationValidator에서 id값이 null이 아닌지 체크하도록 수정
* fix : 예약 검색 기능 추가 및 빌드 파일 제거

* Update src/main/java/org/pgsg/reservation/infrastructure/repository/ReservationRepositoryImpl.java

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Refactor product, seller, and buyer name retrieval

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
- ReservationCandidateStatus 와 ReservationStatus 내용 반대로 변경
- 결재 완료 paid 상태 추가 및 검증 로직 작성
예약 상태 세분화
* feat : 예약 검색 기능 추가 (#6)

* fix : 예약 검색 기능 추가 및 빌드 파일 제거

* Update src/main/java/org/pgsg/reservation/infrastructure/repository/ReservationRepositoryImpl.java

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Refactor product, seller, and buyer name retrieval

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* fix : 상태 파일 추가 및 변경
- ReservationCandidateStatus 와 ReservationStatus 내용 반대로 변경
- 결재 완료 paid 상태 추가 및 검증 로직 작성

* feat : 상세 검색 기능 추가
- common 파일 업데이트

* feat : 상세 검색 기능 추가
- common 파일 업데이트

* fix : 버그 수정
- common 파일 업데이트
-  common에 build.gradle에서 annotationProcessor 'io.github.openfeign.querydsl:querydsl-apt:6.8:jpa' 추가

* fix : 코드 래빗 제안 수정
- 도메인이 application에 dto 의존 변경
- 검색에서 trim한 값 사용
- response 필드명 불일치 수정

* fix : 코드 래빗 제안 수정
- 권한 검증 로직 추가

* fix : 코드 래빗 제안 수정
- 권한 검증 로직 추가

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
* fit : 상태 pr 다시 추가

* feat : 예약 신청 기능 추가
- 예약 신청 및 후보자 저장
- 도메인 서비스에서 첫 번째 후보자라면 바로 저장

* fix : 오타 수정

* fix : 코드 래빗 수정 사항 반영
- saveAndFlush()를 사용하여 dto 매핑 전 id 생성 보장

* fix : 코드 래빗 수정 사항 반영
- 엔티티 유니크 제약 조건 변경 candidateNickname -> candidateId

* fix : 코드 래빗 수정 사항 반영
- 첫번째 후보자인지 확인하는 로직 추가

* fix : 코드 래빗 수정 사항 반영
- 예약 신청 X-User-Nickname로 이름 변경

* fix : 현빈님 제안 사항 반영
- cancel부분에 데이터 일관성을 위해 후보 리스트 제거 로직 반영

* fix : 코드래빗 제안 사항 반영
- 레이스 컨디션 문제 해결 로직 작성

* fix : 코드래빗 제안 사항 반영
- 레이스 컨디션 문제 해결 로직 작성
* feat : reservationhistory vo 및 엔티티 추가

* feat : 예약 취소 기능 구현
- 판매자,구매자에 따라 상품 상태 변경
- 뭐가 되든 간에 예약 관리 작성
- infrastructure Reservation폴더 분리

* Update src/main/java/org/pgsg/reservation/domain/model/reservationhistory/ReservationHistory.java

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Update src/main/java/org/pgsg/reservation/domain/model/reservationhistory/ReservationHistory.java

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* fix : 코드 래빗 제안 수정
- 대기자가 없으면 예약이 다시 안열리는 문제 수정

* fix : 코드 래빗 제안 수정
- NPE 방어 로직 작성

* fix : 코드 래빗 제안 수정
- 취소 사유 검증 로직 추가

* fix : 구매자,판매자 로직 분리

* fix : 코드래빗 제안 수정
- ReservationCancelInfo로 파라미터 타입 명시

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
* feat : 예약 만료
- 예약 만료 구현
- 관리자만 수정이 가능하도록 작성

* feat : 예약 만료 자동 스케줄링
- ReservationStatus가 PENDING,PAID으로 업데이트 된 이후 상태가 변경이 없다면 1시간 후 자동 상태 변경

* fix : 코드래빗 제안 사안 수정
- 사유 누락 확인 및 관리자 전용 제약을 도메인에서 명시적으로 강제

* fix : 코드래빗 제안 사안 수정
- 사용되지 않고 존재하지 않는 필드를 참조하는 메서드 삭제

* fix : 코드래빗 제안 사안 수정
- 대상 건수가 많아지면 락 유지 시간/메모리 부담으로 인하여  서비스 계층에서 건별 트랜잭션 처리
- 지연 로딩 에러해결을 위해 해당 조회 메서드에만 readOnly = true 트랜잭션 처리

* fix : 코드래빗 제안 사안 수정
- 입력 누락 시 전체 조회로 확장되는 경로를 차단
- PAID를 명시 분기하고 나머지는 예외 처리
* feat : 예약 만료 구현
- 예약 만료 기능 구현

* fix : 코드래빗 제안 수정
- 권한 검증 로직 추가
- 유레카 서버 아직 작동전으로 추후 yml파일 설정 변경 필요
* Feat : Kafka 설정 및 예약 완료 부분 작성

* Feat : Kafka docker 연동

* Fix : 카프카 이벤트 발송 확인

* Fix : 현빈님 제안 사항 수정
- OutboxEvent 추가
- common파일 github에서 연결

* Fix : RequestHeader로 통일

* Fix : 코드 래빗 제안 수정
- SSL 인증서 ro로 변경(읽기 전용)

* Fix : kafka 발송 확인

* Fix : 코드래빗 제안 수정
* Feat : 예약 생성 개념 변경
- 기존 예약 생성 삭제 및 리뉴얼

* Fix : 데이터 저장 오류 수정

* Fix : 코드래빗 제안 수정
- non-root 사용자를 추가

* Fix : 코드래빗 제안 수정
- 중복 체크와 저장이 원자적이지 않아 동시 요청에서 중복 생성 문제 해결

* Fix : 코드래빗 제안 수정
- 중복 이벤트 처리

* Fix : 코드래빗 제안 수정
- 중복 생성 방지 처리

* Fix : 코드래빗 제안 수정
- endTime은 null을 불가처리
* Feat : 결제 완료 기능 추가
- 결재 완료 상태로 변경

* fix : 코드 래빗 제안 수정
- 멱등성 처리 추가

* fix : 코드 래빗 제안 수정
- SYSTEM도 가능하게 수정
* refactor : 컨트롤러 응답 통일화

* refactor : ReservationCreateCommand 수정

* refactor : confirmPayment에서 에러시 id값만 보이게 수정

* refactor : confirmTrade command로 받게 수정

* refactor : role -> roles로 변경
@loveletheart loveletheart merged commit 0dfeb22 into main May 20, 2026
2 of 3 checks passed
@loveletheart loveletheart deleted the dev branch May 20, 2026 06:13
@coderabbitai

coderabbitai Bot commented May 20, 2026

Copy link
Copy Markdown
Contributor

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 385e4729-3e19-4d87-994f-5f8ce09c936a

📥 Commits

Reviewing files that changed from the base of the PR and between 86dd89c and 4ced95c.

⛔ Files ignored due to path filters (10)
  • .gradle/9.0.0/checksums/checksums.lock is excluded by !**/*.lock
  • .gradle/9.0.0/checksums/md5-checksums.bin is excluded by !**/*.bin
  • .gradle/9.0.0/checksums/sha1-checksums.bin is excluded by !**/*.bin
  • .gradle/9.0.0/executionHistory/executionHistory.bin is excluded by !**/*.bin
  • .gradle/9.0.0/executionHistory/executionHistory.lock is excluded by !**/*.lock
  • .gradle/9.0.0/fileChanges/last-build.bin is excluded by !**/*.bin
  • .gradle/9.0.0/fileHashes/fileHashes.bin is excluded by !**/*.bin
  • .gradle/9.0.0/fileHashes/fileHashes.lock is excluded by !**/*.lock
  • .gradle/buildOutputCleanup/buildOutputCleanup.lock is excluded by !**/*.lock
  • .gradle/buildOutputCleanup/outputFiles.bin is excluded by !**/*.bin
📒 Files selected for processing (90)
  • .dockerignore
  • .github/workflows/deploy.yml
  • .gitignore
  • .gradle/9.0.0/gc.properties
  • .gradle/buildOutputCleanup/cache.properties
  • .gradle/file-system.probe
  • .gradle/vcs-1/gc.properties
  • .idea/.gitignore
  • .idea/compiler.xml
  • .idea/gradle.xml
  • .idea/misc.xml
  • .idea/reservation-service.iml
  • .idea/vcs.xml
  • Dockerfile
  • README.md
  • build.gradle
  • build/reports/problems/problems-report.html
  • deploy/docker-compose.prod.yaml
  • deploy/promtail-config.yml
  • docker-compose.local.yml
  • docker-compose.yml
  • gradle/wrapper/gradle-wrapper.properties
  • libs/common
  • qodana.yaml
  • settings.gradle
  • src/main/java/org/pgsg/reservation/ReservationServiceApplication.java
  • src/main/java/org/pgsg/reservation/application/dto/command/ReservationApplyCommand.java
  • src/main/java/org/pgsg/reservation/application/dto/command/ReservationCancelCommand.java
  • src/main/java/org/pgsg/reservation/application/dto/command/ReservationConfirmCommand.java
  • src/main/java/org/pgsg/reservation/application/dto/command/ReservationCreateCommand.java
  • src/main/java/org/pgsg/reservation/application/dto/command/ReservationExpireCommand.java
  • src/main/java/org/pgsg/reservation/application/dto/event/ReservationCancelledEvent.java
  • src/main/java/org/pgsg/reservation/application/dto/event/ReservationCompletedEvent.java
  • src/main/java/org/pgsg/reservation/application/dto/event/ReservationFailedEvent.java
  • src/main/java/org/pgsg/reservation/application/dto/info/ReservationCandidateInfo.java
  • src/main/java/org/pgsg/reservation/application/dto/info/ReservationStateInfo.java
  • src/main/java/org/pgsg/reservation/application/dto/query/ReservationSearchQuery.java
  • src/main/java/org/pgsg/reservation/application/dto/result/CustomPage.java
  • src/main/java/org/pgsg/reservation/application/dto/result/ReservationCreateResult.java
  • src/main/java/org/pgsg/reservation/application/dto/result/ReservationDetailResult.java
  • src/main/java/org/pgsg/reservation/application/dto/result/ReservationSearchResult.java
  • src/main/java/org/pgsg/reservation/application/service/ReservationService.java
  • src/main/java/org/pgsg/reservation/domain/dto/ReservationSearchCriteria.java
  • src/main/java/org/pgsg/reservation/domain/exception/ReservationErrorCode.java
  • src/main/java/org/pgsg/reservation/domain/exception/ReservationException.java
  • src/main/java/org/pgsg/reservation/domain/exception/ReservationExceptionHandler.java
  • src/main/java/org/pgsg/reservation/domain/model/reservation/BuyerInfo.java
  • src/main/java/org/pgsg/reservation/domain/model/reservation/ProductInfo.java
  • src/main/java/org/pgsg/reservation/domain/model/reservation/Reservation.java
  • src/main/java/org/pgsg/reservation/domain/model/reservation/ReservationStatus.java
  • src/main/java/org/pgsg/reservation/domain/model/reservation/SearchPolicy.java
  • src/main/java/org/pgsg/reservation/domain/model/reservation/SellerInfo.java
  • src/main/java/org/pgsg/reservation/domain/model/reservationcandidate/ReservationCandidate.java
  • src/main/java/org/pgsg/reservation/domain/model/reservationcandidate/ReservationCandidateStatus.java
  • src/main/java/org/pgsg/reservation/domain/model/reservationhistory/ReservationHistory.java
  • src/main/java/org/pgsg/reservation/domain/repository/ReservationHistoryRepository.java
  • src/main/java/org/pgsg/reservation/domain/repository/ReservationRepository.java
  • src/main/java/org/pgsg/reservation/domain/service/ReservationDomainService.java
  • src/main/java/org/pgsg/reservation/domain/service/ReservationValidator.java
  • src/main/java/org/pgsg/reservation/infrastructure/config/OutboxConfig.java
  • src/main/java/org/pgsg/reservation/infrastructure/config/QuerydslConfig.java
  • src/main/java/org/pgsg/reservation/infrastructure/config/RedisConfig.java
  • src/main/java/org/pgsg/reservation/infrastructure/config/RedissonConfig.java
  • src/main/java/org/pgsg/reservation/infrastructure/config/ReservationSecurityConfig.java
  • src/main/java/org/pgsg/reservation/infrastructure/event/ReservationEventBridge.java
  • src/main/java/org/pgsg/reservation/infrastructure/listener/ProductListener.java
  • src/main/java/org/pgsg/reservation/infrastructure/listener/ReservationEventListener.java
  • src/main/java/org/pgsg/reservation/infrastructure/listener/dto/ReservationEventPublisher.java
  • src/main/java/org/pgsg/reservation/infrastructure/listener/dto/TimeDealProductEvent.java
  • src/main/java/org/pgsg/reservation/infrastructure/listener/dto/TradeCompletedEvent.java
  • src/main/java/org/pgsg/reservation/infrastructure/repository/MyReservationOutboxRepository.java
  • src/main/java/org/pgsg/reservation/infrastructure/repository/reservation/JpaReservationRepository.java
  • src/main/java/org/pgsg/reservation/infrastructure/repository/reservation/ReservationRepositoryImpl.java
  • src/main/java/org/pgsg/reservation/infrastructure/repository/reservationhistory/JpaReservationHistoryRepository.java
  • src/main/java/org/pgsg/reservation/infrastructure/repository/reservationhistory/ReservationHistoryRepositoryImpl.java
  • src/main/java/org/pgsg/reservation/infrastructure/scheduler/ReservationExpiryScheduler.java
  • src/main/java/org/pgsg/reservation/presentation/controller/ReservationController.java
  • src/main/java/org/pgsg/reservation/presentation/dto/request/ReservationAdminCancelRequest.java
  • src/main/java/org/pgsg/reservation/presentation/dto/request/ReservationCancelRequest.java
  • src/main/java/org/pgsg/reservation/presentation/dto/request/ReservationCreateRequest.java
  • src/main/java/org/pgsg/reservation/presentation/dto/request/ReservationSearchRequest.java
  • src/main/java/org/pgsg/reservation/presentation/dto/response/ReservationCandidateResponse.java
  • src/main/java/org/pgsg/reservation/presentation/dto/response/ReservationDetailResponse.java
  • src/main/java/org/pgsg/reservation/presentation/dto/response/ReservationPageResponse.java
  • src/main/java/org/pgsg/reservation/presentation/dto/response/ReservationResponse.java
  • src/main/java/org/pgsg/reservation/presentation/dto/response/ReservationStateResponse.java
  • src/main/java/org/pgsg/reservation/presentation/facade/ReservationFacade.java
  • src/main/resources/application-reservation-error.yml
  • src/main/resources/application.yml
  • src/main/resources/ssl/kafka.server.truststore.jks

📝 Walkthrough

워크스루

예약 서비스의 전체 구현으로, 도메인 모델부터 REST API, 이벤트 처리, 배포 자동화까지 완전한 기능을 추가합니다. 예약 생성, 후보자 관리, 상태 전환(결제, 완료, 취소), 분산 락 기반 동시성 제어, Kafka 기반 이벤트 발행/구독, Redis 캐싱이 포함됩니다.

변경사항

예약 서비스 핵심 기능

Layer / File(s) Summary
도메인 모델 및 상태 정의
src/main/java/org/pgsg/reservation/domain/model/reservation/*, src/main/java/org/pgsg/reservation/domain/model/reservationcandidate/*, src/main/java/org/pgsg/reservation/domain/model/reservationhistory/*
JPA 엔티티 Reservation, ReservationCandidate, ReservationHistory와 임베더블 값 객체 BuyerInfo, ProductInfo, SellerInfo를 정의합니다. ReservationStatus, ReservationCandidateStatus 상태 열거형, 검색 정책 및 검색 기준 DTO가 추가됩니다.
도메인 서비스 및 검증
src/main/java/org/pgsg/reservation/domain/service/ReservationDomainService.java, src/main/java/org/pgsg/reservation/domain/service/ReservationValidator.java
예약 생성, 후보자 추가, 상태 전환(취소, 완료, 확정), 권한 검증, 다음 구매자 승계를 담당하는 도메인 서비스입니다. 입력 검증, 권한 검증, 상태 검증을 전담하는 검증자 컴포넌트가 포함됩니다.
애플리케이션 서비스 및 DTO
src/main/java/org/pgsg/reservation/application/service/ReservationService.java, src/main/java/org/pgsg/reservation/application/dto/command/*, src/main/java/org/pgsg/reservation/application/dto/result/*
ReservationService가 도메인 로직을 조율하고 캐싱 및 이벤트 발행을 관리합니다. 커맨드 패턴 DTO(ReservationCreateCommand, ReservationApplyCommand, ReservationCancelCommand 등)와 결과 DTO(ReservationCreateResult, ReservationDetailResult, ReservationSearchResult)가 정의됩니다.
REST API 컨트롤러
src/main/java/org/pgsg/reservation/presentation/controller/ReservationController.java, src/main/java/org/pgsg/reservation/presentation/dto/request/*, src/main/java/org/pgsg/reservation/presentation/dto/response/*
9개의 예약 관련 엔드포인트(생성, 조회, 신청, 취소, 결제, 완료, 확정)를 제공합니다. 요청/응답 DTO와 페이지 응답 처리가 포함됩니다.
분산 락 및 동시성 제어
src/main/java/org/pgsg/reservation/presentation/facade/ReservationFacade.java, src/main/java/org/pgsg/reservation/infrastructure/config/RedissonConfig.java
Redisson 기반 분산 락으로 예약 신청 시 동시성을 제어하는 Facade 패턴입니다. 락 획득 실패 시 RESERVATION_BUSY 예외를 발생시킵니다.
저장소 및 QueryDSL 쿼리
src/main/java/org/pgsg/reservation/infrastructure/repository/reservation/*, src/main/java/org/pgsg/reservation/infrastructure/repository/reservationhistory/*
JPA와 QueryDSL을 조합한 유연한 조회 구현입니다. 동적 검색 조건(판매자/구매자/상품명, 상태, 상품 ID), 페이징, 만료 예약 조회 등을 지원합니다.
Kafka 이벤트 처리 및 Outbox
src/main/java/org/pgsg/reservation/infrastructure/listener/*, src/main/java/org/pgsg/reservation/infrastructure/event/ReservationEventBridge.java
상품 생성 이벤트 수신(ProductListener)과 거래 완료 이벤트 수신(ReservationEventListener)을 처리합니다. 예약 완료/취소 이벤트는 Outbox 패턴으로 발행됩니다.
자동 만료 스케줄러
src/main/java/org/pgsg/reservation/infrastructure/scheduler/ReservationExpiryScheduler.java
매 분 만료 대상 예약(수정 60분 이상 경과, 상품 종료 시간 초과)을 조회하여 자동 종료 처리합니다.
Redis 캐싱 및 인프라 설정
src/main/java/org/pgsg/reservation/infrastructure/config/RedisConfig.java, src/main/java/org/pgsg/reservation/infrastructure/config/QuerydslConfig.java, src/main/java/org/pgsg/reservation/infrastructure/config/OutboxConfig.java
Redis 기반 캐싱(1일 기본, 예약 목록 3초 TTL), QueryDSL 팩토리, Outbox 서비스 설정이 구성됩니다.
예외 처리 및 에러 코드
src/main/java/org/pgsg/reservation/domain/exception/*, src/main/resources/application-reservation-error.yml
예약 도메인 에러 코드(R001~R011)와 전역 예외 핸들러가 일관된 에러 응답을 제공합니다. 검증, 권한, 충돌, 분산 락 예외가 포함됩니다.

배포 및 인프라 설정

Layer / File(s) Summary
Docker 이미지 빌드
Dockerfile
멀티 스테이지 빌드로 GPR 시크릿을 통한 의존성 인증 및 JRE 최적화 실행 환경을 구성합니다.
로컬/운영 Docker Compose
docker-compose.yml, docker-compose.local.yml, deploy/docker-compose.prod.yaml, deploy/promtail-config.yml
로컬 개발, 기본 Compose, 운영 환경용 설정으로 예약 서비스, PostgreSQL, Redis, Promtail을 통합합니다.
GitHub Actions 배포 파이프라인
.github/workflows/deploy.yml
GCP 인증, Artifact Registry 푸시, VM 상태 확인, SSH/IAP 터널 기반 원격 배포, 헬스 체크 자동화를 구현합니다.
빌드 설정 및 의존성
build.gradle, gradle/wrapper/gradle-wrapper.properties, settings.gradle
Java 21 툴체인, GitHub Packages 레포지토리, Spring Cloud 2025.0.2 BOM, Querydsl 설정이 추가됩니다.
환경 및 무시 규칙
.dockerignore, .gitignore, .gradle/buildOutputCleanup/cache.properties, .idea/*
빌드 컨텍스트 최적화, Git 버전 관리, IDE 설정 정리가 수행됩니다.

설정 및 문서

Layer / File(s) Summary
Spring 애플리케이션 설정
src/main/resources/application.yml, src/main/resources/application-reservation-error.yml, src/main/java/org/pgsg/reservation/ReservationServiceApplication.java
서버 포트, 데이터베이스, Kafka, Redis, JWT, Eureka, 로깅, 토픽이 환경 변수 기반으로 구성됩니다. 예약 에러 코드 매핑과 애플리케이션 부트스트랩이 포함됩니다.
프로젝트 문서
README.md, qodana.yaml
예약 서비스 개요, 기술 스택, 프로젝트 구조, 설정, REST API 명세, 이벤트 흐름, 배포 방법, 테스트 가이드가 작성됩니다. Qodana 코드 분석 설정이 추가됩니다.

🎯 4 (Complex) | ⏱️ ~60 minutes

관련 PR

제안 레이블

enhancement

제안 검토자

HyeonBin2379

🐰 예약의 길을 열고
후보들의 춤을 추며
상태는 굽이굽이 변하고
락이 떨어지는 순간,
가장 먼저 온 자가 바뀐다! 🎪✨

✨ 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 dev

@loveletheart loveletheart restored the dev branch May 20, 2026 06:14
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.

1 participant