Skip to content

Main to Develop#438

Merged
Pridesd merged 14 commits into
mainfrom
develop
Mar 31, 2026
Merged

Main to Develop#438
Pridesd merged 14 commits into
mainfrom
develop

Conversation

@Pridesd

@Pridesd Pridesd commented Mar 31, 2026

Copy link
Copy Markdown
Member

Summary by CodeRabbit

릴리스 노트

  • 새로운 기능

    • TossPayments 결제 웹훅 통합 및 결제 완료 SMS 알림 시스템 추가
    • API 문서 자동 생성 및 보안 명세 개선
  • 개선 사항

    • 비동기 작업 처리 및 외부 결제·SMS 서비스 연동 구성 추가
    • 관리자 및 사용자 API 엔드포인트 명세 상세화

@Pridesd Pridesd self-assigned this Mar 31, 2026
@coderabbitai

coderabbitai Bot commented Mar 31, 2026

Copy link
Copy Markdown

Caution

Review failed

Pull request was closed or merged during review

Walkthrough

이 PR은 광범위한 Swagger/OpenAPI 문서화 주석을 추가하고, TossPayments 웹훅 결제 알림 기능과 CoolSMS 비동기 알림 서비스를 신규 구현하며, 관련 설정 파일과 테스트 클래스를 추가합니다.

Changes

코호트 / 파일(s) 요약
Admin 컨트롤러 Swagger 메타데이터
run/src/main/java/com/guide/run/admin/controller/Admin*Controller.java
클래스 레벨 @Tag, @SecurityRequirement 및 각 엔드포인트의 @Operation 주석 추가. 기능 변경 없음.
Event 컨트롤러 Swagger 메타데이터
run/src/main/java/com/guide/run/event/controller/Event*Controller.java
클래스 레벨 @Tag, @SecurityRequirement 및 엔드포인트의 @Operation, @Parameter 주석 추가. OAuth 파라미터 바인딩 개선 (@RequestParam("code")). 기능 변경 없음.
Admin/Event DTO Swagger 메타데이터
run/src/main/java/com/guide/run/admin/dto/..., run/src/main/java/com/guide/run/event/entity/dto/...
Request/Response DTO에 @Schema 주석 추가. 구조 변경 없음.
User 컨트롤러 Swagger 메타데이터
run/src/main/java/com/guide/run/user/controller/...*Controller.java
클래스 및 메서드 레벨 Swagger 주석 추가. UserInfoController 경로 수정 (api/user/info/all/api/user/info/all).
User DTO Swagger 메타데이터
run/src/main/java/com/guide/run/user/dto/...
Request/Response DTO에 @Schema 주석 추가. 구조 변경 없음.
Partner 컨트롤러 Swagger 메타데이터
run/src/main/java/com/guide/run/partner/controller/PartnerController.java
클래스 및 메서드 레벨 Swagger 주석 추가.
TossPayments 웹훅 구현
run/src/main/java/com/guide/run/global/webhook/tosspayments/...
신규: 웹훅 컨트롤러, 비동기 서비스, 주문 조회 서비스, DTO 클래스 추가. REST 호출을 통한 결제 정보 조회 및 조건부 SMS 발송 로직 포함.
CoolSMS 웹훅 서비스
run/src/main/java/com/guide/run/global/sms/cool/WebhookCoolSmsService.java
신규: CoolSMS를 통한 결제 완료 메시지 발송 서비스. 전화번호 정규화 및 메시지 템플릿 생성 로직.
글로벌 설정
run/src/main/java/com/guide/run/global/config/AsyncConfig.java, run/src/main/java/com/guide/run/global/config/SwaggerConfig.java, run/src/main/java/com/guide/run/global/security/config/SecurityConfig.java
AsyncConfig 신규 추가 (TossPayments 웹훅용 스레드풀). SwaggerConfig에서 API 그룹 분리 (admin/public). 웹훅 엔드포인트 보안 무시 규칙 추가.
애플리케이션 설정 파일
run/src/main/resources/application-*.yml
CoolSMS 웹훅 및 TossPayments 시크릿 키 설정 추가. local 환경 CORS 설정 구조 변경.
웹훅 테스트
run/src/test/java/com/guide/run/global/webhook/tosspayments/..., run/src/test/java/com/guide/run/global/sms/cool/...
신규: TossPayments 웹훅 컨트롤러, 서비스 테스트 및 CoolSMS 서비스 테스트 추가.
문서
run/docs/swagger-contract-gaps.md
신규: Swagger/API 구현 불일치 사항 문서화 (2개 항목).

Sequence Diagram(s)

sequenceDiagram
    actor Client
    participant Controller as TossPayments<br/>WebhookController
    participant AsyncService as TossPayments<br/>WebhookAsyncService
    participant OrderService as TossPayments<br/>OrderService
    participant SMSService as CoolSMS<br/>Service
    participant ExternalAPI as Toss Payments<br/>LinkPay API

    Client->>Controller: POST /webhook/tosspayments<br/>(eventType, paymentKey, orderId)
    Note over Controller: shouldProcess()를 통해<br/>이벤트 유형 및 상태 검증
    alt 검증 성공
        Controller->>AsyncService: processPaymentCompleted(paymentKey, orderId)<br/>@Async로 비동기 실행
        Note over AsyncService: 결제 정보 조회 및<br/>회비 결제 여부 확인
        AsyncService->>OrderService: getPaymentByOrderId(orderId)
        OrderService->>ExternalAPI: GET /orders/{orderId}<br/>(Authorization: Basic)
        ExternalAPI-->>OrderService: 고객정보 포함 응답 JSON
        Note over OrderService: JSON 파싱 및<br/>필드 추출 (여러 경로 시도)
        OrderService-->>AsyncService: TossPaymentCustomerInfo<br/>(customerName, customerPhone)
        alt 회비 결제 + 전화번호 존재
            AsyncService->>SMSService: sendPaymentCompletedMessage(phone, name)
            Note over SMSService: 전화번호 정규화 및<br/>메시지 템플릿 생성
            SMSService-->>AsyncService: 성공/실패 로그
        else 회비 결제 아님 또는<br/>전화번호 없음
            Note over AsyncService: SMS 발송 스킵
        end
    else 검증 실패
        Note over Controller: shouldProcess() 실패 시<br/>즉시 반환
    end
    Controller-->>Client: 200 OK<br/>(항상 성공 응답)
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

  • PR #435: swagger-contract-gaps.md 문서와 다수의 컨트롤러/DTO에 동일한 Swagger 주석 추가.
  • PR #436: Swagger/OpenAPI 문서화 변경, API 그룹 분리, bearerAuth 등록을 동일하게 수행.
  • PR #414: EventGetController의 cityName 파라미터 관련 변경으로 일부 파일 중복.

Suggested reviewers

  • 2ralumin
  • JaeGeon-SMU

Poem

🐰 어라, 문서화가 한가득!
Swagger 주석이 반짝반짝
TossPayments 웹훅도 추가되고
CoolSMS로 알림도 쏙쏙
비동기로 부드럽게 처리하네
이제야 API가 완벽히 보인다!

🚥 Pre-merge checks | ✅ 1 | ❌ 2

❌ Failed checks (2 warnings)

Check name Status Explanation Resolution
Title check ⚠️ Warning PR 제목 'Main to Develop'는 브랜치 병합 방향만 나타낼 뿐 실제 변경 사항의 핵심을 설명하지 않습니다. PR 제목을 변경하여 주요 변경 사항을 명확하게 반영하십시오. 예: 'Add Swagger documentation and TossPayments webhook integration' 같은 구체적인 설명으로 변경하세요.
Docstring Coverage ⚠️ Warning Docstring coverage is 14.29% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (1 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.

✏️ 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 develop

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.

@Pridesd Pridesd merged commit 3f2a3ae into main Mar 31, 2026
1 of 2 checks passed
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