유형: 현황 (www.punkpoll.com 클론 요건 매트릭스 — 라우트 기준)
최종 업데이트: 2026-07-06 (manager, jegwon '라우터 기준 process + 파이프라인 진입 전처리까지 클론 매트릭스')

www.punkpoll.com 정확 클론(+최적화 리팩토링) 요건 매트릭스

작성 원칙(jegwon 지침): ① '프론트 라우터 기준'으로. ② 각 라우트가 트리거하는 process를 '파이프라인 진입 전처리'까지 정확히. ③ '정확한 복제(클론)' + 우리는 '최적화 추가 리팩토링'. B 상태를 ✅일치 / 🔧불일치 / ❌미구현 표기.

컬럼: 라우트 | 사용자 액션 | 진입 전처리 | 호출 API(순서) | 다운스트림 파이프라인 | B 상태


A. 조회 여정 (읽기)

라우트액션전처리호출 API다운스트림B
/explore설문 탐색GET today/surveys(pageUnit,pageIndex)·today/tags플랫폼DB 조회✅ (백엔드 prod 읽기, 페이지네이션)
/channel채널 목록GET channels·channels/categories플랫폼DB
/channel/[id]채널 상세GET channels/{id}·해당채널 surveys플랫폼DB🔧 (메타라인·설문수 미세차)
/poll/[id]설문 상세·결과GET surveys/{uid}·surveys/{uid}/result(SYSTEM 집계)플랫폼DB+SYSTEM✅ (dev 재작성)
/live/[id]실시간 참여현황GET 실시간 통계플랫폼DB🔧 (날짜포맷)
/vote·/panel안내·패널(정적/패널 quota)

B. 인증 여정

라우트액션전처리호출 API다운스트림B
로그인 모달·/login카카오/텔레그램 로그인auth-gateway authorize→ticket exchange→login게이트웨이→BotAvax(nullifier)→api(JWT)✅ 카카오(실 연동) / 🔧 텔레그램(demo)
/user/[id]My Page세션GET user/profile·polls·token-holdings·token-history플랫폼DB(브릿지)✅ (2026-07-06)
/mwallet지갑세션GET wallet/me·balance온체인 balanceOf🔧 (A대조 미완)

C. ★생성·배포 여정 (핵심 — 파이프라인 진입)★

C-1. 직접 만들기 /builder (/builder/poll)

단계액션/API다운스트림B
진입채널 manager '새 설문' → 빌더❌ (채널 manager 미구현)
작성커버·제목·질문 구성🔧 (builder stub)
저장POST survey/basicInfo플랫폼DB draft🔧 (B는 자체 v2 생성 존재)
배포설정PATCH survey/distribution/{no} (fee·reward·기간)
★배포★POST mySurvey/distribution/{uid} {sendAlimTalk}→ '배포 8단계'(BotAvax→IPFS→BlockChainApi→콜백→deposit PUNK) + 알림톡❌ (B: 생성→Fuji배포 뼈대만)

C-2. AI로 만들기 /builder/ai-survey (기사→설문)

단계액션/API다운스트림B
1 뉴스검색GET copilot/news/search?query= (Naver)
2 기사분석GET survey/ai/meta?url= (기사 content/메타)AI
3 질문생성POST survey/ai/create (AI 질문 초안)AI
4 빌더전송POST survey/ai/builder → surveyNo빌더
5~(이후 C-1 배포설정·배포와 동일)배포 8단계

D. 채널 생성·관리 여정

라우트액션호출 API다운스트림B
/channel/create채널 생성POST channel/basicInfo(채널 토큰 배포 가능)❌ (미구현)
/channel/[id]/manager채널 관리(설문생성 진입·유권자·배포)다수배포 파이프라인 진입점
/channel/[id]/edit채널 수정PATCH channel플랫폼DB

E. ★참여 여정 (챗봇 — 웹 라우트 아님, 코어 파이프라인)★

단계액션/API다운스트림B
참여 진입메신저(카카오/텔레그램) 참여링크 → 챗봇❌ (챗봇 B 미연결, 컷오버)
제출/joinSurvey (sId·userId)ipfs업로더
파이프라인'참여 7단계'(참여DB저장→IPFS job pool→[데몬]IPFS스케줄러→[데몬]BlockChainApi→아발란체→완료콜백→wallet 리워드)온체인+wallet❌ (B: 참여큐→chain-worker→Fuji 뼈대만)


Part 2. 도메인 축 (MASTER_PLAN Phase 3 — 전 서비스/도메인)

Part 1(사용자 여정/라우트)에 더해, 리팩토링의 실제 범위인 '도메인별 기능 등가'. 단일 기준 = MASTER_PLAN Phase 3. [A 기능·계약 → B 상태 → 측정지표].

도메인A 기능·계약B 상태측정지표(핵심)
3.1 인증·★단일 신원 서비스★JWT·OAuth·nullifier 발급 + 통합 회원등록(findOrCreateMember 멱등, 챗봇 의존 제거, 진입점 무관 first-touch 원자 생성)🔧 카카오 로그인·nullifier 브릿지·JWT 있음 / 단일신원서비스·통합등록 부분로그인·refresh 계약 100%, nullifier 결정성, first-touch 멱등
3.1b ★PII 암호화★주민번호·전화번호 암호화 저장, 알림톡 시에만 복호, 복호 경로 인가통제❌ 미구현저장 평문 0, 복호 인가 통제
3.2 ★결제★KCP 주문·승인·취소·잔액·PUNK 구매❌ 미구현결제 계약 100%, 금액 정합 대사 0오차
3.3 참여/투표·★생명주기·에스크로★joinSurvey→IPFS→온체인→콜백 + 생명주기(DRAFT→QUEUED→…→ACTIVE↔PAUSED→STOPPED), 중단/일시정지, 리워드 에스크로(반환=에스크로−(지급+owed))🔧 참여 큐→chain-worker 뼈대 / 생명주기·중단·에스크로 없음이중리워드 0, 상태전이 정합, 반환액 정확, 반환 무결성
3.4 토큰/FT/SBT/IPFS토큰 배포·SBT(영수증 NFT) 민팅·IPFS(★즉시 CID + 지연 Pinata 핀★ 멱등)🔧 설문 배포 뼈대(Fuji) / SBT·IPFS 즉시CID·지연핀 부분배포·민팅 계약 100%, IPFS 멱등, 중복 핀 0
3.5 ★챗봇★카카오 4채널·텔레그램·알림톡, 채널 config화(복제 제거)❌ 미구현(B 연결·컷오버 휴먼게이트)카카오 응답 p99<4.5s, config화(복제 0)
3.6 지갑non-custodial, ★WebView surface + 플랫폼 백엔드 공유★, 개인키 서버전송 0, 서명 왕복🔧 키생성·온체인 잔액·register 있음 / WebView 임베드·플랫폼 공유 부분개인키 전송 0, 서명 왕복, WebView 임베드, 신원 공유
3.7 web BFF·★관리자★·통계BFF 21경로·admin(~20p: alimtalk·blockchain·channels·surveys·tokens·users·settings…)·통계🔧 BFF 조회 다수 / admin 전무·통계 부분BFF 21경로 계약 100%

Part 2 관통 측정모델(도메인 공통): ①도메인 계약 테스트 100% ②A 대비 회귀 0(골든샘플·대사) ③보안 불변식(시크릿 0·인증 필수·fail-closed) ④성능 목표 ⑤체인 격리(Fuji/dry-run·mainnet TX 0)·결제 sandbox.


Part 3. 인프라·안전·마이그레이션·섀도·전환 (MASTER_PLAN Phase 0·1·2·4·5·6 + KPI)

'무엇을 clone(Part1·2)'에 더해 '어떻게 안전하게 짓고·검증하고·마이그레이션하고·전환하나'. 이게 축소됐던 두 번째 층.

영역MASTER_PLAN 근거내용B 상태KPI
물리 분리·시크릿§1, 불변원칙서버계정 punkpoll-v2·Redis:6380·MySQL punkpoll_v2_*·시크릿 전량 신규(소스 평문 0)✅ (M1 인프라·시크릿)M1·M9
체인 격리§1.4, dev 역제안Fuji/dry-run 강제, mainnet TX 0(Phase6 전)✅ (Fuji 실증)M11
결제 sandbox§1.4KCP T0000 강제❌ (결제 미구현)
계약 스위트Phase 0·1.3C-01~C-12(5축: 스키마·멱등·인증·응답·무결성)·골든샘플🔧 C-01·부분M2
관측성 기반Phase 1.4 (D-051)메트릭·구조화로그·트레이싱·무결성 알림❌ 미구현M14
fee payer QoS 풀Phase 2 (D-052)단일 nonce(영속·원자·자가치유)·공유풀·참여 최우선 레인·master→slave top-up❌ 미구현M5
세로 슬라이스 E2EPhase 2생성→배포→Fuji→콜백 확정 E2E🔧 뼈대(Fuji 실증)M3·M4
nullifier v2 마이그레이션Phase 4 (M7)구키↔신키 호환·연속성 100%·과거 무효화 0❌ (브릿지만)M7
split-brain 소급 대사Phase 4 (D-050)가짜성공(미지급) 온체인 대조·교정🔧 (prod 대사 1회 실행함)M13
섀도 운영·동등성Phase 5 (M8)A/B 동등성·성능·72h 안정성(sim.punkpoll.com)❌ 미구현M8
전환(cutover)·롤백Phase 6 (M10)단계전환·카나리·롤백 리허설·A 안전중지🔒 휴먼게이트M10

측정모델 총괄 KPI: M1(시크릿0)·M2(계약100%)·M3(E2E100%)·M4(TX무결성0)·M5(nonce안전)·M6(카카오p99<4.5s)·M7(nullifier연속성100%)·M8(A/B동등성)·M9(A무접촉)·M10(전환·롤백)·M11(mainnet TX 0)·M12(PII평문0)·M13(split-brain대사)·M14(관측성알림). 각 도메인/단계 완료 판정 = 해당 KPI 충족.


요약 — 클론에 필요한 절차 vs B 현황

정확 클론 = 위 ❌ 절차 전부를 A 스펙대로 재현(+최적화). 우선순위: peter '②쓰기타겟' 결정 후, C(생성·배포)→D(채널관리)→E(참여) 순이 '투표 만들기~참여' 핵심 여정. 각 항목 E2E 실행 검증으로 A 결과와 일치 확인.