/* ===================================================================== * Afflix Subscriber SaaS — 5 화면 mock (디팀 v1.0) * --------------------------------------------------------------------- * 어드민 v12 시스템 위에 SaaS 분위기로 — 같은 SSOT, 다른 얼굴 * 5 화면: Dashboard / Setup / TemplateGrid / TemplateDetail / Performance * SSOT: v12/saas-tokens.json + v12/thumb-slots.json * 의존: v12/thumb-t01a.jsx (window.ThumbT01A) * ===================================================================== */ const { useState: uSs, useMemo: uMs } = React; /* ===== Mock 데이터 ===== */ const SAAS_TEMPLATES = [ { id:'T01_A', name:'가성비 비교 BEST 3', desc:'3개 상품을 한눈에 비교하는 랭킹형', cats:['전자','생활'], purpose:'비교형', tone:'친근', char:'C07', color:'#D7263D', perf:'CTR 5.8%', recent:1842 }, { id:'T02_A', name:'카테고리 가이드', desc:'카테고리 입문자용 친절 가이드', cats:['뷰티','건강'], purpose:'가이드형', tone:'설명', char:'C12', color:'#1F5D4C', perf:'CTR 4.2%', recent:1230 }, { id:'T03_A', name:'TOP 10 랭킹', desc:'10종을 한 줄로 빠르게 훑는 랭킹', cats:['전자','패션','생활'], purpose:'랭킹형', tone:'단호', char:'C03', color:'#1E3A5F', perf:'CTR 6.1%', recent:2104 }, { id:'T04_A', name:'FAQ 모음', desc:'자주 묻는 질문을 묶은 정보형', cats:['건강','금융'], purpose:'FAQ형', tone:'중립', char:'C09', color:'#7A4A2B', perf:'CTR 3.4%', recent:642 }, { id:'T05_A', name:'대결 비교', desc:'2개 상품 1:1 정면 비교', cats:['전자','뷰티'], purpose:'비교형', tone:'단호', char:'C15', color:'#5D2E8C', perf:'CTR 5.2%', recent:1410 }, { id:'T06_A', name:'스토리텔링 리뷰', desc:'사용 경험 중심의 서사형 리뷰', cats:['뷰티','패션','생활'], purpose:'가이드형', tone:'친근', char:'C18', color:'#C2185B', perf:'CTR 4.8%', recent:980 }, ]; const SAAS_USER = { name:'운영 예시', plan:'Basic', month_publish:142, quota:300, recent_revenue:'₩2,840,000', trial_days_left:21, payment_registered:false, is_demo:true }; // 2026-05-26 2기 개발팀장 정정 (CFO 결재 ⑤ P0 마감 · 감사 결재 5/25 의무 적용): // - name '운영 예시' 추가 (직전 hardcoded '정태우 님' 제거 양식) // - is_demo:true (가상 사용자 명시) /* ===== 사이드바 라인 아이콘 ===== */ const SI = ({c}) => ({c}); const SAAS_ICONS = { dash: }/>, gear: }/>, layers: }/>, bar: }/>, star: }/>, card: }/>, gauge: }/>, slider: }/>, }; /* ===== 공통 셸 ===== */ window.SaasShell = function({ route, setRoute, children, theme, setTheme, onLogout }){ const [navOpen, setNavOpen] = React.useState(false); const menu = [ { id:'home', label:'대시보드', icon:SAAS_ICONS.dash }, { id:'setup', label:'발행 설정', icon:SAAS_ICONS.gear }, { id:'grid', label:'템플릿 패키지', icon:SAAS_ICONS.layers }, { id:'perf', label:'성과 참고', icon:SAAS_ICONS.bar }, ]; const mgmt = [ { id:'sub', label:'내 구독', emoji:'💎', soon:false, active:true }, { id:'pay', label:'결제·플랜', emoji:'💳', soon:true }, { id:'use', label:'사용량', emoji:'📊', soon:true }, { id:'set', label:'설정', emoji:'⚙️', soon:true }, ]; const click = (id) => { setRoute(id); setNavOpen(false); }; return (
setNavOpen(false)}/>
{children}
); }; /* ===== INTRO (랜딩) ===== */ window.SaasIntro = function({ go, theme, setTheme }){ return (
AI 제휴 자동화 SaaS

퇴근 후에도, 잠든 사이에도
본업은 그대로 두고
제휴 수익 자산은 쌓입니다

상품 선정부터 글 작성, 썸네일 생성, 발행까지 — 반복되는 작업은 AI가 맡습니다.
본인 인증 계정 하나만 연결하시면, 제휴 수익 자산은 자동으로 쌓이기 시작합니다.

카드 등록 없이 1개월 언제든 해지 AI 추천 콘텐츠 발행
AFFLIX AI
자동화 코어
상품 수집쿠팡 · 11번가
메타 완성LLM · 자동
템플릿 매칭AI 추천
발행·추적운영 라인 기준
썸네일 생성600 · 1200
반복 작업
AI 자동 처리
10가지
AI 추천 콘텐츠 형식
1개월 무료
카드 등록 없이 시작
본업은 그대로
자동 발행 운영

4단계로 끝나는 자동화

가입 → 카테고리 선택 → 자동 발행 시작. 손은 비어둡니다.

STEP 01 가입 · 1개월 무료 카드 등록 없이 가입. 본인 인증 계정 하나 연결로 시작합니다.
STEP 02 카테고리 1개 가전·뷰티·식품 등 대표 카테고리 1개만 정해주세요.
STEP 03 발행 시간 1개 매일 오전 9시·오후 12시 등 자동 발행 시간 설정.
STEP 04 30일 후, 자산이 누적됩니다 매일 1편씩 누적된 글이 색인되어, 손을 덜 대도 흐름이 이어지기 시작합니다.
CORE FEATURES

시작만 정하면
반복 작업은 AI가 맡습니다

카테고리별로 검증된 10가지 발행 형식 + AI 자동 매칭으로, 매일 발행이 끊기지 않습니다.

1
핵심 자동화 흐름
상품 선정부터 글 작성, 썸네일 생성, 발행까지 — 반복되는 작업은 AI가 맡습니다.
→ 직접 챙기지 않아도 발행은 이어집니다
2
검증된 10가지 콘텐츠 형식
가성비 비교·단일 추천·계절 모음 등 카테고리별로 검증된 10가지 발행 형식. 카테고리에 맞춰 자동 매칭됩니다.
→ 형식 고민 없이 바로 시작할 수 있습니다
3
성과는 흐름으로
개별 글 CTR이 아니라 7일·30일 흐름과 카테고리 비교. 다음 발행에 자연스럽게 반영됩니다.
→ 다음 발행이 자연스럽게 더 좋아집니다
{/* ===== PRICING (LP 내장) ===== */}
PRICING

지금 필요한 운영 규모부터 시작하세요

첫 1개월 무료 · 셋업 3개월 30%↓ · 약정 1년 최대 25%↓ · 발행량은 베이스라인 누적 후 확정됩니다.

{[ {tier:'Basic', price:'99,000', tag:'입문용', cat:'카테고리 1개', vol:'베이스라인 누적 후 확정', tmpl:'AI 추천 콘텐츠 형식 10가지', noti:'이메일 알림', sup:'일반 지원'}, {tier:'Standard', price:'199,000', tag:'표준', cat:'카테고리 2~3개', vol:'추정 Basic ×1.5~2', tmpl:'AI 추천 콘텐츠 형식 10가지', noti:'이메일 + 슬랙', sup:'일반 지원', hot:true}, {tier:'Premium', price:'399,000', tag:'대규모 운영', cat:'카테고리 무제한', vol:'추정 Standard ×2 이상', tmpl:'AI 추천 콘텐츠 형식 10가지 + 베타', noti:'이메일 + 슬랙 + 카카오톡', sup:'우선 기술 지원 (영업일 24h)'}, ].map(p=>(
{p.hot &&
가장 인기
}
{p.tag}
{p.tier}
₩{p.price}/월
· {p.cat} · 월 발행량 — {p.vol} · {p.tmpl} · {p.noti} · {p.sup}
))}
결제 시점은 무료 1개월 종료 직전 카드 등록 후 시작 · 언제든 해지 가능 · VAT 별도
{/* ===== CASES (가상 샘플 3종) ===== */}
SAMPLE SCENARIOS

처음 시작하면 이렇게 쌓입니다

아래는 운영 가정에 기반한 운영 예시입니다. Beta 운영 누적 후 실 케이스로 교체할 예정이며, 실제 결과는 카테고리·시점·운영 방식에 따라 달라질 수 있습니다.

{[ {plan:'Basic', cat:'가전 단일 카테고리', m1:'발행 30건', m2:'색인 18건', m3:'유입 흐름 형성 시작', note:'카테고리 1개로 베이스라인 형성 · 셋업 3개월 후 안정 구간 진입'}, {plan:'Standard', cat:'뷰티 + 식품 2 카테고리', m1:'발행 60~80건', m2:'색인 35건+', m3:'카테고리 비교 가능', note:'2~3 카테고리 운영 시 흐름 비교가 가능해지며 다음 발행 품질이 누적됩니다'}, {plan:'Premium', cat:'다 카테고리 + 베타', m1:'발행 150건+', m2:'색인 70건+', m3:'운영 라인 안정', note:'대규모 운영에서 자산 누적 + 우선 기술 지원으로 운영 라인이 안정됩니다'}, ].map(c=>(
운영 예시 {c.plan} {c.cat}
30일 누적{c.m1}
색인된 글{c.m2}
현재 상태{c.m3}
{c.note}
))}
※ 위 수치는 가상 시나리오이며 수익 보장이 아닙니다. 실수익은 카테고리·시점·운영 방식에 따라 다릅니다.
{/* ===== FAQ ===== */}
FAQ

시작 전에 가장 많이 묻는 10가지

{[ ['1개월 무료가 끝나면 언제 결제되나요?','가입 시 카드 등록은 받지 않습니다. 무료 1개월이 끝나기 전 결제 카드를 등록하지 않으면 자동 결제는 발생하지 않으며, 발행만 일시 정지됩니다.'], ['해지는 어디서 하나요?','로그인 후 [결제·플랜] 화면에서 1클릭으로 해지할 수 있으며, 별도 전화·메일 절차가 없습니다.'], ['해지 후 발행한 글과 자산은 어떻게 되나요?','이미 발행된 글·썸네일·메타 자산은 사용자 블로그에 그대로 남습니다. SaaS 측에서 회수하지 않습니다.'], ['카드 등록은 언제 필요한가요?','무료 1개월 종료 직전, 다음 달 결제를 원하실 때 등록합니다. 무료 기간 내에는 어떠한 결제도 발생하지 않습니다.'], ['카테고리는 나중에 바꿀 수 있나요?','환경설정에서 언제든 카테고리 추가/변경이 가능합니다. 단 색인 누적 흐름 보존을 위해 기존 카테고리는 일정 기간 유지하시는 것을 권장합니다.'], ['어떤 콘텐츠 형식이 자동 선택되나요?','카테고리·키워드·계절·과거 흐름을 기반으로 AI가 추천하는 10가지 콘텐츠 형식 중 가장 적합한 것이 자동 매칭됩니다. 사용자가 수동으로 고정하는 것도 가능합니다.'], ['처음 설정에 얼마나 걸리나요?','평균 5~10분입니다. 가입 → 카테고리 1개 → 발행 시간 1개 입력으로 끝납니다.'], ['Beta 종료 후 내 데이터는 어떻게 되나요?','발행한 글·썸네일·메타 자산은 사용자 블로그에 그대로 남습니다. SaaS 측은 운영 데이터(발행 이력·템플릿 사용 로그)를 사용자 동의 범위 내에서만 보관하며, 사용자가 요청하면 표준 양식으로 내보내(export) 드립니다.'], ['환불 규정은 어디서 확인하나요?','월 단위 결제는 다음 결제일 기준 해지 시점부터 결제가 중단됩니다. 일할 환불은 진행하지 않으며, 약정 1년 플랜의 환불 조건은 결제·플랜 화면 하단 [환불 규정] 링크에서 확인할 수 있습니다.'], ['운영이 잘 안 되면 어떻게 하나요?','셋업 3개월 동안은 색인·SEO 누적 구간이라 흐름이 약할 수 있습니다. 진행현황 화면에서 추천 액션이 안내되며, Premium은 우선 기술 지원으로 영업일 24h 이내 회신됩니다.'], ].map(([q,a],i)=>(
{q}
{a}
))}
{/* ===== TRUST 시그널 ===== */}
회사 정보주식회사 Afflix · 사업자번호 등록 후 게재
개인정보개인정보처리방침 / 데이터 보관 · 파기 정책 명시
보안HTTPS 전구간 암호화 · 카드정보 PG사 토큰화 · 자체 저장 X
해지·환불1클릭 해지 · 환불 규정은 이용약관 §7 명시

오늘부터 발행은 AI에 맡기세요

가입 즉시 1개월 무료 · 카드 등록 없이 시작 · 언제든 해지

© 2026 Afflix · Subscriber SaaS
이용약관 · 개인정보 · 문의
); }; /* ===== LOGIN ===== */ window.SaasLogin = function({ go }){ return (
AFFLIX

다시 오셨네요.
오늘 발행 준비됐어요.

로그인하면 어제 자동 발행 1건의 반응과 오늘 추천 템플릿이 먼저 보입니다.

운영 예시 "본인 인증 계정을 연결해두면 다음 날 글이 자동으로 올라오는 흐름을 가정한 예시입니다." — 가전 카테고리 운영 가정 · Beta 운영 누적 후 실 사례로 교체 예정
{e.preventDefault();go('home');}}>

로그인

오늘 발행을 이어가시려면 로그인하세요.

또는
계정이 없으신가요?
); }; /* ===== SIGNUP ===== */ window.SaasSignup = function({ go }){ return (
AFFLIX

1개월 무료.
카드 없이 시작합니다.

본인 인증 계정 하나만 연결하면, 내일 아침 첫 자동 발행이 도착합니다.

운영 예시 "본인 인증 계정을 연결해두면 며칠 뒤부터 자동 발행이 이어지는 흐름을 가정한 예시입니다." — 뷰티 카테고리 운영 가정 · Beta 운영 누적 후 실 사례로 교체 예정
{e.preventDefault();go('setup');}}>

1개월 무료 시작

신용카드 등록 없이 1개월 — 언제든 해지할 수 있습니다.

가입 후 추가 카테고리는 환경설정에서 늘릴 수 있습니다.
이미 계정이 있으신가요?
); }; /* ===== 1. Dashboard ===== */ window.SaasDashboard = function({ go }){ const today = SAAS_TEMPLATES[0]; return (
오늘 추천

{SAAS_USER.name} 님, 오늘은 이 템플릿이 잘 맞을 것 같아요

최근 7일 반응과 카테고리 흐름을 보고 골랐습니다. 그대로 발행하거나 살짝 바꿀 수 있어요.

{today.id} {today.purpose} {today.cats.join(' · ')}

{today.name}

{today.desc}. 최근 7일 평균 CTR {today.perf}, 반응 {today.recent}건.

  • 3개 상품 비교 — BEST 1·2·3 시각 위계
  • 가성비 가격 강조 (₩ 칩)
  • 친근 톤 · {today.cats[0]} 카테고리 적합

빠른 진입

go('setup')}/> go('grid')}/> go('perf')}/>

이번 달 사용량

{SAAS_USER.month_publish} / {SAAS_USER.quota} 발행
최근 30일 수익 {SAAS_USER.recent_revenue} 남은 발행 {SAAS_USER.quota - SAAS_USER.month_publish}건
); }; function QuickCard({ title, sub, tone, onClick, disabled }){ return ( ); } /* ===== 2. Setup — 한 화면 + 실시간 요약 ===== */ window.SaasSetup = function({ go, templates }){ // ===== 발행 설정 보강 (디팀 v3 · 2026-06-14) — UI + hook 호출부 / API 배선=개발 ===== const _pubSaved = (typeof window!=='undefined' && window.afflixLoadSelection) ? (window.afflixLoadSelection() || {}) : {}; const [mode, setMode] = uSs(_pubSaved.mode || 'auto'); // 기본 auto (기존 'ai' → 요청서 기본값 정합) const [cat, setCat] = uSs(_pubSaved.category || '전자'); const [theme, setTheme] = uSs(_pubSaved.theme || '가성비'); const [tmpl, setTmpl] = uSs(_pubSaved.template_id || 'T01_A'); const [char, setChar] = uSs(_pubSaved.char_id || 'C07'); const [saveMsg, setSaveMsg] = uSs(null); const tmplObj = SAAS_TEMPLATES.find(t=>t.id===tmpl) || SAAS_TEMPLATES[0]; // 등급(tier)별 템플릿 — 개발이 props.templates 또는 window.AFFLIX_TEMPLATES 주입. 없으면 기존 견본. const PUB_TIER = ((window.SAAS_USER2 && window.SAAS_USER2.plan_kind) || 'basic').split('_')[0]; const PUB_TIER_COUNT = { basic:10, standard:20, premium:30 }[PUB_TIER] || 10; const PUB_TPLS = (templates && templates.length) ? templates : (typeof window!=='undefined' && window.AFFLIX_TEMPLATES && window.AFFLIX_TEMPLATES.length) ? window.AFFLIX_TEMPLATES : null; const PUB_TPL_LIST = PUB_TPLS || SAAS_TEMPLATES.slice(0,4).map(t=>({ id:t.id, name:t.name, format:t.desc, tier:PUB_TIER })); const PUB_IS_SAMPLE = !PUB_TPLS; function pubSave(){ const payload = { mode, template_id:(mode==='auto'?null:tmpl), category:cat, theme, char_id:char }; try { if (window.afflixSaveSelection) window.afflixSaveSelection(payload); } catch(e){} setSaveMsg('저장됐습니다. 이대로 발행됩니다.'); } return (
발행 설정

어떻게 발행할지 정해볼까요

관리자 발행설정과 동일한 구성 — 방식·템플릿을 고르고 저장하면 다음 발행부터 적용됩니다.

{/* ===== admin 발행설정(SaasOptions) 동일 단일컬럼 이식 (2026-06-15 V8) ===== */}
{setMode('auto');setSaveMsg(null);}} title="🤖 자동 (기본·권장)" desc="시스템이 카테고리·템플릿·캐릭터를 모두 결정 — 손 안 대도 매일 발행"/> {setMode('ai');setSaveMsg(null);}} title="✨ 반자동 (큐봇)" desc="큐봇이 추천하면 내가 가볍게 조정"/> {setMode('manual');setSaveMsg(null);}} title="⚙️ 수동" desc="카테고리·테마·템플릿·캐릭터를 직접 선택"/>
{mode !== 'auto' && (<>
{['전자','생활','뷰티','패션','건강','금융'].map(c=>( ))}
{['가성비','프리미엄','입문자','전문가','트렌드'].map(c=>( ))}
{['C07','C12','C03','C09','C15','C18'].map(c=>( ))}
)}
{PUB_TPL_LIST.map(t=>{ const _tc = ({basic:'#64748b',standard:'#2563eb',premium:'#d97706',curation:'#f2384a'})[String(t.tier||'').toLowerCase()] || '#64748b'; const _on = tmpl===t.id; return ( ); })}
{PUB_IS_SAMPLE &&
※ 형식 견본입니다. 실제 목록은 내 등급({PUB_TIER}·{PUB_TIER_COUNT}종)에 맞춰 자동 표시됩니다.
}
{saveMsg &&
{saveMsg}
}
{[['최근 30일 수익','₩8.4M','전체 평균'],['평균 CTR','3.82%','시장 평균 +1.2%p'],['전환율','1.31%',''],['시즌 추천','환절기','패딩·이불']].map((s,i)=>(
{s[0]}
{s[1]}
{s[2] &&
{s[2]}
}
))}
); }; function Field({ label, hint, children }){ return (
{label}
{hint &&
{hint}
}
{children}
); } function SelectorCard({ active, onClick, title, desc }){ return ( ); } /* ===== 3. Template Grid ===== */ window.SaasGrid = function({ go, setSelected }){ const [filter, setFilter] = uSs('전체'); const list = filter==='전체' ? SAAS_TEMPLATES : SAAS_TEMPLATES.filter(t=>t.purpose===filter); return (
템플릿 패키지

고를 수 있는 골격 6종

같은 슬롯 시스템 — 골격은 고정, 안에 들어가는 내용만 바뀝니다.

{['전체','비교형','랭킹형','가이드형','FAQ형'].map(f=>( ))}
{list.map(t=>(
{t.id} {t.purpose}

{t.name}

{t.desc}

))}
); }; /* ===== 4. Template Detail ===== */ window.SaasDetail = function({ go, selected }){ const t = SAAS_TEMPLATES.find(x=>x.id===selected) || SAAS_TEMPLATES[0]; return (
{t.id} {t.purpose} {t.tone}

{t.name}

{t.desc}

추천 상황
{t.cats.join(', ')} 카테고리에서 가성비 비교가 필요할 때
적용 카테고리
{t.cats.join(', ')}
추천 캐릭터
{t.char} · 친근한 설명형
최근 반응
CTR {t.perf} · {t.recent}건

구조 설명

성과 참고

); }; function AnatomyItem({ n, title, body }){ return (
{n}
{title}
{body}
); } function PerfTile({ label, value, sub }){ return (
{label}
{value}
{sub}
); } /* ===== 5. Performance ===== */ window.SaasPerf = function({ go }){ const kpis = [ { label:'최근 30일 수익', value:'₩2,840,000', sub:'+18.2% vs 전월', tone:'accent' }, { label:'평균 CTR', value:'5.4%', sub:'템플릿 평균', tone:'warm' }, { label:'평균 전환율', value:'2.1%', sub:'장바구니 도달', tone:'soft' }, { label:'발행 수', value:'142건', sub:'한도 300건', tone:'soft' }, ]; const top = SAAS_TEMPLATES.slice().sort((a,b)=>b.recent-a.recent); return (
성과 참고

선택을 도와줄 숫자만 모았어요

세부 분석은 어드민에서 확인 — 여기서는 다음 발행에 도움 될 정보만 보여드립니다.

{kpis.map(k=>(
{k.label}
{k.value}
{k.sub}
))}

추천 카테고리

  • 전자 · CTR 6.1% · 반응 2,104건
  • 생활 · CTR 5.2% · 반응 1,842건
  • 뷰티 · CTR 4.8% · 반응 980건

템플릿별 상대 성과

{top.map(t=>(
{t.id}
{t.recent.toLocaleString()}
))}

최근 반응 요약

  • 구독자 평균 체류 1분 24초 (+12s)
  • 가장 클릭 많은 슬롯 BEST 1 (62%)
  • 이탈 가장 적은 톤 친근
  • 가성비 키워드 CTR +0.8%p
  • 리워드 발행 시 반응 +22%
); };