Skip to content

[FEAT] 부스 예약 : QR 발급 실패 시 승인 롤백 보상 처리 구현#27

Open
dldusgh318 wants to merge 4 commits into
mainfrom
feat/qr-failure-rollback
Open

[FEAT] 부스 예약 : QR 발급 실패 시 승인 롤백 보상 처리 구현#27
dldusgh318 wants to merge 4 commits into
mainfrom
feat/qr-failure-rollback

Conversation

@dldusgh318
Copy link
Copy Markdown
Owner

@dldusgh318 dldusgh318 commented May 26, 2026

‼️ 관련 이슈

close #8


🔎 개요

부스 예약 QR 발급 실패 시 승인 상태를 보상 처리하고, 관리자/사용자 화면에서 실패 상태와 재처리 동선을 확인할 수 있도록 구현했습니다.


📝 작업 내용

  • QR 발급 실패 시 예약 상태를 QR_FAILED로 전환하도록 구현
  • QR 발급 실패 시 승인 보상 처리 결과를 응답에 포함
  • 관리자 예약 승인 화면에서 QR 발급 실패 시뮬레이션 및 재승인 동선 구현
  • 사용자 부스 예약 현황에서 QR 발급 실패 상태와 재승인 안내 표시
  • 예약 조회를 로그인 계정 기준으로 변경
  • 일반 회원가입은 USER만 생성하도록 수정
  • 관리자 가입 API와 /admin/signup 화면 분리
  • CORS 설정을 Spring Security 체인에 연결
  • JWT 로컬 개발 기본 secret 및 짧은 secret 보정 처리 추가
  • QR 실패/보상 처리 및 계정별 예약 조회 관련 테스트 보강

👀 변경 사항

  • 일반 회원가입 화면에서는 더 이상 관리자 역할을 선택하지 않습니다.
  • 관리자 계정은 /admin/signup에서 생성합니다.
  • 부스 예약 신청/조회는 로그인 사용자 본인 기준으로 동작합니다.
  • 다른 사용자 applicantId로 예약 조회 또는 신청 시 백엔드에서 403을 반환합니다.
  • 관리자 예약 승인 API는 기존처럼 관리자 권한이 필요합니다.

📸 스크린샷 (Optional)

  • 관리자 가입 화면: /admin/signup
스크린샷 2026-05-26 16 58 18
  • qr 발급 실패 시, 보상 트랜잭션 처리
스크린샷 2026-05-26 16 54 05 스크린샷 2026-05-26 16 53 37 스크린샷 2026-05-26 16 53 35 스크린샷 2026-05-26 16 53 25 998d6" />

@dldusgh318 dldusgh318 added this to the 부스 예약 기능 milestone May 26, 2026
@dldusgh318 dldusgh318 self-assigned this May 26, 2026
@dldusgh318 dldusgh318 added the enhancement New feature or request label May 26, 2026
Copy link
Copy Markdown
Collaborator

@boogiewooki02 boogiewooki02 left a comment

Choose a reason for hiding this comment

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

고생하셨습니다! 코드리뷰 두 가지만 확인 부탁드립니다!

.permitAll()
.requestMatchers("/api/auth/signup", "/api/auth/login", "/api/health")
.permitAll()
.requestMatchers("/api/admin/auth/signup")
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

/api/admin/auth/signuppermitAll()로 열려 있어서 URL만 알면 누구나
ADMIN 계정을 만들 수 있습니다. 일반 회원가입에서 관리자 선택을 제거했더라도,
이 공개 API로 관리자 권한을 발급받을 수 있어 /api/admin/** 보호가 무력화될
수 있습니다.

관리자 가입은 기존 관리자 권한 필요, 초대 토큰 검증, 로컬/개발 프로필 전용
등 별도 제한을 두는 게 안전해 보입니다.

"/api/map-locations",
"/api/map-locations/**")
.permitAll()
.requestMatchers(HttpMethod.GET, "/api/booth-reservations/*")
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

PR 설명에는 예약 조회를 로그인 계정 기준으로 변경했다고 되어 있는데, 단건 예
약 조회 GET /api/booth-reservations/{reservationId}는 여전히 공개 접근 가
능합니다. 응답에 신청자명, 부스, 테이블 수, 상태, QR 정보가 포함되므로
reservationId를 알면 타인의 예약 정보를 볼 수 있습니다.

QR 스캔 확인 화면 때문에 공개 조회가 의도라면 PR 설명과 API 책임을 명확히 분
리하는 게 좋고, 아니라면 단건 조회도 인증 후 본인 예약 또는 관리자만 조회 가
능하도록 제한하는 게 맞아 보입니다.

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.

[FEAT] 부스 예약 : QR 발급 실패 시 승인 롤백 보상 처리 구현

2 participants