Skip to content

Story: 프리미엄 게이트 (요금제 분기)

메타

항목
Story IDE-04-S-03
EpicE-04 AI 진단 엔진
상태draft
우선순위P0
규모S
담당 개발자BE (하록님)

사용자 스토리

As a 장사왕 시스템, I want 요금제에 따라 AI/규칙 기반 진단을 분기, So that Pro10+ 고객에게만 프리미엄 AI 진단을 제공할 수 있다.


수락 기준 (Acceptance Criteria)

AC-01: 요금제 확인

항목내용
Given진단 API 요청
When요금제 확인
Then하위 요금제 → 규칙 기반, 상위 요금제 → AI 진단

요금제 분기 (AS-IS vs TO-BE):

⚠️ E-05 요금제 정책 재설계가 적용되면 TO-BE로 전환 필요

구분규칙 기반 (source: "rule")AI 진단 (source: "ai")
AS-IS (현재)basic1, pro3pro10, pro20, pro50, enterprise
TO-BE (E-05 적용 후)Starter, BasicPro, Business

분기 기준:

  • AS-IS: pro10 이상 = AI 진단
  • TO-BE: Pro 이상 (tierId >= 3) = AI 진단

AC-02: AI 진단 가능 플래그

항목내용
GivenSurface Layer 데이터 조회
When응답 생성
ThenaiDiagnosisEnabled: boolean 플래그 포함

용도: FE에서 AI 업그레이드 유도 배너 표시 여부 결정

AC-03: 다운그레이드 처리

항목내용
GivenAI 진단 가능 → 불가능 요금제로 다운그레이드
When진단 요청
Then규칙 기반으로 자동 전환, 기존 AI 캐시 무효화

다운그레이드 시나리오:

구분AS-ISTO-BE
예시pro10 → pro3Pro → Basic
결과AI → 규칙 기반 전환AI → 규칙 기반 전환

태스크 분해

Task 1: 요금제 확인 로직 AC-01

  • [ ] 1.1: 현재 요금제 조회 함수 확인/활용
  • [ ] 1.2: AI 진단 가능 요금제 목록 정의
  • [ ] 1.3: 분기 로직 구현

Task 2: API 응답 플래그 AC-02

  • [ ] 2.1: aiDiagnosisEnabled 필드 추가
  • [ ] 2.2: Surface Layer 응답에 포함

Task 3: 다운그레이드 처리 AC-03

  • [ ] 3.1: 요금제 변경 이벤트 감지 (또는 실시간 확인)
  • [ ] 3.2: 캐시 무효화 로직

Task 4: 테스트

  • [ ] 4.1: 요금제별 분기 테스트
  • [ ] 4.2: 다운그레이드 시나리오 테스트

Dev Notes (AI Agent 최적화)

영향 받는 소스 트리

src/
├── campaigns/
│   └── diagnosis/
│       └── diagnosis.service.ts     # 🔧 수정 (분기 로직)
├── billing/
│   └── plan.service.ts              # 참조 (요금제 조회)
└── common/
    └── guards/
        └── premium-feature.guard.ts # 🆕 또는 기존 활용

요금제 상수 정의 (AS-IS / TO-BE)

typescript
// ============================================================
// AS-IS: 현재 요금제 기준 (E-05 적용 전)
// ============================================================
const AI_DIAGNOSIS_PLANS_LEGACY = [
  'pro10',
  'pro20',
  'pro50',
  'enterprise'
];

function isAIDiagnosisEnabledLegacy(planType: string): boolean {
  // planType 예: 'pro10_monthly', 'pro3_yearly' 등
  const basePlan = planType.split('_')[0].toLowerCase();
  return AI_DIAGNOSIS_PLANS_LEGACY.some(p => basePlan.startsWith(p));
}

// ============================================================
// TO-BE: E-05 요금제 정책 적용 후
// ============================================================
const AI_DIAGNOSIS_TIER_IDS = [3, 4];  // Pro(3), Business(4)

function isAIDiagnosisEnabled(tierId: number): boolean {
  return AI_DIAGNOSIS_TIER_IDS.includes(tierId);
}

// 또는 티어명 기반
const AI_DIAGNOSIS_TIERS = ['pro', 'business'];

function isAIDiagnosisEnabledByTier(tierCode: string): boolean {
  return AI_DIAGNOSIS_TIERS.includes(tierCode.toLowerCase());
}

전환 시점: E-05-S-08 (마이그레이션) 완료 후 TO-BE 로직으로 전환

충돌 감지

항목상태설명
기존 코드 충돌✅ 낮음기존 요금제 로직 활용
DB 스키마 변경✅ 없음

의존성

의존설명상태
요금제 시스템현재 요금제 조회 가능✅ 존재
E-05 요금제 정책TO-BE 분기 로직에 필요🔄 S53 진행 중

E-05 연동 전략

[배포 순서]
1. E-04-S-03 AS-IS 로직으로 먼저 배포 (pro10+ 기준)
2. E-05-S-08 마이그레이션 완료
3. E-04-S-03 TO-BE 로직으로 업데이트 (tierId 기준)

[Feature Flag 권장]
USE_NEW_TIER_SYSTEM=true 환경변수로 분기 전환 가능하게 구현

Grandfather 고객 처리

E-05 적용 후에도 Grandfather 고객(기존 PortOne 결제)은 기존 planType 기준으로 판단:

  • Grandfather + pro10 이상 → AI 진단 ✅
  • Grandfather + pro3 → 규칙 기반 (기존 요금제 유지이므로)

Dev Agent Record

항목
생성 AgentClaude Opus 4.5
생성일2026-01-27
마지막 수정2026-01-27
검증자-

검증 결과: 🔄 PENDING (PO 승인 대기) 검증일: -


생성일: 2026-01-27마지막 수정: 2026-01-27

장사왕 Product Team