Skip to content

[DP-495] Free/Pro/Max 구독 플랜 구현#173

Merged
suheon98 merged 4 commits into
developV2from
feature/DP-495-free-pro-stripe
May 21, 2026
Merged

[DP-495] Free/Pro/Max 구독 플랜 구현#173
suheon98 merged 4 commits into
developV2from
feature/DP-495-free-pro-stripe

Conversation

@suheon98
Copy link
Copy Markdown
Collaborator

Summary

  • 토스페이먼츠 빌링키 방식 결제/해지/환불 플로우 구현
  • PRO ↔ MAX 플랜 변경 예약 기능 (POST /subscriptions/change, 다음 결제 구간 전환)
  • Redis 일/주간 횟수 제한 (PlanLimitService) — AI 일 5/10/무제한, 채용 기능 주 2/7/무제한
  • GET /jobs/{jobId}/skill-gap 조회 엔드포인트 추가 + POST 시 DB 저장(upsert)
  • /users/me 응답에 pendingPlanType, lastBilledAt, limits 필드 추가
  • 에러코드 추가: PAYMENT_006(환불 기간 초과), PAYMENT_007(Free 기준 초과), JOB_004(스킬갭 없음)

Key Decisions

  • planExpiredAt: null = 정기갱신 중, non-null = 해지 예정(해당일까지 유지 후 FREE 전환)
  • 환불 조건: 결제일로부터 7일 이내 AND Free 기준치 초과 사용 없음
  • 플랜 변경 취소: POST /subscriptions/change { planType: 현재플랜 }pendingPlanType null 초기화

Test plan

  • POST /subscriptions/billing-auth → planType PRO/MAX, planExpiredAt null 확인
  • DELETE /subscriptions → planExpiredAt 세팅, 자동결제 중단 확인
  • POST /subscriptions/cancel → 7일 이내 FREE 전환 / 초과 시 PAYMENT_006 / 사용량 초과 시 PAYMENT_007
  • POST /subscriptions/change → pendingPlanType 세팅, 동일 플랜 요청 시 취소 처리
  • GET /jobs/{jobId}/skill-gap → 저장 결과 200, 없으면 404 JOB_004
  • GET /users/me → limits, pendingPlanType, lastBilledAt 포함 확인
  • Free 유저 AI 일 6회 → 429 PAYMENT_005
  • Free 유저 스킬갭 3회 → 429 PAYMENT_005

suheon added 4 commits May 21, 2026 19:36
- 토스페이먼츠 빌링키 방식 결제/해지/환불 (7일 이내 + Free 기준치 이내)
- PRO ↔ MAX 플랜 변경 예약 (POST /subscriptions/change, 다음 결제 구간 전환)
- planExpiredAt null = 정기갱신, non-null = 해지 예정으로 의미 정리
- pendingPlanType 동일 플랜 요청 시 변경 예약 취소로 처리
- Redis 일/주간 횟수 제한 (PlanLimitService)
- GET /jobs/{jobId}/skill-gap 조회 + POST 시 DB 저장 (upsert)
- /users/me 응답에 pendingPlanType, lastBilledAt, limits 추가
- PAYMENT_006/007 에러코드 추가 (환불 불가 조건)
- JOB_004 에러코드 추가 (스킬갭 결과 없음)
- Prometheus 모니터링 설정 복원 (application.yml, SecurityConfig)
… 테스트 추가 — SonarCloud 커버리지 보강
AI 답변/질문개선 userId 분기, 모의면접/면접Q&A/스킬갭 주간 제한,
WeeklyReportService FREE locked 분기, UserService checkAiLevelAccess 신규 테스트
@sonarqubecloud
Copy link
Copy Markdown

@suheon98 suheon98 merged commit ed206a2 into developV2 May 21, 2026
4 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