제0·1장 — Phase 1.2 시작 + Stripe 통합
4일 휴식 의식 + 12주 구조 + Stripe DB 3 테이블 + 첫 구독 시뮬 통과
📋 이 챕터의 목차
- 서문 — 권3에서 권4로
- 0-1. Day 91~94 — 4일 휴식 의식
- 0-2. 권4 12주 구조
- 0-3. 권4 5확장 진화
- 0-4. 가장 가치 있는 두 자리
- 제0장 정리
- 1-1. Day 95 — 권4 시작 + SPEC·PLAN 점검
- 1-2. Day 96 — users 테이블 + 이메일 OAuth
- 1-3. Day 97 — subscriptions + payments + Stripe SDK
- 1-4. Day 98 — Stripe webhook 엔드포인트
- 1-5. Day 99 — 토요일 휴식
- 1-6. Day 100 — 첫 구독 시뮬 결제 테스트
- 1-7. Day 101 — 1주차 회고
- 1-8. E3 G-8 NEW — Phase 진화의 새 보안
- 1-9. 두 도메인 권4 1주차 비교
- 제1장 정리
권3 (Phase 1.1) 이 126h로 완성되었습니다. 52일에 19리그 메타 가설 + ⚖️ E1 4자리 + 다층 보호 41일 무사고 + R4 4번 안정 작동 + 두 도메인 일관 패턴 14자리 종합.
이제 권4 — Phase 1.2: 프리미엄 구독 + 4 페르소나 완성 + 인증 시스템으로 진입합니다.
| 권 | 본질 | 주요 사건 |
|---|---|---|
| 권1 (Phase 0) | 메타·계획 | 5파일+ + 5확장 5/5 |
| 권2 (Phase 1.0) | 코드 개발 | ★★ Day 14 CRITICAL + ★ G5 |
| 권3 (Phase 1.1) | 안정 운영 + 광고 | 19리그 + ⚖️ E1 + ★ G8 |
| 권4 (Phase 1.2 구독) | ★ 시리즈 메타 가설 두 번째 단계 | Stripe + 4 페르소나 + 첫 구독자 + ★ G9·G10·G11 |
| 권5 (Phase 2.0 B2B) | B2B 데이터 리포트 | $299/회 리포트 + 12개월 운영 |
| 권6 (Phase 2.1+ 마무리) | 12개월 종합 + Phase 3 예고 | 시리즈 마무리 |
Phase 1.2 시작 가이드 + Day 91~94 4일 휴식
권4 진입 의식 + 12주 구조 + 5확장 진화 안내
Day 91 (작업 없음)
## Phase 1.2 Day 91 — ★ Phase 1.1 종료 휴식 ★ [계획] - 작업 X (Phase 1.0 + Phase 1.1 마무리 의식 통합) [실행] - 작업 X - 가족·자유 시간 [E2 페이스 점검] - Phase 1.1 누적 126h → Day 91 휴식 → 권4 새 시작 - ★ 5+1 R4 의식 (60h 트리거·12개월 강화·게이트·Phase 마무리·12개월 두 번째) 통합 누적 효과 [누적] 244.5h (Day 91 변동 없음)
Day 92~94 (각 작업 없음)
[Day 92~94 — 3일 추가 휴식] - Day 92: 휴식 (12개월 강화 후속) - Day 93: 휴식 (Phase 1.0·1.1 마무리 의식) - Day 94: 휴식 (권4 진입 의식) [★ 4일 누적 휴식 효과] - 신체적·정신적 충분 회복 - 권4 90일 운영 시 R4 사이클 안전 영역 진입 - 페이스 4h/일 정상 복귀 가능 [누적] 244.5h (Day 91~94 변동 없음)
┌──────────────────────────────────────────────────────────────┐ │ 1주차 (Day 95~101) — Stripe 통합 + DB 추가 │ │ Day 95: 권4 시작 + SPEC v5.0 + PLAN v4.0 점검 │ │ Day 96: users 테이블 + 이메일 OAuth 구조 │ │ Day 97: subscriptions + payments 테이블 + Stripe SDK │ │ Day 98: Stripe webhook 엔드포인트 │ │ Day 99: 토요일 X │ │ Day 100: 첫 구독 시뮬 결제 테스트 │ │ Day 101: 일요일 회고 │ ├──────────────────────────────────────────────────────────────┤ │ 2주차 (Day 102~108) — COACH·INSIDER 페르소나 활성화 │ │ Day 102: persona_prompts COACH v1·INSIDER v1 활성화 │ │ Day 103: 4 페르소나 cron 통합 (Sonnet 비용 추정) │ │ Day 104: 4 페르소나 자동 일관성 테스트 진화 │ │ Day 105: ⭐ E5 [8] supremacy 차단 자동 검증 │ │ Day 106: 토요일 X │ │ Day 107: 4 페르소나 첫 발행 검증 │ │ Day 108: 일요일 회고 │ ├──────────────────────────────────────────────────────────────┤ │ 3주차 (Day 109~115) — 무료 vs 구독자 분리 노출 + 알림 시스템 │ │ Day 109: 구독 상태 별 콘텐츠 분리 (RLS) │ │ Day 110: 마감 D-1 알림 시스템 (구독자 무제한) │ │ Day 111: 사용자 인증 흐름 최종 검증 │ │ Day 112: 토요일 X │ │ Day 113: G9 점검 prep │ │ Day 114: G9 점검 │ │ Day 115: ★ G9 PASSED │ ├──────────────────────────────────────────────────────────────┤ │ 4주차 (Day 116~121) — Phase 1.2 1단계 종료 의식 │ │ ★ G9 통과 휴식 + ★ Day 121 12개월 강화 의식 세 번째 │ ├──────────────────────────────────────────────────────────────┤ │ 5~8주차 (Day 122~150) — 첫 구독자 + 전환율 측정 │ │ 첫 구독자 도달 + 구독 전환율 5% 가설 검증 │ │ ★ G10 (Day 151) │ ├──────────────────────────────────────────────────────────────┤ │ 9~12주차 (Day 152~180) — Phase 1.2 마무리 + Phase 2.0 prep │ │ ★ G11 FINAL (Day 180) + 권5 (Phase 2.0) 진입 결정 │ └──────────────────────────────────────────────────────────────┘
| 확장 | 권3 진화 | 권4 진화 |
|---|---|---|
| ⚖️ E1 회색지대 | 4자리 + 다층 보호 41일 | ★ INSIDER 환각 방지 작동 (이적·트레이딩 시장) |
| ★ E2 1인 페이스 | R4 4번 + 12개월 강화 2번 | ★ R4 5·6번 + 12개월 강화 3·4·5번 |
| ⭐ E3 두 검토자 | G-7 작동 | Stripe webhook 보안 검토 (G-8 NEW) |
| ⭐ E4 LogOnTable | 누적 ~105 | +90 트레이스 → 누적 ~195 |
| ⭐ E5 콘텐츠 SSOT | [3]·[4]·[5]·[6]·[8] 작동 | ★ 4 페르소나 완성 + 자동 일관성 4 차원 검증 |
1. ★ 시리즈 메타 가설 "3 단계 수익 모델" 의 두 번째 단계
2. ★ 4 페르소나 시스템 완성
[Phase 1.0~1.1 (Day 1~90) — 2 페르소나] - STAT (통계학자) — 무료 - OBSERVER (균형 관찰자) — 무료 - COACH·INSIDER 미활성화 (코드 prep만) [Phase 1.2 (Day 91~180) — 4 페르소나 완성] - COACH (전술 분석가) — 프리미엄 ★ - INSIDER (이적·트레이딩) — 프리미엄 ★ - 무료 사용자: STAT·OBSERVER 그대로 - 구독자: 4 페르소나 모두 + 광고 제거
📘 권4 제0장 정리
핵심 한 줄: 권4 = 90일 (Day 91~180). Stripe + 4 페르소나 + 첫 구독자 + 시리즈 메타 가설 "3 단계 수익 모델" 두 번째 단계.
- Day 91~94 4일 휴식: Phase 1.0+1.1 마무리 + 권4 진입 의식
- 12주 구조: 1주차 Stripe / 2주차 4 페르소나 / 3주차 분리 노출+G9 / 4주차 G9 휴식+12개월 강화 / 5~8주차 구독 전환율 / 9~12주차 G11 FINAL
- 권4 5확장 진화: E1 INSIDER 환각 방지 / E2 R4+12개월 강화 3 사이클 / E3 Stripe webhook 보안 / E4 +90 트레이스 / E5 4 페르소나 완성
- 다음 장: 권4 제1장 — Day 95~101 (1주차, Stripe 통합 + DB 추가)
Day 95~101: 1주차 — Stripe 통합 + DB 추가
Phase 1.2 첫 주 · users·subscriptions·payments 테이블 · 이메일 OAuth · 첫 구독 시뮬
작업 (4h, 페이스 4h/일 정상 복귀)
cd tsv git status # 깨끗한 상태 cat REVIEW.md | tail -3 # READY: YES claude /model claude-sonnet-4-6 /effort medium /context [Claude Code] "Phase 1.2 시작 — SPEC v5.0 + PLAN v4.0 점검. 요구사항: 1. SPEC v5.0 § Phase 1.2 본문 검토 (권3 제5장 Day 71~72 작성) 2. PLAN v4.0 (권3 제5장 Day 74~76 작성) 자세한 일정 검증 3. CLAUDE.md §10 업데이트: - Phase 1.2 시작 명시 - 4 페르소나 시스템 prep - Stripe 통합 prep 4. 권3 자료 (SPEC v5.0 + PLAN v4.0 + COACH v1 + INSIDER v1) 모두 정상 inventory 검증 Day 96~ 작업 진입 준비"
## Phase 1.2 Day 95 — ★ 권4 시작 ★
[계획]
- Phase 1.2 시작 + SPEC·PLAN 점검
[실행]
- SPEC v5.0 § Phase 1.2 본문 점검 ✅
- PLAN v4.0 12주 일정 + G9·G10·G11 점검 ✅
- CLAUDE.md §10 업데이트:
· Phase 1.2 시작 (Day 95)
· 4 페르소나 prep ✅
· Stripe 통합 시작
- 권3 자료 inventory:
· COACH v1 (110줄) + INSIDER v1·strict (115+140줄) ✅
· 4 페르소나 자동 일관성 테스트 진화 ✅
[LogOnTable 트레이스 — 권3 자료 활용]
> 결정: 권3 5~7주차에서 prep 완료된 자료 즉시 활용 시작
> 근거: 1탄 v2 새 6장 6-3 절 "prep 단계 vs 작업 단계 분리" 메타 원칙.
권3 안에서 prep → 권4 즉시 시작 = 페이스 보호 + 흐름 유지
> 대안: 권4 시작 시점에 prep — Day 95~98 4일 부담
> 결과: 권4 시작 페이스 안전, 산출물 첫 주부터 작동
[누적] 244.5h + Day 95 (4h) = 248.5h
[E2] 4h/일 정상 복귀 (R4 회복 후)작업 (4h)
[Claude Code, Sonnet + medium]
"users 테이블 + 이메일 OAuth 구조.
요구사항:
1. supabase/migrations/0008_users.sql:
- users 테이블:
· id (UUID, PK)
· email (UNIQUE, NOT NULL)
· email_verified (BOOLEAN, default false)
· oauth_provider (TEXT — google·apple·email)
· oauth_id (TEXT, NULLABLE)
· created_at, updated_at, last_login_at
- INDEX: email
- ⚖️ E1 [5] 개인정보처리방침 §1 일관 (수집 명시)
2. Next.js 인증 흐름:
- src/app/api/auth/[provider]/route.ts (Google·Apple·email)
- 이메일 OAuth (NextAuth + Google Provider + Apple Provider)
- 세션 관리 (JWT or DB session)
3. 무료 사용자 vs 가입 사용자 분리:
- Phase 1.0~1.1: 모든 사용자 무료 (인증 X)
- Phase 1.2 시작: 가입 = 인증 + 기능 일부 자유 (구독 전)
- 구독자 = 4 페르소나 + 광고 제거 등
4. CLAUDE.md §3 절대 준수 — API 키 .env"- supabase/migrations/0008_users.sql (60줄) ✅
- src/app/api/auth/[provider]/route.ts (90줄) ✅
- NextAuth + Google + Apple Provider 통합 ✅
- 첫 가입 시뮬 테스트 통과 ✅
근거: 글로벌 사용자 (TSV 본질). 카카오 = 한국 사용자만 + Phase 1.2 구독 글로벌 시장 확장 의도.
대안: 카카오 추가 — 한국 사용자 편의 (Phase 1.2 한국 시장 제외·글로벌)
결과: 한국 사용자 일부 진입 부담 (Google 계정 선호도 ↑) — 수용
작업 (4h)
[Claude Code, Sonnet + medium]
"subscriptions + payments 테이블 + Stripe SDK 통합.
요구사항:
1. supabase/migrations/0009_subscriptions.sql:
- subscriptions 테이블:
· id (UUID, PK)
· user_id (FK users)
· stripe_subscription_id (TEXT, UNIQUE)
· status (TEXT — active·past_due·canceled·trialing)
· current_period_start, current_period_end
· canceled_at, created_at
- INDEX: user_id, stripe_subscription_id
2. supabase/migrations/0010_payments.sql:
- payments 테이블:
· id (UUID, PK)
· subscription_id (FK)
· stripe_payment_intent_id (TEXT)
· amount_cents (INT — $4.99 = 499)
· status (TEXT — succeeded·failed·refunded)
· created_at
- INDEX: subscription_id
3. Stripe SDK 통합:
- lib/stripe/client.ts (Stripe API 클라이언트)
- 환경변수: STRIPE_SECRET_KEY, STRIPE_WEBHOOK_SECRET
- 구독 상품 등록 ($4.99/월, recurring monthly)
4. CLAUDE.md §3 절대 준수"근거: Phase 1.2 = 월 구독 = 매월 자동 결제 의무. Subscription API 자동 재결제 + 미납 처리 + 취소 흐름 = 운영자 부담 최소화
대안: 단일 결제 + 매월 수동 알림 — 사용자 이탈 ↑ + 운영자 부담 ↑
결과: Stripe 수수료 약 3% (단일 결제도 동일) — 비용 영향 없음
작업 (4h)
[Claude Code, Sonnet + medium]
"Stripe webhook 엔드포인트 — 구독 이벤트 처리.
요구사항:
1. src/app/api/webhooks/stripe/route.ts:
- Stripe 이벤트 처리:
· customer.subscription.created → subscriptions INSERT (active)
· customer.subscription.updated → subscriptions UPDATE
· customer.subscription.deleted → subscriptions canceled
· invoice.payment_succeeded → payments INSERT (succeeded)
· invoice.payment_failed → payments INSERT (failed) + Slack 알림
2. ★ 보안 (G-8 NEW — Stripe webhook 보안):
- signature 검증 (STRIPE_WEBHOOK_SECRET)
- 잘못된 signature → 400 + 로그
- replay attack 방지 (timestamp 검증)
3. 자동 일관성 — Phase 1.2 구독 상태 변경 시:
- 구독자 광고 제거 (즉시 적용)
- 4 페르소나 권한 부여
- 구독 종료 시 권한 회수
4. 에러 처리 + Sentry 통합"근거: webhook = 외부 entry point = 보안 risk. 가짜 webhook 시뮬 시 구독 상태 위조 = ★ Position C 손상 (구독자만 광고 제거) → 검증 의무. ⭐ E3 G-8 NEW (webhook 보안) 작동.
대안: signature 검증 제외 — 보안 risk 발생 (사기 위험)
결과: 정상 webhook 약간 느림 (signature 검증 +5ms) — 수용
권1 제4장 두 검토자 12건 (4+6+2) 외에 Phase 1.2 시점 13번째 발견 = Stripe webhook 보안 검토. 1탄 v2 메타 원칙의 "Phase 진화 시 새 보안 risk 발견" 입증.
## Phase 1.2 Day 99 — ★ 토요일 작업 X ★ [E2 의식] - 토요일 X (권4 1주차) - cron 결과 5분 점검만 [자동 cron Day 95~98 결과] ✓ 19리그 cron 일 평균 37 articles 발행 ✓ 자동 일관성 100% ✓ ⚖️ Position C 다층 보호 47일 무사고 ✓ Sentry crash-free 100%
작업 (4h)
[Claude Code, Sonnet + medium] "첫 구독 시뮬 결제 테스트 — Stripe Test Mode. 요구사항: 1. 테스트 사용자 가입 (test@junho.kr): - users INSERT - 이메일 OAuth Google 통과 2. Stripe Test Card (4242 4242 4242 4242): - 첫 구독 시뮬 결제 - subscriptions INSERT (active) - payments INSERT (succeeded) - webhook 처리 검증 3. 구독자 권한 부여 검증: - 4 페르소나 노출 (COACH·INSIDER 추가) - 광고 제거 - 마감 D-1 알림 prep (3주차 작업) 4. 구독 취소 시뮬: - cancellation 이벤트 처리 - 권한 회수 검증 5. 결제 실패 시뮬 (4000 0000 0000 0002 카드): - payments status 'failed' - Slack 알림 검증"
- 가입 + 인증 통과 ✅
- Stripe Test Mode 결제 성공 ✅
- subscriptions INSERT (active) ✅
- payments INSERT (succeeded, $4.99) ✅
- 구독자 권한 부여 즉시 적용 ✅
- 광고 제거 검증 ✅
- 4 페르소나 노출 검증 (COACH·INSIDER 활성화 prep) ✅
- 취소 시뮬 + 권한 회수 ✅
- 결제 실패 시뮬 + Slack 알림 ✅
★ Stripe 통합 작동 ✅
근거: 권1 제2장 Gemini 패턴 (정상 + 실패 모두 검증) + 첫 사용자 진입 시점 사고 방지 의무. "5 시나리오 모두 의도한 동작" 검증.
대안: 정상 시나리오만 — 실패 시 운영자 즉시 대응 부족
결과: 5 시나리오 작성 시간 1.5h — 운영 안전 가치
## Phase 1.2 Day 101 — 1주차 회고 ### 산출물 (Day 95~98·100, 5일 작업) 1. CLAUDE.md §10 Phase 1.2 시작 명시 2. 0008_users.sql (60줄) 3. 0009_subscriptions.sql (50줄) 4. 0010_payments.sql (40줄) 5. src/app/api/auth/[provider]/route.ts (90줄, OAuth) 6. lib/stripe/client.ts (70줄) 7. src/app/api/webhooks/stripe/route.ts (180줄) 8. 첫 구독 시뮬 5 시나리오 검증 총: 7 파일 + 3 SQL migration + Stripe 통합 ### 5확장 운영 단계 작동 (이번 1주차) - ⚖️ E1: 인증 정보 수집 → 개인정보 §1 일관 (Day 96) - ★ E2: 1주차 누적 24h, 4주 누적 진행 중 - ⭐ E3: ★ G-8 NEW (Stripe webhook 보안) - ⭐ E4: 1주차 = 6 트레이스 → 누적 ~111 - ⭐ E5 [4]: prompt 분리 (4 페르소나 prep) ### Stripe 통합 본질 권3 (Phase 1.1) 광고 단계 → 권4 (Phase 1.2) 구독 단계 = 시리즈 메타 가설 "3 단계 수익 모델" 의 두 번째 단계 진입. ### 다음 2주차 (Day 102~108) 목표 - Day 102: persona_prompts COACH·INSIDER 활성화 - Day 103: 4 페르소나 cron 통합 + Sonnet 비용 추정 - Day 104: 4 페르소나 자동 일관성 테스트 - Day 105: ⭐ E5 [8] supremacy 차단 자동 검증 - Day 106: 토요일 X - Day 107: 4 페르소나 첫 발행 검증 - Day 108: 일요일 회고 목표 누적: Day 108 끝 약 286h 페이스: 4h/일 정상 [누적] 264.5h + Day 101 (1h 회고) = 265.5h
git add SPEC.md PLAN.md supabase/migrations/0008_users.sql \ 0009_subscriptions.sql 0010_payments.sql \ src/app/api/auth/ src/app/api/webhooks/stripe/ lib/stripe/ git commit -m "Phase 1.2 Day 95~101: 권4 시작 + Stripe 통합 + DB 3 테이블 + 첫 구독 시뮬"
권1 제4장 두 검토자 12건 (4+6+2) 입증 완성 후 Phase 1.2 시점 13번째 발견 = ★ Stripe webhook 보안 (signature 검증 + replay 방지).
| Phase | 발견 검토자 | 발견 사항 | 일자 |
|---|---|---|---|
| Phase 0 | Gemini + Claude (12건) | Position C·SSOT·R4·E3·E4·E5 등 | Day 1~36 |
| Phase 1.2 NEW | Day 98 Stripe 통합 시점 | ★ webhook signature 검증 | Day 98 |
| 자리 | 줍줍 (Phase 2 6개월 후 시작) | TSV (3탄 권4 1주차, 본 장) |
|---|---|---|
| 1주차 핵심 | 구독 시스템 + Stripe (Phase 2) | Stripe + DB 3 테이블 + 첫 구독 시뮬 |
| Phase 진화 보안 | (Phase 2 진입 시점) | ★ G-8 NEW Stripe webhook |
| 1주차 누적 | (줍줍 Phase 2 작업 없음) | 24h |
| 1주차 LogOnTable | — | ~6 트레이스 |
구조 일관 ✅ + TSV 특수 (Phase 진화 시점 반복 검토자 사이클).
📘 권4 제1장 정리
핵심 한 줄: Day 95~101 = Phase 1.2 시작 + Stripe 통합 + DB 3 테이블 + 첫 구독 시뮬 통과.
- 1주차 산출물 (7 파일 + 3 SQL): users·subscriptions·payments 테이블 / 이메일 OAuth (Google·Apple) / Stripe SDK + 상품 등록 ($4.99/월) / webhook 엔드포인트 + signature 검증 / 5 시나리오 통합 테스트
- ★ Stripe 통합 작동 ✅: Test Mode 첫 구독 결제 통과 / 5 시나리오 (정상·취소·실패·권한·환불) 모두 검증
- ★ ⭐ E3 G-8 NEW: 권1 제4장 12건 외에 Phase 1.2 시점 13번째 발견 / Phase 진화 시 새 보안 risk 발견 메타 원칙 입증
- 누적: 265.5h
- 다음 장: 권4 제2장 — Day 102~108 (2주차, COACH·INSIDER 활성화 + 4 페르소나 시스템 완성)
★ Phase 1.2 첫 주 완성 — Stripe 통합 + DB 3 테이블 + 첫 구독 시뮬 5 시나리오 통과.
특히 ★ ⭐ E3 G-8 NEW 등장 — 권1 제4장에서 박힌 12건 (4+6+2) 외에 Phase 1.2 진입 시점 13번째 발견. "Phase 진화 시 새 보안 risk 발견의 메타 원칙" 입증. 권5·권6 진화 시점에도 NEW 발견 가능 (장기 운영 안정성).
다음 장에서 2주차 (Day 102~108) — COACH·INSIDER persona 활성화 + 4 페르소나 시스템 완성. ⭐ E5 [4] 4 페르소나 prompt + [6] 4 페르소나 자동 일관성 + [8] supremacy 차단 모두 등장합니다.