- New lib/leaderboard.ts: fetchLeaderboard(tab) contract + maskEmailId
(PII) + deterministic demo; backend swaps body for getLeaderboard
- New components/Leaderboard.tsx: 2 tabs (참가자/AI 모델), folded by
default with 랭킹 보기/접기, top-3 purple highlight, id + points
- Place folding ranking right after the gold ₩1M card on match page
- /leaderboard full page renders the same component expanded
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- New lib/myPredictions.ts: typed contract (fetch/save/remember/recall)
with localStorage demo impl; backend dev swaps the two bodies for
Firebase callables (getMyPredictions / submitPrediction)
- Arena: recall email on revisit, show my picks sorted newest-first,
prefill + highlight the current match, upsert per match
- Fold list to 1 row by default with 더보기/접기 toggle (handles 10s of votes)
- Result badges: hit = purple (--share), miss = gray; date until scored
- Remove unused orange --claude token (orange-ban rule; logo image stays)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Submit button height/text now match the bottom "다른 경기 투표하기"
CTA (py-3, text-15) — was oversized (py-5, text-19)
- Keep rounded-2xl so roundness stays consistent with the green card
- Email input matched to same rounded-2xl shape and height
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Dark --line-d border was nearly invisible on the dark card; switch to
a thin purple (--share) border + soft purple ring.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Collapse pick→form two-step into one card: email gate header +
input + benefit checkbox + single purple submit button
- Purple (--share) for user submit action vs mint for AI/system
- Keep disabled CTA visible (opacity .72 + glow) to drive clicks
- Unify copy with header: "투표 제출하고 AI와 겨루기"
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- 너 reads as condescending (하대) in Korean, esp. for older viewers we
optimized readability for; unify on 당신 to match product UI voice.
- Remove underscore from social handle across footer/before page.
- User accent on /before: amber 🟠 → brand point purple 🟣.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- "AI의 예측 대결" 우측에 예측 기준(생성 시각) + 실제 모델 버전 표기
- 라벨 "예측 기준 / As of" + 2026.06.10 00:00 KST (매일 0시 갱신 기준)
- gpt-5.5 · claude-opus-4-8 · gemini-3.5-flash (MODEL_VERSIONS)
- 가운데 정렬, 가시성↑(11px), 본문 폰트 통일
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- E. 영문 페이지: lib/i18n.ts(KO/EN 사전) + ?lang 스위치(LangSwitch, AI Prediction Arena 우측, 화이트 활성) + 전 컴포넌트 i18n. World Cup 2026(영문 연도 후행), 영문 AI 근거/날짜/카운트다운 단위
- A. "글로벌 축구"→"2026 월드컵"(Hero 알약·meta), 영문은 World Cup 2026
- B. Crowd Pick 설명 문구 삭제
- C. 국기 찌그러짐 수정(이모지 cqh 비례, CZE 비율보존) + 라운드 제거→사각형
- D. 점수 선택 시 승/무/패 자동 선택(useEffect)
- F. 인트로 카피 "가장 정확하게 예측한 … 100만원 상금"
- MatchupHUD 상단 진행 바(roundLabel→Final) 삭제
- 푸터: "Not official" 모호 → FIFA·공식 월드컵 비제휴 명시(KO/EN)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
구조:
- 단일 경기 → 멀티 경기: 대시보드(/) + 경기 상세(/match/[matchId], 6경기 SSG) + 리더보드 stub(/leaderboard)
- 컴포넌트 파라미터화: MatchupHUD/Arena가 match·predictions·crowd props 수신 (싱글톤 의존 제거)
- 신규 컴포넌트: ScheduleBoard, Countdown, TeamFlag
- mockData: 경기별 결정론적 AI예측/Crowd 생성기(getPredictions/getCrowd) + matchUrl
06.09 회의 반영:
- 확률 라벨 "OO 승리 확률 %"+승리팀 국기(D3), confidence 바 제거 + 메인 리즌 강조
- 닉네임 제거→이메일만(D5), 투표 종료 카운트다운(D7), 결과 보기 전환, 경기별 공유(D8)
- "월드컵" 표현 제거→글로벌 축구(D9), 서브타이틀 중복 삭제, Crowd "AI 승리 확률과 다름" 라벨
- 포인트 컬러 #4AFFA0 통일, 일정 #94FBE0, 푸터 가시성 개선
채점·심사 설계(docs/SCORING.md):
- 공정성 모델 확정: 주최측 배제 + 순수 누적 포인트(점수는 정확도에서만)
- 배점/랭킹/배제/결과정의 + scorePrediction·rank 참조 구현
- 골드 카드 심사 기준 카피 정합
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>