유형: 현황 (기능별 리팩토링 체크리스트 — 완료 판정 원장/run-of-record)
최종 업데이트: 2026-07-07 (manager · reviewer granularity 입력 반영 · 진행따라 갱신)
웹뷰: https://chat.punkpoll.com/doc/checklist

기능별 리팩토링 체크리스트 (V3 완료 원장)

단위 = 클릭요소/기능 (페이지 아님) — reviewer 원칙: G4(死클릭 0)·G5(픽셀)는 요소 단위로만 검증 가능. "설문상세 페이지 done"이 아니라 "VoteButton done / 좋아요토글 done / 참여자셀→VoterResultModal done" 각각. 페이지 단위 done%는 死클릭을 숨겨 V2 실패를 재현하므로 금지.

각 행 = 클릭요소/기능. A출처=A file:line provenance. G1~G6=측정모델(/doc/measure) 이진 게이트(전부 통과=done). 상태 ▢대기 ◐부분 ✓통과. 담당 producer=구현+G1+G5캡처 / verifier=reviewer.

행 소스 = 전 페이지 클릭맵(/doc/parity-map A-1~A-16). 아래는 클릭 집중 페이지의 요소 전개. 나머지 페이지 요소도 P2 착수 시 parity-map에서 행으로 전개(전부 요소 단위). 현재 전부 ▢(V3 착수 전). run-of-record = submanager 원장.
provenance(A출처)+G2 A대조 = reviewer 확립(2026-07-07): 아래 프론트 요소는 A 실코드로 대조 완료(◐=A동작 확립). B 구현 시 각 행 G2=B가 이 A동작과 일치하는지 reviewer 최종 판정.

A. 헤더/전역 (출처: Header.jsx·Nav.jsx·UserMenuPanel.jsx)

클릭요소A출처목적지/동작G1G2G3G4G5담당done
로고Header:50홈(/explore)dev
검색 아이콘Header검색창+태그dev
태그 클릭태그 설문/토큰dev
PollsNav:190/exploredev
채널Nav:218채널 브라우즈dev
Poll 만들기Nav:233로그인→/builder / 비로그인→LoginModaldev
vote/live/feedback/opinion-poll/panelNav:248·265·282·299·316각 정적/피드 페이지dev
프로필 이미지UserMenu:68마이페이지dev2
지갑UserMenu:82WalletModal(모달)dev2
My Page 버튼UserMenu:86마이페이지dev2
관리자(role)UserMenu:95admin 새탭dev2
내 채널 리스트UserMenu:114채널 매니저dev2
로그아웃(소셜별)UserMenu:139카카오/텔레그램 로그아웃dev2

B. explore 피드 + 설문 사이드패널 (출처: PollCard·CardActions·DetailSideModal·VoteButton)

클릭요소A출처목적지/동작G1G2G3G4G5담당done
설문 카드PollCard:94사이드패널(DetailSideModal)dev/dev2
Vote 버튼VoteButton:30로그인→챗봇 / 비로그인→로그인모달dev2
좋아요 토글CardActions:158POST like(로그인게이트)dev2
댓글CardActions:208CommentModaldev2
공유CardActions:213ShareModaldev2
채널명CardChannelInfo:8채널 상세dev2
새창열기(패널)DetailSideModal:131설문 상세dev2
링크복사(패널)DetailSideModal:146URL 복사dev2
팔로우(패널)ChannelProfile팔로우 토글(로그인게이트)dev2
태그 필터TagList:78/explore?tag=dev
+더보기PollList:191무한스크롤dev

C. 설문 상세 6탭 (출처: PollDetailTab·ResultDetail·ParticipantsDetail)

클릭요소A출처목적지/동작G1G2G3G4G5담당done
결과 탭PollDetailTab:50ResultDetail(게이팅)dev
문항 탭PollDetailTabQuestionsDetaildev
참여자 탭PollDetailTabParticipantsDetaildev
내 투표 탭PollDetailTab:148myResult(voteYn게이트)dev
크레딧 탭PollDetailTabCreditDetaildev
모니터링 버튼PollDetailTab:177RealtimeMonitor(차트효과)dev
결과 차트타입ResultDetail:188pie/bar 전환dev
참여자 CID셀ParticipantsDetail:169VoterResultModaldev

D. 채널/마이페이지/빌더 (요소 전개 — parity-map A-4~A-6·A-11)

채널 브라우즈(만들기·정렬·태그·카드·팔로우) · 채널 상세(전환/관리·토큰·보유자패널·팔로워패널·편집·공유·태그·SNS8) · 마이페이지(팔로잉패널·태그·설문카드·토큰컬럼·활동→탐색기·보유토큰) · 빌더 5스텝(각 스텝 다음·업로드·AI·태그·문항추가·시간·리워드·배포) · 관리자 허브 7뷰(각 뷰 내부 요소=대시보드 토글/수정/⋮/배포/모니터링·배포 탭·블록체인 해시·리포트 기간·PUNK 충전·매니저) — 각 요소 행 P2 전개(parity-map 근거).

E. 백엔드 파이프라인 (기능 단위·G4=파이프 실행)

기능A출처(통폐합)G1G2G3G4담당done
메신저 게이트웨이(카카오+텔레그램)kakaoChatBot+telegramBot 통합backend1
인증(OAuth·nullifier=resolveAUser)auth-gatewaybackend1
설문 CRUD·조회punkpoll_api→core-apibackend1
설문 배포 workflowSysRequest 분리backend1
참여 수집·콜백SysResponsebackend1
참여내용 IPFS(즉시CID·멱등)punkpoll-ipfsbackend1
소셜 enrich(좋아요·댓글·팔로우)api comment/channelbackend1
결제(PUNK·KCP·정산대사)api paymentbackend2
패널 관리punkpollUtilbackend1

F. 온체인 (오퍼레이션 단위·G6=실 Fuji 트레이스, producer=backend4/verifier=reviewer)

G6는 reviewer 독립 Fuji RPC 트레이스로 판정(backend4 주장≠근거). 6/8 이미 G6 ✓(T5 실증). G1~G4(V3 재구조 배선)는 P2 재검증.
오퍼레이션A출처G1G2G3G4G6producerdone
deploy(per-survey SurveyNFTV2 factory)blockchainApi.deploySurveyContractbackend4◐(G6✓)
deposit(approve→depositRewardTokens)contractService.depositRewardbackend4◐(G6✓)
participate(register+backendSigner sig)txSender/contractServicebackend4◐(G6✓)
reward(1인1 hasClaimedReward)_rewardUserbackend4◐(G6✓)
SBT mint(mintReceipt+IPFS)receiptSbtServicebackend4◐(G6✓)
settle(잉여 owner반환·항등식)contractService.settlebackend4◐(G6✓)
custodial provision(서버생성·KEK)blockchainApi wallet genbackend4▢ (G6 부분·픽스처 대기)
FT 토큰 전송(TransferWorker)blockchainApi Avalanche ERC20(A현재)backend4▢ (G6 실증 대기)
운영복원력(TX복구4·RPC·멀티feePayer)txSender+blockchainApibackend4▢ (프로덕션 컷오버 게이트)

진행률: done 0 (P2 착수 전). 프론트 요소 행은 parity-map 전 요소로 P2에서 완전 전개(死클릭 0 보장 위해 요소 단위 필수). 온체인 8기능 G6·백엔드 9기능 G4·프론트 요소 수백.
공통 부채(전 행 적용): SQL injection→파라미터 바인딩 · 개인키평문→custodial · 하드코딩키→resolveAUser · .jsx→.tsx · 거대파일 분리 · 폴링→store구독.