Skip to content

[FEAT] 구매/정산 - 결제내역 환불 표시 + 월별 판매내역 페이지네이션 (#497)#498

Merged
minij02 merged 3 commits into
developfrom
feat/#497
May 23, 2026
Merged

[FEAT] 구매/정산 - 결제내역 환불 표시 + 월별 판매내역 페이지네이션 (#497)#498
minij02 merged 3 commits into
developfrom
feat/#497

Conversation

@minij02
Copy link
Copy Markdown
Collaborator

@minij02 minij02 commented May 23, 2026

Summary

정산/구매 통계 UX 보완 두 가지. 커밋 분리.

커밋

# 커밋 내용
1 c062c78 결제내역 응답에 환불 정보(status/refunded_at) 추가
2 d366507 purchase.route.ts 이중 별표 인덴트 정정 (직전 커밋 follow-up)
3 0411cfc /sales/monthly 페이지네이션 + summary를 월 전체 합계로 정합화

핵심 변경

1. 결제내역에 환불 표시

  • PurchaseRepository.findSucceededByUserfindPurchaseHistory로 rename, Succeed + Refunded 둘 다 조회
  • PurchaseHistoryItemDTOpurchased_at(stale dto 정정) + status + refunded_at 필드 추가
  • service에서 refund.refunded_at 매핑 (Payple 응답 시각 또는 우리 DB 기록 시각)

2. /sales/monthly 페이지네이션

  • 쿼리 파라미터: page(기본 1), limit(기본 10, 최대 100)
  • repository에 세 함수: findSalesByMonth(skip,take) / countSalesByMonth / aggregateSalesByMonth(raw SQL)
  • summary 의미 변경: 페이지 단위 합산 → 월 전체 합계 (페이지네이션 도입과 함께 통계 정확성 우선)
  • 응답에 pagination: { page, limit, total, total_pages, has_next } 추가

API 변경 (프론트 동기화 필요)

항목 변경
GET /api/prompts/purchases items status(Succeed/Refunded), refunded_at, purchased_at 노출
GET /api/settlements/sales/monthly query page, limit 신규
GET /api/settlements/sales/monthly 응답 pagination 신규, summary는 월 전체 합계로 의미 변경

별도 이슈 후보 (남은 부채)

Test plan

  • pnpm build / pnpm tsc --noEmit 통과
  • swagger.json 정상 생성
  • 결제내역 응답 확인 (환불건이 status='Refunded'로 노출)
  • /sales/monthly?page=2&limit=5 응답 확인 (pagination 정상)
  • summary가 페이지 무관 월 전체 합계로 반환되는지 검증
  • 프론트 동기화 후 머지

Closes #497

minij02 added 3 commits May 23, 2026 22:30
#485에서 Refunded 상태가 도입됐으나 결제내역(GET /api/prompts/purchases)
응답에 status 정보가 없어 환불된 거래를 식별할 수 없었음. 환불 표시 추가.

- PurchaseRepository.findSucceededByUser → findPurchaseHistory로 rename
  - status IN (Succeed, Refunded) 양쪽 모두 조회
  - payment.status / refund.refunded_at include
- PurchaseHistoryItemDTO 확장: purchased_at(stale dto 정정) + status + refunded_at
- PurchaseHistoryService.list: status, refunded_at 매핑
- Swagger 응답 schema에 status enum + refunded_at 필드 추가

프론트는 status='Refunded' 항목에 환불 뱃지/메시지 표시 가능.
직전 commit에서 jsdoc 인덴트가 ' * *  ' 형태로 별표 두 개가 들어가 YAML 파싱 실패.
swagger 빌드 깨짐. ' * '로 정정.
- 쿼리 파라미터 page(기본 1), limit(기본 10, 최대 100) 추가
- repository:
  - findSalesByMonth에 skip/take 적용 (페이지 데이터만 반환)
  - countSalesByMonth 신규 (페이지네이션 메타)
  - aggregateSalesByMonth 신규 (raw SQL로 월 전체 합계 — Refunded 분리 포함)
- service: 세 호출 병렬 + items/summary/pagination 매핑
- summary의 의미를 페이지 단위 → 월 전체 합계로 정합화 (페이지네이션 도입과
  함께 통계 정확성 우선). 응답 형식 동일 (count/total_sales/total_settled/
  total_fee/refunded_count/refunded_amount).
- DTO에 pagination 필드 추가
- Swagger 갱신: query params + pagination 응답 + summary description 보강
- swagger.json 재생성
@minij02 minij02 merged commit 3d4643e into develop May 23, 2026
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