import '@/app/styles/community.scss'; import '@/app/styles/data-table.scss'; import { Metadata } from 'next'; import Link from 'next/link'; import { fetchTrackRecordLeaderboard } from '@/lib/api/community'; import TierBadge from '@/components/community/TierBadge'; export const metadata: Metadata = { title: '예측 적중률 리더보드 — 개미투자', description: '종목 예측글 채점 기반 적중률 순위 (표본 10건 이상 · 전체 기간)' }; const PAGE_SIZE = 50; type Props = { searchParams: Promise<{ page?: string; }>; }; export default async function TrackRecordLeaderboardPage({ searchParams }: Props) { const query = await searchParams; const page = Math.max(Number(query.page) || 1, 1); const res = await fetchTrackRecordLeaderboard({ page }); const data = res.success ? res.data : null; const rows = data?.list ?? []; const totalPages = data ? Math.max(Math.ceil(data.total / PAGE_SIZE), 1) : 1; return (

예측 적중률 리더보드

종목 예측글이 채점된 회원 순위입니다 (표본 10건 이상 · 전체 기간). 순위는 명예·프로필 배지만 부여됩니다.
{!res.success ? (
리더보드를 불러오지 못했습니다. 잠시 후 다시 시도해 주세요.
) : rows.length === 0 ? (
아직 채점된 예측이 있는 회원이 없습니다.
) : (
{rows.map(row => ( ))}
예측 적중률 리더보드 — 순위·닉네임·적중률·최고 스트릭·표본수·티어
순위 닉네임 적중률 최고 스트릭 표본수 티어
{row.rank} {row.name} {row.hitRate.toFixed(1)}% {row.bestStreak.toLocaleString()} {row.predictions.toLocaleString()}
)} {res.success && rows.length > 0 && data && data.total > PAGE_SIZE && ( )}
); }