fix: 베팅 후보에 종목별 핵심 능력치를 표시

전력전은 종합, 통솔전은 통솔, 일기토는 무력, 설전은 지력을 배당과 현재 투자금 옆에 표시한다. 네 종목 매핑과 desktop/mobile Chromium containment를 회귀 검사한다.
This commit is contained in:
2026-08-19 13:32:08 +00:00
parent cc1a7d8bbf
commit 8dae24a376
6 changed files with 85 additions and 4 deletions
@@ -3,6 +3,9 @@ export interface TournamentBracketParticipant {
name: string;
picture?: string | null;
imageServer?: number | null;
leadership?: number;
strength?: number;
intel?: number;
}
export interface TournamentBracketMatch {
@@ -20,6 +23,14 @@ export interface TournamentBracketSlot {
picture: string | null;
imageServer: number;
advanced: boolean;
leadership?: number;
strength?: number;
intel?: number;
}
export interface TournamentCoreStat {
label: '종합' | '통솔' | '무력' | '지력';
value: number;
}
export interface TournamentBracketRound {
@@ -43,6 +54,18 @@ const emptySlot = (): TournamentBracketSlot => ({
advanced: false,
});
export const resolveTournamentCoreStat = (
participant: Pick<TournamentBracketParticipant, 'leadership' | 'strength' | 'intel'>,
tournamentType: number
): TournamentCoreStat | null => {
const { leadership, strength, intel } = participant;
if (leadership === undefined || strength === undefined || intel === undefined) return null;
if (tournamentType === 0) return { label: '종합', value: leadership + strength + intel };
if (tournamentType === 1) return { label: '통솔', value: leadership };
if (tournamentType === 2) return { label: '무력', value: strength };
return { label: '지력', value: intel };
};
export const buildTournamentBracket = (
participants: TournamentBracketParticipant[],
matches: TournamentBracketMatch[],
@@ -65,6 +88,9 @@ export const buildTournamentBracket = (
picture: participant?.picture ?? null,
imageServer: participant?.imageServer ?? 0,
advanced: match.winnerId === id,
leadership: participant?.leadership,
strength: participant?.strength,
intel: participant?.intel,
};
})
);
@@ -84,6 +110,9 @@ export const buildTournamentBracket = (
picture: participantOf(resolvedWinnerId)?.picture ?? null,
imageServer: participantOf(resolvedWinnerId)?.imageServer ?? 0,
advanced: resolvedWinnerId !== null,
leadership: participantOf(resolvedWinnerId)?.leadership,
strength: participantOf(resolvedWinnerId)?.strength,
intel: participantOf(resolvedWinnerId)?.intel,
},
final,
semi: buildRound(9, 4),