Day 36~42: G3 통과 의식 + E1 외부 노출 1차
Phase 1.0 후반 마무리 — 페이스 축소 + 매칭 알고리즘 + E2E 시뮬 + ★ G3 PASSED
📑 이 챕터에서 다룰 내용
권3 제1장 끝 (Day 35) 에서 5주차 끝 R4 트리거 초과 → 6주차 페이스 25% 축소 자동 결정. 이번 주는 "매일 3h" 페이스로 G3 통과를 향합니다.
| 사전 지식 체크 | 이 장의 목적 | 완료 후 결과물 |
|---|---|---|
| Day 30~35 / 페이스 축소 (3h/일) / G3 통과 조건 / SPEC v4 § 회색지대 결정 ① ② | Day 36 일요일 회고 + Day 37~41 G3 작업 (페이스 축소) + ★ Day 42 G3 PASSED + E1 외부 노출 1차 | G3 PASSED + git tag v0.1-G3-passed + 외부 노출 4자리 1차 + 6주 회고 |
## Phase 1.0 Day 36 — ★ 5주차 끝 추가 휴식 ★
[E2 의식]
- 작업 X (오전·오후)
- 회고만 30분 (저녁)
[5주차 회고]
산출물: 두 탭 메인·필터·상세 (~870줄)
단계적 기여 3 단계 (~340줄)
닉네임 + 후기 리스트 (~150줄)
E5 [2] 톤 분리 18 카피 분기
### ⭐ E5 [2] 본격의 본질
1탄 v2 부록 H-5의 "같은 사실 다른 톤"이 UI 카피로 박힘.
사장님은 "사업장에 도움" 시민은 "내 상황" —
같은 줍줍 행위인데 다른 정체성. SSOT 시스템 깊이.
### ★ E2 자동 보호 본격 작동 입증
- 4주 누적 73h → R4 60h 트리거 초과 인지 (Day 35)
- 6주차 페이스 25% 자동 축소 (4h/일 → 3h/일)
- "피곤하다" 신호 부재이지만 트리거만으로 자동 보호
- 1탄 v2 부록 H-2 R4 본문이 "가설"이 아닌 "운영 자동화"
[누적] 108h (Day 36 변동 없음)
작업 (3h — 페이스 축소 적용)
요구사항: 1. components/ReviewReportButton.tsx — 각 후기 옆 작은 버튼 2. 클릭: modal 노출 → 신고 사유 선택 (4 카테고리) · 욕설·혐오 (1h SLA) · 허위 정보 (4h SLA) · 광고·홍보 (24h SLA) · 기타 (24h SLA) 3. INSERT reports + admin Slack 알림 트리거 4. 신고 후 사용자에게 '접수됐습니다' toast (24h 내 처리 안내) 5. E5 [2] 카피 두 탭 분기: - business: '문제 후기 신고' - individual: '부적절한 후기 신고'
결정: 4 카테고리 (욕설·허위·광고·기타) + SLA 차등
근거: SPEC v4 §3 reports 본문 + C-4 발견. 욕설은 1h 내 처리 의무 (1순위 커뮤니티 게시 직후 신고 폭증 위험)
대안: 1 카테고리 (모든 신고 24h SLA) — 욕설 노출 부담 ↑
누적: 108h + Day 37 (3h) = 111h
권1 제3장에서 SPEC § 회색지대 결정 두 결정 박힘. 권3 Day 38이 첫 외부 노출 자리입니다. About + 약관 + 개인정보처리방침 본격은 Day 57~58, Day 38은 콘텐츠 면책 (각 화면 짧은 한 줄) 1차입니다.
요구사항: 1. components/Footer.tsx — 모든 페이지 하단: '본 서비스는 정보 제공 목적, 신청 결과 보장 X | About | 약관 | 개인정보' 2. components/ContentDisclaimer.tsx — 콘텐츠 페이지 상단 (소형): 상세 페이지 + 후기 리스트 + 마이페이지에 노출 '본 정보는 공식 사이트 자료 + 사용자 경험 데이터 결합. 신청 결과 보장 X' 3. CLAUDE.md §3 Critical Constraints 준수 — "신청 보장 / 신청 대행" 표현 X 절대 준수 4. About·약관·개인정보처리방침 페이지는 placeholder만 (Day 57~58 본격)
// components/Footer.tsx — ⚖️ E1 외부 노출 4자리 [4] Footer
import { Link } from 'expo-router';
export function Footer() {
return (
<View className="px-4 py-3 border-t border-gray-200 bg-gray-50">
<Text className="text-xs text-gray-500 text-center mb-2">
본 서비스는 정보 제공 목적이며, 신청 결과를 보장하지 않습니다.
</Text>
<View className="flex-row justify-center gap-4">
<Link href="/about" className="text-xs text-gray-600 underline">About</Link>
<Link href="/terms" className="text-xs text-gray-600 underline">약관</Link>
<Link href="/privacy" className="text-xs text-gray-600 underline">개인정보</Link>
</View>
</View>
);
}
결정: Day 38 = 콘텐츠 면책 일관 노출 시작. About·약관·개인정보 본격은 Day 57~58 (분리)
근거: 사용자가 화면 처음 만지는 시점 (Day 33 체크박스) 부터 면책 노출 의무. 권1 제3장 E1 결정 ① 변호 논리 사실 성립을 위해 모든 화면 일관.
대안 1: Day 30 메인부터 모든 4자리 본격 — 분량 부담, 불완전 노출 위험
대안 2: Day 64 심사 직전 일괄 — 사용자 노출 시점부터 미적용 = 위험
누적: 111h + Day 38 (3h) = 114h
요구사항:
1. lib/matching.ts (80줄):
- 사용자 user.target_* 와 benefits.target_* 매칭
- 가중치 점수 산출 (5점 만점):
· 정확 매칭: 5
· 부분 매칭: 3
· 미매칭 (null 허용): 1
· 미매칭 (배제): 0
- target_age_max NULL = ALL 매칭
2. 정렬 통합 — Day 31 'received_likely' 정렬에 적용
3. lib/matching.test.ts (50줄, 10 시나리오)
결정: 가중치 5점 만점 (정확·부분·미매칭(null)·미매칭(배제))
근거: 점수 분포가 매끈 (대부분 사용자 평균 3.5~4.5) → 의미 있는 정렬
부작용: target_* 모두 null인 사용자는 매칭 점수 1 균일 → 신규 사용자에게 '마감 임박순' 디폴트 (Phase 1.1 검토)
누적: 114h + Day 39 (3h) = 117h
첫 진입 → 소셜 로그인 완료
"수원시 카페 운영하는 든든한 줍줍이"
시군구·업종·매출 단계 입력
사장님 톤 "오늘 받을 수 있는" 메인 화면
'수원시 카페 청년 지원금'
부담 0 단계 완료
부담 낮음 단계 완료
부담 선택 단계 완료
ReviewList 정상 표시
총 시뮬 시간: 4분 8초
총 시뮬 시간: 4분 8초 (사용자 시점). 모든 단계 E1 면책 노출 일관 (Footer + ContentDisclaimer) ✅
근거: 단계적 기여 시스템의 "부담 곡선이 자연스러운지" 코드 입증. 부담 0~선택 3단계가 부담 없이 흐릅니다.
누적: 117h + Day 40 (3h) = 120h
G3 — Day 42: 두 탭 + 단계적 기여 작동 [기능 통과 조건] ✅ 두 탭 메인·필터·상세 페이지 정상 (Day 30·31·32) ✅ 단계적 기여 3 단계 (체크박스·3택·후기) (Day 33·34·35) ✅ 후기 신고 UI (Day 37) ✅ E1 외부 노출 1차 (Footer + ContentDisclaimer) (Day 38) ✅ 매칭 알고리즘 (Day 39) ✅ E2E 통합 시뮬 1명 줍줍 완료 (Day 40) ✅ 일관성 테스트 5/5 (E5 [6]) ✅ E5 [2] 톤 분리 (UI 카피 18 분기) (Day 30~35) ✅ 매칭 정렬 'received_likely' 작동 (Day 39) [★ 페이스 점검 (E2)] ⚠️ 4주 누적 (3~6주차): 14+21+24+18 = 77h — R4 트리거 60h 초과 17h ✅ 토요일 X 일관 (Day 5·12·19·26·33·40) ✅ 주간 회고 (Day 35 5주차 + Day 42 6주차) [종합 판정] G3 기능 9/9 PASS + 페이스 보호 결정 → G3 PASS (단, 7주차 페이스 추가 축소)
결정: 7주차 페이스 2.5h/일 (지금까지 최저)
근거: 4주 누적 77h가 5주차 끝 73h보다 +4h 증가. 자동 보호 의식 2단계 강화. 사용자 "피곤하다" 신호 부재이지만 트리거가 의식적 보호.
부작용: 7주차 산출물 2~3개 줄어듦 (일부 기능 → 8주차로 이연 검토)
누적: 120h + Day 41 (3h) = 123h
git tag v0.1-G3-passed git push origin v0.1-G3-passed
## Phase 1.0 Day 42 — ★ G3 PASSED ★ [기능 통과 조건] 9/9 PASS ✅ [페이스 점검] 4주 누적 77h ⚠️ → 7주차 페이스 추가 축소 결정 ✅ [git tag] v0.1-G3-passed ✅ ## 6주 회고 (Day 30~42, Phase 1.0 후반 첫 절반) ### 산출물 — 13개 파일 + tests 2개 [Day 30~35 (5주차)] 1. src/app/(tabs)/business/index.tsx (160줄) 2. src/app/(tabs)/individual/index.tsx (155줄) 3. src/components/BenefitCard.tsx (110줄, tone prop) 4. src/app/(tabs)/business/filters.tsx (130줄) 5. src/app/(tabs)/individual/filters.tsx (135줄) 6. src/app/(tabs)/business/[benefit_id].tsx (150줄) 7. src/app/(tabs)/individual/[benefit_id].tsx (145줄) 8. src/components/BenefitDetail.tsx (95줄) 9. components/JupjupCheckbox.tsx (100줄) 10. components/JupjupResultPicker.tsx (130줄) 11. components/JupjupReviewForm.tsx (110줄) 12. components/UserNicknameBadge.tsx (60줄) 13. components/ReviewList.tsx (90줄) [Day 37~40 (6주차)] 14. components/ReviewReportButton.tsx (90줄) 15. components/Footer.tsx (50줄, E1 [4]) 16. components/ContentDisclaimer.tsx (40줄) 17. src/app/(legal)/about·terms·privacy (3 placeholder) 18. lib/matching.ts (80줄) [tests] - lib/matching.test.ts (50줄, 10 시나리오) - tests/e2e/user-journey.test.ts (130줄, 10 단계) 총: ~1,750줄 ### 1탄 v2 메타 원칙 입증 (이번 6주차) 1. E2 자동 보호 2번 작동 — R4 본문이 "운영 자동화" 2. Agent Teams + E5 [2] 자연 결합 — 두 탭 병렬 -50% 3. E1 외부 노출 일관 시작 — Footer + ContentDisclaimer
[권1 Phase 0] 21h [권2 Phase 1.0 절반 (1~4주차)] 63h → 누적 84h [권3 Phase 1.0 후반 (5~6주차)] 42h → 누적 126h [6주차 끝 4주 누적] 14+21+24+18 = 77h ⚠️ → 7주차 페이스 축소 [Phase 1.0 후반 절반 본질] - 두 탭 UI + 단계적 기여 (사용자 첫 만남) - ⭐ E5 [2] 톤 분리 (18 카피) - ⚖️ E1 외부 노출 1차 (Footer + Disclaimer) - ★ R4 자동 보호 2번 작동 (의식적 페이스 보호 강화)
📌 권3 제2장 정리
- 핵심 한 줄: Day 36~42 = G3 통과 (페이스 축소 + E1 외부 노출 1차 + 매칭 알고리즘 + E2E 시뮬). G3 PASSED + git tag.
- 6주차 산출물: 후기 신고 UI (90줄) + E1 Footer + ContentDisclaimer (90줄) + About·약관·개인정보 placeholder + 매칭 알고리즘 (80줄) + E2E 시뮬 (130줄)
- ★ E2 자동 보호 본격 입증: 5주차 끝 73h → 6주차 페이스 축소 / 6주차 끝 77h → 7주차 추가 축소 (3h → 2.5h/일)
- E1 외부 노출 1차: Footer + ContentDisclaimer 일관 메시지. About·약관·개인정보 본격은 Day 57~58
- E5 7 규칙 진행률: 6 본격 ✅ ([1][2][3][4][6][7]) / 1 진행 중 ([5])
- 누적: 126h / 4주 누적 78h (R4 추가 축소)
- 다음 장: 권3 제3장 — Day 43~49 (Day 43 휴식 + 7주차 마이페이지·통계·Sentry 시작)