Compare commits

...

2 Commits

Author SHA1 Message Date
Haewon Kam 596ed9c094 Rebrand 월드컵/World Cup → 글로벌 축구 축전/Global Football Festival
Trademark avoidance: replace all branding/marketing uses across title,
hero pill (ko/en), before page, schedule comment. Disclaimers keep the
protective FIFA reference but drop the event mark (→ "공식 축구 대회" /
"any official football tournament").

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-10 15:28:24 +09:00
Haewon Kam 6a094debbc Lock 2026-06-10 canonical Korea–Czechia prediction snapshot
GPT 무 1-1 (45%) / Claude 무 1-1 (55%) / Gemini 한국 2-1 (60%).
Claude flipped draw→win earlier; re-ran APIs and froze today's
immutable snapshot. Also corrects Gemini label 3.5-flash→2.5-flash
(actual model used). Landing now matches video plan + PR source.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-10 13:27:42 +09:00
5 changed files with 23 additions and 22 deletions

View File

@ -210,7 +210,7 @@ export default function Before() {
{/* Prize */} {/* Prize */}
<section style={{ marginTop: 20 }}> <section style={{ marginTop: 20 }}>
<div style={{ ...card, padding: 16 }}> <div style={{ ...card, padding: 16 }}>
<div style={{ display: "flex", alignItems: "center", gap: 8 }}><span style={{ fontSize: 18 }}>🏆</span><h2 style={{ fontSize: 14, fontWeight: 800 }}> 100 </h2></div> <div style={{ display: "flex", alignItems: "center", gap: 8 }}><span style={{ fontSize: 18 }}>🏆</span><h2 style={{ fontSize: 14, fontWeight: 800 }}> 100 </h2></div>
<p style={{ marginTop: 6, fontSize: 12, color: C.muted, lineHeight: 1.6 }}>AI 100 . , .</p> <p style={{ marginTop: 6, fontSize: 12, color: C.muted, lineHeight: 1.6 }}>AI 100 . , .</p>
<button style={{ marginTop: 12, width: "100%", borderRadius: 8, padding: "10px 0", fontSize: 13, fontWeight: 700, background: `${C.green}1a`, color: C.green, border: `1px solid ${C.green}66` }}>100 </button> <button style={{ marginTop: 12, width: "100%", borderRadius: 8, padding: "10px 0", fontSize: 13, fontWeight: 700, background: `${C.green}1a`, color: C.green, border: `1px solid ${C.green}66` }}>100 </button>
</div> </div>

View File

@ -2,7 +2,7 @@ import type { Metadata, Viewport } from "next";
import "./globals.css"; import "./globals.css";
export const metadata: Metadata = { export const metadata: Metadata = {
title: "TriplePick 2026 | AI 2026 월드컵 승부예측 — GPT vs Claude vs Gemini", title: "TriplePick 2026 | AI 2026 글로벌 축구 축전 승부예측 — GPT vs Claude vs Gemini",
description: description:
"GPT·Claude·Gemini가 매 경기를 서로 다르게 예측합니다. 당신의 픽을 찍고 AI와 겨뤄보세요. 끝까지 잘 맞히면 100만 원 챌린지.", "GPT·Claude·Gemini가 매 경기를 서로 다르게 예측합니다. 당신의 픽을 찍고 AI와 겨뤄보세요. 끝까지 잘 맞히면 100만 원 챌린지.",
applicationName: "TriplePick", applicationName: "TriplePick",

View File

@ -96,7 +96,7 @@ type Dict = {
export const DICT: Record<Lang, Dict> = { export const DICT: Record<Lang, Dict> = {
ko: { ko: {
heroPill: "AI와 함께하는 2026 월드컵 승부예측 챌린지", heroPill: "AI와 함께하는 2026 글로벌 축구 축전 승부예측 챌린지",
back: "← 전체 일정", back: "← 전체 일정",
share: "투표 공유하기", share: "투표 공유하기",
shareCopied: "링크 복사됨 ✓", shareCopied: "링크 복사됨 ✓",
@ -142,8 +142,8 @@ export const DICT: Record<Lang, Dict> = {
final: "Final", final: "Final",
group: (g) => `Group ${g}`, group: (g) => `Group ${g}`,
footerNotOfficial: footerNotOfficial:
"Independent AI prediction game — not affiliated with, endorsed by, or sponsored by FIFA or the official World Cup.", "Independent AI prediction game — not affiliated with, endorsed by, or sponsored by FIFA or any official football tournament.",
footerDisc1: "FIFA 및 공식 월드컵과 무관한 독립 AI 예측 게임입니다 (제휴·후원·운영 아님).", footerDisc1: "FIFA 및 공식 축구 대회와 무관한 독립 AI 예측 게임입니다 (제휴·후원·운영 아님).",
footerDisc2: "스포츠 분석·엔터테인먼트 목적의 예측 게임이며 베팅·도박을 권유하지 않습니다. AI 예측은 실제 결과를 보장하지 않습니다.", footerDisc2: "스포츠 분석·엔터테인먼트 목적의 예측 게임이며 베팅·도박을 권유하지 않습니다. AI 예측은 실제 결과를 보장하지 않습니다.",
footerDisc3: "100만 원 이벤트는 무료 참여형 챌린지입니다. 지급·동점 처리 조건은 별도 약관에 따릅니다. 이메일은 결과·이벤트 알림 목적으로만 사용됩니다.", footerDisc3: "100만 원 이벤트는 무료 참여형 챌린지입니다. 지급·동점 처리 조건은 별도 약관에 따릅니다. 이메일은 결과·이벤트 알림 목적으로만 사용됩니다.",
hook: (a, b) => `${a} vs ${b}, AI의 선택은 갈렸다`, hook: (a, b) => `${a} vs ${b}, AI의 선택은 갈렸다`,
@ -154,7 +154,7 @@ export const DICT: Record<Lang, Dict> = {
ado2Cta: "사용해보기", ado2Cta: "사용해보기",
}, },
en: { en: {
heroPill: "AI-powered World Cup 2026 match predictions", heroPill: "AI-powered Global Football Festival 2026 match predictions",
back: "← All matches", back: "← All matches",
share: "Share vote", share: "Share vote",
shareCopied: "Link copied ✓", shareCopied: "Link copied ✓",
@ -200,7 +200,7 @@ export const DICT: Record<Lang, Dict> = {
final: "Final", final: "Final",
group: (g) => `Group ${g}`, group: (g) => `Group ${g}`,
footerNotOfficial: footerNotOfficial:
"Independent AI prediction game — not affiliated with, endorsed by, or sponsored by FIFA or the official World Cup.", "Independent AI prediction game — not affiliated with, endorsed by, or sponsored by FIFA or any official football tournament.",
footerDisc1: "A fan-run prediction game using public match schedules; all picks are independent.", footerDisc1: "A fan-run prediction game using public match schedules; all picks are independent.",
footerDisc2: "A sports-analysis & entertainment prediction game. No betting or gambling. AI predictions do not guarantee real outcomes.", footerDisc2: "A sports-analysis & entertainment prediction game. No betting or gambling. AI predictions do not guarantee real outcomes.",
footerDisc3: "The ₩1,000,000 event is a free-to-enter challenge. Payout & tie-break terms follow separate rules. Email is used only for result & event alerts.", footerDisc3: "The ₩1,000,000 event is a free-to-enter challenge. Payout & tie-break terms follow separate rules. Email is used only for result & event alerts.",

View File

@ -8,16 +8,17 @@ import type { AIPrediction, CrowdStats, Match, ModelName, Outcome } from "./type
import { FEATURED, GROUP_A } from "./schedule"; import { FEATURED, GROUP_A } from "./schedule";
import { type Lang, teamShort } from "./i18n"; import { type Lang, teamShort } from "./i18n";
// 체코전 — 실제 3모델 API 출력 (2026-06-10 생성: gpt-5.5 / claude-opus-4-8 / gemini-3.5-flash) // 체코전 — 실제 3모델 API 출력 (2026-06-10 캐노니컬 스냅샷: gpt-5.5 / claude-opus-4-8 / gemini-2.5-flash)
// 결과: GPT 무 1-1(conf45) / Claude 무 1-1(conf55) / Gemini 한국 2-1(conf60) — 둘은 무승부, Gemini만 한국 승리
const FEATURED_REASONS: Record<Lang, Record<ModelName, string>> = { const FEATURED_REASONS: Record<Lang, Record<ModelName, string>> = {
ko: { ko: {
GPT: "한국 역습과 체코 제공권이 팽팽", GPT: "전력과 압박 강도 모두 팽팽",
Claude: "손흥민·이강인 측면 창의성이 체코 블록을 연다", Claude: "양 팀 전력 비슷, 박빙 무승부",
Gemini: "이강인·손흥민 공격력, 체코 수비에 근소 우세", Gemini: "이강인·손흥민 공격력, 체코 수비에 근소 우세",
}, },
en: { en: {
GPT: "Korea's counters vs Czech aerial — dead even", GPT: "Power and pressing — dead even",
Claude: "Son & Lee's wing play cracks the Czech block", Claude: "Evenly matched, a tight draw likely",
Gemini: "Korea's attack edges a stubborn Czech defense", Gemini: "Korea's attack edges a stubborn Czech defense",
}, },
}; };
@ -32,31 +33,31 @@ export const DEMO_FORCE_OPEN = true;
const FEATURED_PREDICTIONS: AIPrediction[] = [ const FEATURED_PREDICTIONS: AIPrediction[] = [
{ {
matchId: MATCH.matchId, matchId: MATCH.matchId,
model: "GPT", // gpt-5.5: 무승부 1-1 model: "GPT", // gpt-5.5: 무승부 1-1 (conf 45)
outcome: "DRAW", outcome: "DRAW",
scoreA: 1, scoreA: 1,
scoreB: 1, scoreB: 1,
confidencePct: 54, confidencePct: 45,
reasonShort: FEATURED_REASONS.ko.GPT, reasonShort: FEATURED_REASONS.ko.GPT,
generatedAt: "2026-06-10", generatedAt: "2026-06-10",
}, },
{ {
matchId: MATCH.matchId, matchId: MATCH.matchId,
model: "Claude", // claude-opus-4-8: 한국 승 2-1 model: "Claude", // claude-opus-4-8: 무승부 1-1 (conf 55)
outcome: "TEAM_A_WIN", outcome: "DRAW",
scoreA: 2, scoreA: 1,
scoreB: 1, scoreB: 1,
confidencePct: 57, confidencePct: 55,
reasonShort: FEATURED_REASONS.ko.Claude, reasonShort: FEATURED_REASONS.ko.Claude,
generatedAt: "2026-06-10", generatedAt: "2026-06-10",
}, },
{ {
matchId: MATCH.matchId, matchId: MATCH.matchId,
model: "Gemini", // gemini-3.5-flash: 한국 승 2-1 model: "Gemini", // gemini-2.5-flash: 한국 승 2-1 (conf 60)
outcome: "TEAM_A_WIN", outcome: "TEAM_A_WIN",
scoreA: 2, scoreA: 2,
scoreB: 1, scoreB: 1,
confidencePct: 55, confidencePct: 60,
reasonShort: FEATURED_REASONS.ko.Gemini, reasonShort: FEATURED_REASONS.ko.Gemini,
generatedAt: "2026-06-10", generatedAt: "2026-06-10",
}, },
@ -78,7 +79,7 @@ const MODELS: ModelName[] = ["GPT", "Claude", "Gemini"];
export const MODEL_VERSIONS: Record<ModelName, string> = { export const MODEL_VERSIONS: Record<ModelName, string> = {
GPT: "gpt-5.5", GPT: "gpt-5.5",
Claude: "claude-opus-4-8", Claude: "claude-opus-4-8",
Gemini: "gemini-3.5-flash", Gemini: "gemini-2.5-flash",
}; };
// AI 셋이 갈리도록 만든 결과 조합 (홈/원정 균형) // AI 셋이 갈리도록 만든 결과 조합 (홈/원정 균형)

View File

@ -1,4 +1,4 @@
// 2026 FIFA World Cup Group A 정식 일정 (출처: Wikipedia/FIFA, KST 변환 검증 2026-06-08) // 2026 글로벌 축구 축전 Group A 정식 일정 (출처: Wikipedia, KST 변환 검증 2026-06-08)
// 모든 kickoffKst는 한국시간(+09:00). lockAt = 킥오프 -10분. // 모든 kickoffKst는 한국시간(+09:00). lockAt = 킥오프 -10분.
import type { Match, Team } from "./types"; import type { Match, Team } from "./types";