From 6c3a47b6ba860572d71a30c14888ab324867a831 Mon Sep 17 00:00:00 2001 From: Haewon Kam Date: Thu, 11 Jun 2026 11:20:14 +0900 Subject: [PATCH] Demo: mark opener as finished with 2-1 Mexico win on schedule board MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - schedule.ts: opener(MEX vs RSA) status finished + result 2-1 (TEAM_A_WIN) - i18n: phase.finished label 종료→투표종료 / Ended→Voting closed - ScheduleBoard: show score around VS + winner label next to round when result exists Co-Authored-By: Claude Opus 4.8 --- components/ScheduleBoard.tsx | 23 ++++++++++++++++++++++- lib/i18n.ts | 4 ++-- lib/schedule.ts | 4 ++-- 3 files changed, 26 insertions(+), 5 deletions(-) diff --git a/components/ScheduleBoard.tsx b/components/ScheduleBoard.tsx index 1e31bc5..af5b922 100644 --- a/components/ScheduleBoard.tsx +++ b/components/ScheduleBoard.tsx @@ -63,6 +63,16 @@ function MatchCard({ match, lang }: { match: Match; lang: Lang }) { if (tally.d) split.push(`${t.draw} ${tally.d}`); if (tally.b) split.push(`${teamShort(match.teamB, lang)} ${tally.b}`); + // 종료 경기: 결과 스코어 + 승자 라벨 (예: "멕시코 승") + const result = match.result; + const winLabel = result + ? result.outcome === "TEAM_A_WIN" + ? `${teamShort(match.teamA, lang)} ${t.win}` + : result.outcome === "TEAM_B_WIN" + ? `${teamShort(match.teamB, lang)} ${t.win}` + : t.drawLabel + : null; + const href = `/match/${match.matchId}${lang === "en" ? "?lang=en" : ""}`; return ( @@ -74,6 +84,9 @@ function MatchCard({ match, lang }: { match: Match; lang: Lang }) { {timeOnly(match.kickoffKst)} KST ·{" "} {tRound(match.roundLabel, lang)} + {winLabel && ( + · {winLabel} + )} {t.phase[phase]} @@ -85,7 +98,15 @@ function MatchCard({ match, lang }: { match: Match; lang: Lang }) { {teamShort(match.teamA, lang)} - VS + {result ? ( + + {result.scoreA} + VS + {result.scoreB} + + ) : ( + VS + )}
{teamShort(match.teamB, lang)} diff --git a/lib/i18n.ts b/lib/i18n.ts index 32f279e..2e63706 100644 --- a/lib/i18n.ts +++ b/lib/i18n.ts @@ -105,7 +105,7 @@ export const DICT: Record = { prizeLine2: "최종 우승자에게 100만원 상금", schedTitle: "전체 일정", schedGuide: "투표하고 싶은 경기를 선택해주세요", - phase: { open: "투표 중", scheduled: "오픈 예정", locked: "투표 마감", finished: "종료" }, + phase: { open: "투표 중", scheduled: "오픈 예정", locked: "투표 마감", finished: "투표종료" }, aiPicks: "AI 픽", draw: "무", joined: (n) => `${n}명 참여`, @@ -163,7 +163,7 @@ export const DICT: Record = { prizeLine2: "overall winner takes ₩1,000,000", schedTitle: "All Matches", schedGuide: "Pick a match to predict", - phase: { open: "Voting", scheduled: "Opens soon", locked: "Closed", finished: "Ended" }, + phase: { open: "Voting", scheduled: "Opens soon", locked: "Closed", finished: "Voting closed" }, aiPicks: "AI picks", draw: "Draw", joined: (n) => `${n} joined`, diff --git a/lib/schedule.ts b/lib/schedule.ts index da5cc39..2c53303 100644 --- a/lib/schedule.ts +++ b/lib/schedule.ts @@ -24,9 +24,9 @@ export const GROUP_A: Match[] = [ venue: "Estadio Azteca · Mexico City", opensAt: opens("2026-06-12T04:00:00+09:00"), lockAt: "2026-06-12T04:00:00+09:00", - status: "upcoming", + status: "finished", hookText: "글로벌 축구 개막전, AI는 개최국을 믿을까", - result: null, + result: { scoreA: 2, scoreB: 1, outcome: "TEAM_A_WIN" }, // 데모: 개막전 종료 — 멕시코 2-1 승 }, { matchId: "A_KOR_CZE_20260612",