Skip to content

[FIX] Swagger 갱신 — 정산/환불/다운로드 흐름 변경 사항 반영 + 라우터 마운트 순서 정정 #494

@minij02

Description

@minij02

✨ 기능 설명

3개 에이전트 교차 검증 결과, 최근 PR(#470/#473/#479/#482/#485/#488/#492)을 거치며 코드는 변경됐으나 Swagger/응답 스키마/라우터 마운트가 따라가지 못한 항목 다수 발견. CRITICAL/HIGH 위주로 한 PR에 묶되 커밋을 항목별로 분리해서 리뷰가 용이하도록 진행.

✨ 개발 목록 (커밋 분리)

Commit 1 — refundRouter 마운트 순서/prefix 정정 (CRITICAL)

  • src/index.ts:139-155에서 refundRouterpurchaseRouter보다 먼저 /api/prompts/purchases에 마운트되어 path 충돌 위험
  • 권장: refundRouter를 별도 prefix(/api/refunds)로 분리하거나, purchaseRouter 뒤로 배치
  • Swagger 본 path도 그에 맞춰 정정 (refund.route.ts:61, 101)

Commit 2 — prompt.download.route.ts Swagger 전면 재작성 (CRITICAL)

  • 응답 schema가 실제 코드와 완전 불일치 (PromptContent 명세 vs 실제 {message, title, prompt, is_free, is_paid, statusCode})
  • GET /:promptId/downloads403 Refunded 응답 추가
  • 첫 다운로드 시 Purchase.downloaded_at 기록되는 부작용 설명 추가
  • GET /downloads (구매 목록) Swagger 신규 작성 — JSDoc 자체 부재

Commit 3 — /pending-amount stale 멘트 정정 (CRITICAL)

  • settlement.route.ts:502-530⚠️ "Settlement.status를 'Succeed'로 업데이트하는 흐름이 없어서..." 제거
  • 실제 동기화 동작(KST 08:00 cron) 설명으로 교체

Commit 4 — Status enum의 Refunded 누락 응답들에 반영 (HIGH)

  • purchase.route.ts:155 complete 응답 enum에 Refunded 추가
  • purchase 결제내역 응답에 status/refunded_at 표시 (환불건 구분 가능하도록)
  • admin/통계 응답 곳곳 enum 명세 점검

Commit 5 — register/individual & register/business Swagger에 subCode 응답 추가 (HIGH)

  • settlement.route.ts:280-316, 410-438 응답에 AccountVerificationError subCode 응답 schema 추가
  • (verify-account에는 이미 11종 subCode 명세 있음 — 일관성 맞추기)

Commit 6 — admin-seller 응답에 status + 환불 표시 (HIGH)

  • admin-seller 상세 응답 DTO에 status 필드 추가 (APPROVED/PENDING/REJECTED)
  • 환불 정보 노출 정책 (관리자 화면에서 환불 거래 식별)
  • business_number 마스킹 정책 일관 적용 (현재 /account/detail에만 적용)

Commit 7 — 검증

  • pnpm build / pnpm tsc --noEmit
  • swagger.json 정상 생성 확인

✨ 별도 이슈로 분리 (기존 부채)

  • withdrawals 라우트 Swagger 전체 부재
  • announcements 라우트 Swagger 부재
  • members/tips/inquiries 일부 endpoint Swagger 누락
  • auth/logout HTTP 메서드 일관성
  • prisma select 강제로 PII 회귀 방지 가이드

✨ 기타 / 질문

Metadata

Metadata

Assignees

Labels

fixfixing codes

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions