feat: 첫 출시 무료 앱 — 인앱결제(구독) 진입점 비활성화
CI / build (push) Failing after 10m51s

- BILLING_ENABLED=false 플래그 추가(features.js)
- 실연동 전 구매 흐름이 테스트 스텁이라, 활성화 시 결제 없이 프리미엄이
  부여되는 문제가 있어 구매 진입점을 모두 숨김
- UpgradeView: 구매 버튼 대신 '구독 곧 출시 예정' 안내
- AccountInfoView: 정기결제 관리 카드 + 업그레이드 링크 미노출
- 무료 기능은 정상 동작, 실 Google Play Billing 연동은 다음 업데이트

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
ByungCheol
2026-06-28 19:20:14 +09:00
parent e8d3549f02
commit a2cda9b4ee
3 changed files with 25 additions and 5 deletions
+8 -4
View File
@@ -5,6 +5,7 @@ import { useAuthStore } from '@/stores/auth'
import { authApi } from '@/api/authApi'
import { billingApi } from '@/api/billingApi'
import { billing } from '@/native/billing'
import { BILLING_ENABLED } from '@/config/features'
import { useDialog } from '@/composables/dialog'
import { avatarSrc, avatarInitial, fileToAvatarDataUrl } from '@/utils/avatar'
@@ -151,7 +152,10 @@ async function choosePlan(product) {
}
}
onMounted(loadSubscription)
// 결제 비활성화(첫 출시 무료 앱) 시 구독 현황/상품을 불러오지 않음 → 정기결제 카드 미노출
onMounted(() => {
if (BILLING_ENABLED) loadSubscription()
})
// 아바타: 사용자 지정 > 구글 > 이니셜
const avatar = computed(() => avatarSrc(u.value))
@@ -274,7 +278,7 @@ async function withdraw() {
<span class="k">멤버십</span>
<span class="v">
<span :class="{ premium: isPremium }">{{ planLabel }}</span>
<RouterLink v-if="!isPremium" to="/upgrade" class="up-link">업그레이드 </RouterLink>
<RouterLink v-if="!isPremium && BILLING_ENABLED" to="/upgrade" class="up-link">업그레이드 </RouterLink>
</span>
</div>
<button type="button" class="row row-point" @click="openHistory">
@@ -290,8 +294,8 @@ async function withdraw() {
</button>
</section>
<!-- 정기결제 관리 -->
<section class="card sub-card">
<!-- 정기결제 관리 (결제 비활성화 출시에는 미노출) -->
<section v-if="BILLING_ENABLED" class="card sub-card">
<h2 class="sub-title">정기결제 관리</h2>
<template v-if="sub && sub.premium">