refactor: 요금표를 src/data/pricingTiers.ts 로 분리

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Haewon Kam 2026-10-07 14:21:53 +09:00
parent 6b387c130c
commit 1d835f0f8b
2 changed files with 82 additions and 78 deletions

80
src/data/pricingTiers.ts Normal file
View File

@ -0,0 +1,80 @@
/**
* 요금표 (INFINITH Product 1.0). /pricing 화면은 이 데이터만 그린다.
* 요금이 확정되면 이 파일만 고치고, 공개 배포(webforai.kr)에서 열려면 src/lib/site.ts 의 SHOW_PRICING 을 켠다.
* 2026-10-07 기준 확정 전 값이다.
*/
// plan 섹션 2·5 기준. Feature Comparison Table(Step 3)에서도 재사용 예정.
export type TierId = 'insight' | 'intelligence' | 'intelligence-plus';
export interface Tier {
id: TierId;
name: string;
tagline: string;
monthlyKRW: number; // 원화 (월 단가 · 계약 기준)
annualMonthlyKRW: number; // 원화 (연 계약 시 월 환산)
annualTotalKRW: number; // 원화 (연 계약 총액)
isPopular?: boolean;
/** 모든 Tier는 계약 기반 영업 — 온라인 결제 없음. 상담 문의 mailto로 통일. */
ctaLabel: string;
bullets: string[];
footnote?: string;
}
export const PRICING_TIERS: Tier[] = [
{
id: 'insight',
name: 'INSIGHT',
tagline: '매월 1번, 병원의 온라인 좌표를 점검하세요',
monthlyKRW: 90_000,
annualMonthlyKRW: 72_000,
annualTotalKRW: 864_000,
ctaLabel: '상담 문의',
bullets: [
'월 1회 분석 리포트',
'전 채널 분석 (홈페이지 · 강남언니 · YouTube · Instagram · Facebook · 네이버 플레이스 · 블로그)',
'4주 콘텐츠 플랜',
'경쟁사 추적 1개',
'PDF 내보내기',
],
footnote: '신규 개업의 · 1인 의원 추천',
},
{
id: 'intelligence',
name: 'INTELLIGENCE',
tagline: '경쟁사가 지금 무엇을 바꾸는지, 월 2번 확인하세요',
monthlyKRW: 290_000,
annualMonthlyKRW: 232_000,
annualTotalKRW: 2_784_000,
isPopular: true,
ctaLabel: '상담 문의',
bullets: [
'월 4회 분석 리포트',
'8주 콘텐츠 캘린더 + 주간 KPI 기반 조정',
'Vision AI (의료진·슬로건·인증 자동 추출)',
'경쟁사 추적 3개 · 주간 변동 알림',
'KPI 대시보드 (3/12개월 목표)',
'브랜드 가이드 + 콘텐츠 필러 5종',
'스크린샷 증거 기반 심층 리포트',
],
footnote: '중형 성형외과 · 메인 타겟',
},
{
id: 'intelligence-plus',
name: 'INTELLIGENCE+',
tagline: '매일 변하는 시장에 즉시 대응하세요',
monthlyKRW: 990_000,
annualMonthlyKRW: 792_000,
annualTotalKRW: 9_504_000,
ctaLabel: '상담 문의',
bullets: [
'월 10회 분석 리포트',
'12개월 로드맵 + 월간 전략 리뷰',
'최대 3개 분원 통합 대시보드',
'경쟁사 추적 5개 · 일간 변동 모니터링',
'브랜드 가이드 + 콘텐츠 필러 10종',
'커스텀 리포트 템플릿 (병원 CI 반영)',
'신규 기능 베타 우선 접근',
],
footnote: '대형 · 멀티 분원 병원',
},
];

View File

@ -16,7 +16,7 @@
* (analytics 연동은 Supabase `analytics_events` 테이블 도입 후 후속 작업) * (analytics 연동은 Supabase `analytics_events` 테이블 도입 후 후속 작업)
* *
* 핵심 데이터 소스: * 핵심 데이터 소스:
* - src/data/pricingTiers.ts ← (이 파일 내부에 임시 정의, Step 3에서 분리 고려) * - src/data/pricingTiers.ts ← 요금표 데이터 (2026-10-07 분리. 요금 확정 시 이 파일만 고친다)
*/ */
import React, { useEffect, useState } from 'react'; import React, { useEffect, useState } from 'react';
import { useSearchParams } from 'react-router'; import { useSearchParams } from 'react-router';
@ -32,83 +32,7 @@ import Badge from '../components/Badge';
import FeatureComparisonTable from '../components/pricing/FeatureComparisonTable'; import FeatureComparisonTable from '../components/pricing/FeatureComparisonTable';
import FAQ from '../components/pricing/FAQ'; import FAQ from '../components/pricing/FAQ';
import { buildContactMailto } from '../lib/contact'; import { buildContactMailto } from '../lib/contact';
import { PRICING_TIERS as tiers, type Tier } from '../data/pricingTiers';
// ─── Tier 데이터 정의 ──────────────────────────────────────────────
// plan 섹션 2·5 기준. Feature Comparison Table(Step 3)에서도 재사용 예정.
type TierId = 'insight' | 'intelligence' | 'intelligence-plus';
interface Tier {
id: TierId;
name: string;
tagline: string;
monthlyKRW: number; // 원화 (월 단가 · 계약 기준)
annualMonthlyKRW: number; // 원화 (연 계약 시 월 환산)
annualTotalKRW: number; // 원화 (연 계약 총액)
isPopular?: boolean;
/** 모든 Tier는 계약 기반 영업 — 온라인 결제 없음. 상담 문의 mailto로 통일. */
ctaLabel: string;
bullets: string[];
footnote?: string;
}
const tiers: Tier[] = [
{
id: 'insight',
name: 'INSIGHT',
tagline: '매월 1번, 병원의 온라인 좌표를 점검하세요',
monthlyKRW: 90_000,
annualMonthlyKRW: 72_000,
annualTotalKRW: 864_000,
ctaLabel: '상담 문의',
bullets: [
'월 1회 분석 리포트',
'전 채널 분석 (홈페이지 · 강남언니 · YouTube · Instagram · Facebook · 네이버 플레이스 · 블로그)',
'4주 콘텐츠 플랜',
'경쟁사 추적 1개',
'PDF 내보내기',
],
footnote: '신규 개업의 · 1인 의원 추천',
},
{
id: 'intelligence',
name: 'INTELLIGENCE',
tagline: '경쟁사가 지금 무엇을 바꾸는지, 월 2번 확인하세요',
monthlyKRW: 290_000,
annualMonthlyKRW: 232_000,
annualTotalKRW: 2_784_000,
isPopular: true,
ctaLabel: '상담 문의',
bullets: [
'월 4회 분석 리포트',
'8주 콘텐츠 캘린더 + 주간 KPI 기반 조정',
'Vision AI (의료진·슬로건·인증 자동 추출)',
'경쟁사 추적 3개 · 주간 변동 알림',
'KPI 대시보드 (3/12개월 목표)',
'브랜드 가이드 + 콘텐츠 필러 5종',
'스크린샷 증거 기반 심층 리포트',
],
footnote: '중형 성형외과 · 메인 타겟',
},
{
id: 'intelligence-plus',
name: 'INTELLIGENCE+',
tagline: '매일 변하는 시장에 즉시 대응하세요',
monthlyKRW: 990_000,
annualMonthlyKRW: 792_000,
annualTotalKRW: 9_504_000,
ctaLabel: '상담 문의',
bullets: [
'월 10회 분석 리포트',
'12개월 로드맵 + 월간 전략 리뷰',
'최대 3개 분원 통합 대시보드',
'경쟁사 추적 5개 · 일간 변동 모니터링',
'브랜드 가이드 + 콘텐츠 필러 10종',
'커스텀 리포트 템플릿 (병원 CI 반영)',
'신규 기능 베타 우선 접근',
],
footnote: '대형 · 멀티 분원 병원',
},
];
// ─── 가격 포맷터 ────────────────────────────────────────────────── // ─── 가격 포맷터 ──────────────────────────────────────────────────
// 29_0000원 → "29만원" 포맷. 1000원 단위까지는 표기 안 함 (B2B 가격은 만원 단위) // 29_0000원 → "29만원" 포맷. 1000원 단위까지는 표기 안 함 (B2B 가격은 만원 단위)