UI: рейтинг новичков в карточке профиля — серебристый
ProfileStats теперь отдаёт min_games (порог «Новичков» из API, без дублирования константы на фронте): пока сыграно меньше min_games партий, «Очки (рейтинг)» в профиле показываются серебристым, как в топах; золотой — только подтверждённый рейтинг. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -331,6 +331,9 @@ class ProfileStats(BaseModel):
|
||||
worst_faction: FactionStat | None = None
|
||||
most_played_faction: FactionStat | None = None
|
||||
recent_form: list[RecentFormItem] = []
|
||||
# Порог «Новичков» (MIN_GAMES) — чтобы UI единообразно подсвечивал
|
||||
# неподтверждённый рейтинг, не дублируя константу на фронте.
|
||||
min_games: int = 0
|
||||
|
||||
|
||||
class PublicProfile(BaseModel):
|
||||
|
||||
@@ -206,6 +206,7 @@ def profile_stats(session: Session, user_id: int, group_id: int | None = None) -
|
||||
"worst_faction": worst,
|
||||
"most_played_faction": most_played,
|
||||
"recent_form": _recent_form(session, user_id, group_id),
|
||||
"min_games": MIN_GAMES,
|
||||
}
|
||||
|
||||
|
||||
|
||||
Vendored
+5
@@ -1883,6 +1883,11 @@ export interface components {
|
||||
* @default []
|
||||
*/
|
||||
recent_form: components["schemas"]["RecentFormItem"][];
|
||||
/**
|
||||
* Min Games
|
||||
* @default 0
|
||||
*/
|
||||
min_games: number;
|
||||
};
|
||||
/** ProfileUpdate */
|
||||
ProfileUpdate: {
|
||||
|
||||
@@ -12,6 +12,9 @@ export function ProfileStatsCard({
|
||||
title?: string;
|
||||
}) {
|
||||
const o = stats.overall;
|
||||
// Серебристый рейтинг — пока игрок «новичок» (меньше min_games партий) или
|
||||
// не играл вовсе; золотой — только подтверждённый (как в топах).
|
||||
const provisional = o.score == null || o.games < stats.min_games;
|
||||
return (
|
||||
<div className="card">
|
||||
<h3>{title}</h3>
|
||||
@@ -33,7 +36,7 @@ export function ProfileStatsCard({
|
||||
</div>
|
||||
<div className="row-between">
|
||||
<div>Очки (рейтинг)</div>
|
||||
<b className={"lb-score" + (o.score == null ? " provisional" : "")}>{o.score ?? "—"}</b>
|
||||
<b className={"lb-score" + (provisional ? " provisional" : "")}>{o.score ?? "—"}</b>
|
||||
</div>
|
||||
{stats.most_played_faction && (
|
||||
<div className="row-between">
|
||||
|
||||
Reference in New Issue
Block a user