Demo: mark opener as finished with 2-1 Mexico win on schedule board
- 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 <noreply@anthropic.com>main
parent
0c91c902a8
commit
6c3a47b6ba
|
|
@ -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 }) {
|
|||
<span className="font-mono font-bold text-white/70">
|
||||
{timeOnly(match.kickoffKst)} <span className="text-white/40">KST</span> ·{" "}
|
||||
{tRound(match.roundLabel, lang)}
|
||||
{winLabel && (
|
||||
<span className="ml-1 font-semibold text-[#94FBE0]">· {winLabel}</span>
|
||||
)}
|
||||
</span>
|
||||
<span className={`rounded-md border px-2 py-0.5 font-semibold ${PHASE_CLS[phase]}`}>
|
||||
{t.phase[phase]}
|
||||
|
|
@ -85,7 +98,15 @@ function MatchCard({ match, lang }: { match: Match; lang: Lang }) {
|
|||
<TeamFlag team={match.teamA} className="h-6 w-9 shrink-0" />
|
||||
<span className="truncate text-[15px] font-extrabold">{teamShort(match.teamA, lang)}</span>
|
||||
</div>
|
||||
<span className="font-impact text-[18px] italic text-[#94FBE0]">VS</span>
|
||||
{result ? (
|
||||
<span className="flex items-center gap-1.5 font-impact text-[18px] italic">
|
||||
<span className="tabular-nums text-white">{result.scoreA}</span>
|
||||
<span className="text-[13px] text-[#94FBE0]">VS</span>
|
||||
<span className="tabular-nums text-white">{result.scoreB}</span>
|
||||
</span>
|
||||
) : (
|
||||
<span className="font-impact text-[18px] italic text-[#94FBE0]">VS</span>
|
||||
)}
|
||||
<div className="flex items-center justify-end gap-2">
|
||||
<span className="truncate text-right text-[15px] font-extrabold">{teamShort(match.teamB, lang)}</span>
|
||||
<TeamFlag team={match.teamB} className="h-6 w-9 shrink-0" />
|
||||
|
|
|
|||
|
|
@ -105,7 +105,7 @@ export const DICT: Record<Lang, Dict> = {
|
|||
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<Lang, Dict> = {
|
|||
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`,
|
||||
|
|
|
|||
|
|
@ -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",
|
||||
|
|
|
|||
Loading…
Reference in New Issue