Новички: серебряный рейтинг и порог 5 игр вместо 3

- рейтинг в блоках «Новички» (топ игроков и общая статистика) выводится
  серебряным (--silver, класс .lb-score.provisional), а не золотым;
- MIN_GAMES 3 -> 5 (scoring.py) — в ранжированный топ попадают с 5 игр;
  подпись «Новички (меньше N игр)» берёт порог из API, справка обновлена;
- pytest: 57 passed.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-15 17:21:20 +03:00
co-authored by Claude Fable 5
parent c4f75d5de0
commit ac296a8f12
6 changed files with 14 additions and 9 deletions
+3 -3
View File
@@ -6,7 +6,7 @@ function pct(v: number | null | undefined): string {
return v == null ? "—" : `${Math.round(v * 100)}%`;
}
function Row({ entry }: { entry: LeaderboardEntry }) {
function Row({ entry, provisional }: { entry: LeaderboardEntry; provisional?: boolean }) {
return (
// Вся строка — ссылка на профиль (на главной карточка-обёртка ведёт в общую
// статистику, а клик по строке игрока — в его профиль).
@@ -23,7 +23,7 @@ function Row({ entry }: { entry: LeaderboardEntry }) {
<span>WR: {pct(entry.win_rate)}</span>
</div>
</div>
<div className="lb-score">{entry.score ?? "—"}</div>
<div className={"lb-score" + (provisional ? " provisional" : "")}>{entry.score ?? "—"}</div>
</PlayerLink>
);
}
@@ -53,7 +53,7 @@ export function Leaderboard({
Новички (мало игр)
</div>
{provisional.map((e) => (
<Row key={e.user_id} entry={e} />
<Row key={e.user_id} entry={e} provisional />
))}
</>
)}