Commit Graph

8 Commits (7d4d50af402f8dfd52a0ff289a88751be0950d58)

Author SHA1 Message Date
Haewon Kam 7d4d50af40 Enlarge header buttons 1.5x + add bottom "다른 경기 투표하기" CTA (ADO2 purple)
- Hero "전체 일정"·ShareButton "투표 공유하기" 1.5배 (12→18px, 패딩 확대)
- 상세 페이지 하단(Crowd 아래·푸터 위)에 "다른 경기 투표하기 →" CTA 추가
  - ADO2 광고 버튼 동일 사양: 퍼플 #A65EFF · 라운드 풀 · 글로우 · 화살표
  - 텍스트 15px, 전체 일정(대시보드) 이동
- i18n moreMatches (KO/EN)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-15 10:13:13 +09:00
Haewon Kam 0c91c902a8 Docs: ban all emoji in design/video/landing (DESIGN.md §7)
Decorative/pictogram emoji (👆🏆🟠 etc.) forbidden — use color,
typography, or real SVG/PNG icons. Typographic glyphs (→ ★ ✓ ·) allowed.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-10 17:04:46 +09:00
Haewon Kam 0a15906afb Document AI prediction generation (3 models) + .env.example AI keys
- docs/AI-PREDICTIONS.md: 최신 모델 ID(gpt-5.5/claude-opus-4-8/gemini-3.5-flash), 호출법, Gemini generationConfig 함정, 체코전 실제 출력
- .env.example: 3 AI 모델 키 슬롯 + 모델 ID + Gemini 주의 노트 (시크릿 없음)
- (목업 데이터 mockData.ts는 35414a8에서 실제 예측 반영 완료)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-10 09:21:35 +09:00
Haewon Kam 38ac0af5a9 Add "투표 공유하기" share button to detail header (ADO2 purple)
- 상세 페이지 헤더: "전체 일정" 옆 오른쪽에 "투표 공유하기" 버튼 추가
- ShareButton(클라이언트): navigator.share invoke → 클립보드 폴백
- 공유 시맨틱 토큰 --share #A65EFF (ADO2 브랜드 포인트 퍼플) 등록
- DESIGN.md 토큰 표 갱신

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-09 14:25:53 +09:00
Haewon Kam a0fc9d6194 Multi-match restructure + 06.09 meeting reflection + scoring design
구조:
- 단일 경기 → 멀티 경기: 대시보드(/) + 경기 상세(/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>
2026-06-09 14:05:14 +09:00
Haewon Kam 0a96babc98 Add DESIGN.md (look-and-feel SSOT) + rewrite HANDOFF as next-session entry point
- docs/DESIGN.md: exact color tokens, Impact typography, component catalog, assets, Do/Dont, pending 06.09 design changes
- HANDOFF.md: accurate current state (single-match v2), correct file map, 4 SSOT read-order, confirmed decisions, prioritized next-session tasks (multi-match A / detail B / firebase C)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-09 11:28:11 +09:00
Haewon Kam e43cc08429 Voting window decided: open D-2 (kickoff-48h), close at kickoff
- types/schedule: add opensAt (kickoff-48h), lockAt = kickoff (정각)
- Arena: 3-state gating (곧 오픈 / 활성 / 예측 마감), DEMO_FORCE_OPEN flag
- seed.mjs, BACKEND.md, 기능정의서: lock semantics = kickoff, opensAt added
- error codes: MATCH_NOT_OPEN (422) before opensAt, MATCH_LOCKED (423) at kickoff

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-09 11:18:26 +09:00
Haewon Kam 1b9dbd2276 Add Backend Readiness Pack (firestore rules/indexes, env, seed, firebase init, BACKEND.md)
- firestore.rules, firestore.indexes.json, firebase.json, .firebaserc.example
- .env.example, lib/firebase.ts (client init), scripts/seed.mjs
- docs/BACKEND.md: R1 scope, API contracts, scoring, Resend, deploy, test checklist
- Decisions: new Firebase project (self), prize rules deferred to R2, email via Resend

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-09 09:02:41 +09:00