라이브: https://developjik.github.io/shimpyo/ · repo: https://github.com/developjik/shimpyo · 배포일 2026-08-17 (Seed Design 리뉴얼 v1.0)
- Vite 6 + React 19 + TypeScript + 당근 Seed Design (@seed-design/react 2.3 · css 2.5 · vite-plugin 2.1, Apache-2.0)
- 계산 엔진은 DOM 없는 순수 모듈
src/lib/engine.ts— 앱과 CI 골든 러너가 같은 소스 공유 (복제본 이중관리 없음) - 골든 러너:
npm run golden(Node 내장 --experimental-strip-types, esbuild 불필요) - 테마: 시스템/라이트/다크 3단 토글 (data-seed-color-mode, localStorage shimpyo.theme)
- L0 문서 4편(public/)은 Seed 라이트 팔레트에 맞춰 리스타일
주의 (운영): Pages는 Fastly 캐시(TTL ~10분)를 앞에 두고 있어 배포 직후 구 index.html이 보일 수 있음 — 구 JS 해시 404는 이 캐시 때문. 10분 후 재확인할 것.
Phase 2 산출. GitHub Pages 정적 배포 + ECOS 월간 자동갱신 + 골든 케이스 배포 차단까지 전부 준비된 상태.
shimpyo/ (Vite 루트)
├── index.html Vite 엔트리 (data-seed 테마 속성 + OG 메타)
├── src/
│ ├── main.tsx / App.tsx / store.ts / styles.css
│ ├── lib/engine.ts 계산 엔진 (DOM 없음 — 앱/CI 공유, 골든 15개)
│ └── views/ Sim · BT · Band · Rules · Golden · About (6탭)
├── seed-design/ CLI로 복사된 SEED 스니펫 (내 소스 — 수정 가능)
├── public/ L0 문서 4편 + robots.txt + .nojekyll (dist 루트로 복사됨)
├── .github/workflows/
│ ├── ci.yml 푸시마다 골든 + 프로덕션 빌드 검증
│ ├── deploy.yml 골든 통과 → 빌드 → Pages 배포 (Actions 방식)
│ └── monthly-data-update.yml 매월 5일 ECOS 갱신 + 회귀 + 빌드 + 커밋
├── scripts/ ecos_update.py · golden_runner.ts · update_freshness.mjs
├── supabase/schema.sql 익명 분포 원격 집계 준비물 (insert-only RLS)
└── data/ (Actions 생성) ecos_snapshot.json, freshness.json
도메인 등록→ 추후 결정 (2026-08-17): 초기 테스트는 github.io URL로 진행. 커뮤니티 링크 확산·검색 노출이 자리잡으면 그때 shimpyo.kr(+.dev) 등록 후 Custom domain 연결. 나중 연결 시 기존 github.io 주소는 새 도메인로 301 리다이렉트되므로 지금 퍼진 링크는 죽지 않음.저장소 생성·푸시→ 완료 (2026-08-17, gh CLI + device auth)- ECOS 키 발급 → 남음: https://ecos.bok.or.kr 오픈API 신청(무료) → repo Settings → Secrets and variables → Actions →
ECOS_KEY등록. 등록 전까지 워크플로는 골든 케이스만 돌고 데이터 수집을 건너뛰도록 설계됨.
그다음은 자동:
Settings → Pages → main 루트 지정→ 완료 (API로 활성화, HTTPS 강제 적용됨) — https://developjik.github.io/shimpyo/- 도메인 연결 시: Pages → Custom domain에 shimpyo.kr 입력, DNS A/CNAME 레코드 안내대로 세팅, HTTPS 대기 후 Enforce
- Actions가 매월 5일 06:00 KST에 ECOS를 받아 회귀 테스트 → 전부 PASS일 때만 커밋/배포 (ECOS 키 등록 후 활성화)
| 시점 | 할 일 | 도구 |
|---|---|---|
| 매월 5일 | ECOS 자동 갱신 + 골든 13케이스 자동 검증 | Actions (자동) |
| 매년 1~2월 | 고시 시즌: A값·건보료 단가·세율 구간 갱신 | rules 테이블 수동 + 골든 기대값 갱신 → 검증 탭에서 PASS 확인 |
| 6개월 무갱신 시 | 앱 헤더에 "상수 검증 N일 경과" 경고 배지 자동 표시 | stalenessCheck() (이미 구현됨) |
| 규칙 개정 뉴스 | rules_v0.json의 watchlist 7건 대조 | 문서화된 체크리스트 |
| 매일 07:30 | 법령 해시 diff (건보법·시행령·소득세법·조특법·국민연금법) | Actions law-watch (LAW_API_KEY 등록 후) |
| 2026-09-06 (온보딩 배포 2주 후) | Phase 7 baseline 판정: CF 이탈률·/done/goal 저장 완료율·/s/ 공유 유입 전후 비교 | Cloudflare 대시보드 |
| 데이터 변경 시 | npm run snapshot 으로 리니지 갱신 → 골든 재검증 |
CI가 매니페스트 불일치를 차단 |
- 골든 케이스 20/20 PASS (기존 15 + MC G16~G20: 결정론·스냅샷·스트레스·양성·지속가능 인출률)
- 몬테카를로 v1: 역사 3년 블록 부트스트랩 단일 모델, 시드 고정(mulberry32) — 10k 경로 155ms (Node 기준)
- 데이터 스냅샷 리니지: manifest sha256 (US_CSV/KR_CSV/KR_DIV/ecos) CI 검증, 앱 푸터 "데이터 기준" 표시
- 콘솔 에러 0, 모바일 375px 오버플로우 0 (Phase 3 시점 — Phase 4 UI도 동일 기준으로 라이브 검증)
- 또래 밴드: 가계금융복지조사 2025본 (한은 통계표 + KOSIS 교차 일치)
- 백테스트: 미국 94.1% @4% (트리니티 정합), 한국 42.9% (6/14 사이클, PR·TR 배당토글 동일 — 과거 기록된 57.1%(TR)은 현 임베드 데이터로 재현 불가, 2026-08-24 전수 설정 스캔 확인. TR 25y는 63.2%·20y는 79.2%로 기간에 따라 크게 변함)
- 인출 방식별 유효 인출률: 이자배당 3.20% / 해외매도 3.59% / 연금혼합 3.89% / 국내매도 3.96%
계획 문서: 쉼표 고도화 계획 v1 (5페르소나 × 2라운드 토론 합성). 구현 내용:
| 항목 | 상태 | 비고 |
|---|---|---|
| LICENSE (Apache-2.0) | ✅ | 포크 보험 (cFIREsim-open 방식) |
| sitemap.xml + robots Sitemap | ✅ | index + L0 6편 |
| Cloudflare Web Analytics | ⏸ 토큰 대기 | index.html 주석 스터브 — 발급 후 주석 해제 |
공유 루프: 상태 URL + u=share 채널코드 + 결과카드 PNG |
✅ | canvas 카드 (첫줄 답 + 3열 미니 + rules 칩) |
| 3질문 온보딩 → 첫 줄 답 → 3열 → 상세 (4단 구조) | ✅ | 상세는 전문가용 접힘 |
| Sim→L0 역방향 링크 (용어별) | ✅ | 4%/건보료/몇억/ISA/방법론/리포트0 |
| 또래 밴드 두 숫자 한 줄 (전세금 포함/제외) | ✅ | 가계금융복지조사 10분위 |
| 피드백: GitHub 이슈 프리필 | ✅ | 입력값 자동 첨부 |
| ISA 만기 데드라인 L0 + 절세 계산기 | ✅ | isa-2026.html (개편안 pending 라벨) |
| 몬테카를로 v1 (블록 부트스트랩, 워커, 골든 G16~G20) | ✅ | 방법론 문서 동반 |
| 방법론 문서 (표본 경계·꼬리 한계·리니지) | ✅ | methodology.html |
| 데이터 스냅샷 매니페스트 (sha256 + CI 검증) | ✅ | data/snapshots/manifest.json |
| 법령 감시 (국가법령정보센터 API, 일 1회) | ⏸ 키 대기 | law-watch.yml — LAW_API_KEY 등록 후 활성화 |
| 연금 수령 순서 엔진 | ⛔ 게이트 대기 | 온보딩 배포 2주 후 상세조건 진입자 연금·건보료 조정 ≥15% 시 착수 |
| giscus 댓글 / Supabase L2 | ⛔ 유보 | 제보 5건 / 유입 임계 도달 후 재검토 |
4개 에이전트 조사(데이터소스/포트폴리오/세제/UX) 기반. 골든 26/26 (G21~G24c 배당 6본 추가).
- 포트폴리오 탭 (신규): 프리셋 3종(월급통장/5050/배당성장) · 큐레이션 14종목(국내주식·국내ETF·미국직투·리츠) · 주수 입력 · 계좌별 세제(일반 15.4%·미국직투 15%(국내 0%)·ISA/연금 면세) · 월별 배당 캘린더(국내주 4월 집중 재현, 월 클릭 드릴다운)
- 세제 정정(중대): 미국 직투 배당의 국내 추가 원천징수는 0% (max(0,14%−15%)=0, 소득세법 §127의2) — 과거 오답(15.4% 추가) 수정. 국세청 보도자료·법제처 원문 기반
- 데이터 정책: 직전 실적 확정 배당만, 특별배당 제외, 미검증 수치 status:pending 배지. 갱신은 분기 수동 큐레이션(DART/운용사/EDGAR)
- Sim 연동: 세후 연 배당 스칼라(divnet)가 SimState로 주입 — 첫 화면에 배당 카드, 공유 URL에 포함(중복계산 방지를 위해 표시 전용)
사용자 등록이 필요한 것 2가지:
- Cloudflare Web Analytics 토큰 — dash.cloudflare.com → Web Analytics → 사이트 추가 → 토큰 → index.html 내
beaco_TOKEN_교체 후 주석 해제 - 국가법령정보센터 Open API 키 — law.go.kr/openApi 가입 → repo Secrets에
LAW_API_KEY등록 (ECOS_KEY와 동일 패턴, 미등록 시 우회 종료)
온보딩 UX 설계자 × 금융리터러시 교육 전문가 × 프로덕트 엔지니어 × 레드팀 토론 → 팩트체크(CF WA 공식 문서: 해시 라우터·query·커스텀 이벤트 미지원 확정) 후 합성. 커밋 3148d6d·321cd6e.
| 항목 | 내용 | 방어 |
|---|---|---|
| 답 문장화 | answerSentence() — "월 250만원이면 7.5억, 2.5억 더 필요, 11년 5개월(2038년)" | 골든 G27 문구 고정 |
| 정직 조건절 | 첫 줄 답 아래 한국 TR 30년 생존률(실시간 계산, 현 데이터 42.9%) 명시 — 보장 오해 차단 | 고지강제 "미국 역사에서 나온 숫자" |
| 반영 태그 | 건보료·국민연금·세금·미국+한국 실데이터 → 방법론 링크 | 고지강제 "건보료 반영" |
| 완료 지점 | ② 답 뒤 "여기까지면 충분해요" 카드 → 저장 → /done/goal 완료화면(D-day) | 고지강제 "여기까지면 충분해요" |
| 더 알아보기 | ③~⑧ 삭제 없이 디바이더로 격상 (전문가 영역 보존) | - |
| 예시 프리필 배지 | "예시 값으로 보는 중" + 내 값 넣기 CTA — 첫방문 입력장벽 제거 | - |
| 잘 모르겠어요 칩 | 1인 가구 평균 169만원 주입 (RULES.stat1p, 가계금융복지조사 2025본 168.9만원) | 출처 RULES 등록 |
| 기대 설정 배너 | "위안 대신 검증된 숫자 — 답이 크면 숨기지 않습니다" (레드팀 승인안) | 고지강제 "숨기지 않습니다" |
| 용어 곁들이기 | 4% 룰·유효 인출률·공백기·고갈 확률·10분위 괄호 풀이 (첫 등장 1회, 치환 아님) | - |
| 측정 인프라 | 공유 URL /s/ 실경로화·/done/goal 경로·404.html SPA 폴백(deploy 검증)·?e= 죽은 코드 제거 | deploy.yml 스텝 |
버그 수정(배포 중 발견): krRowsWithDiv()에 레거시 $() DOM 참조가 남아 브라우저에서 ReferenceError → 조건절이 0.0%로 표시되던 것을 BT 탭과 동일한 KR_DIV 매핑으로 교체.
검증: 골든 44/44 PASS (G27 + 고지강제 4종 추가) · tsc 신규 에러 0 · 라이브 E2E 전항목 통과(배너·배지·칩·문장·조건절·태그·완료카드·/done/goal 왕복·/s/ 상태복원·pageerror 0).
판정 게이트 (2주 후): CF 이탈률·/done/goal 저장 완료율·/s/ 유입 전후 비교. 레드팀 반증 조건 — 초심자 5인 테스트 10분 내 3입력 + 결과를 "성공 확률·인출률"로 서술 3/5 이상이면 '쉬움 부족' 비판 철회. 개편 후에도 이탈이 유의미히 안 줄면 포지셔닝 문제로 전환. 연금 수령 순서 엔진 게이트(상세조건 진입자 연금·건보료 조정 ≥15%)의 2주 시계도 이 배포로 기동.
- KOSPI 지수 수치는 재배포 금지 원칙으로 수익률(변환값)만 임베드, 원본은 ECOS/KRX 링크 처리
- 상업 전환 시 GitHub Pages 상업 제약 검토 + KRX 라이선스 재검토 (현행 비상업)
- 모든 제도 상수의 출처 URL은 앱 "근거·출처" 탭과 rules_v0.json에 있음