fix: 토너먼트 예선 8명 기록을 보존
This commit is contained in:
@@ -71,6 +71,13 @@ const zParticipant = z.object({
|
||||
gl: z.number().int().optional(),
|
||||
seedRank: z.number().int().optional(),
|
||||
finalRank: z.number().int().optional(),
|
||||
preliminaryGroupId: z.number().int().min(0).max(7).optional(),
|
||||
preliminaryGroupNo: z.number().int().min(0).max(7).optional(),
|
||||
preliminaryRank: z.number().int().min(1).max(8).optional(),
|
||||
preliminaryWin: z.number().int().min(0).optional(),
|
||||
preliminaryDraw: z.number().int().min(0).optional(),
|
||||
preliminaryLose: z.number().int().min(0).optional(),
|
||||
preliminaryGl: z.number().int().optional(),
|
||||
});
|
||||
|
||||
const zMatch = z.object({
|
||||
|
||||
@@ -34,6 +34,13 @@ export interface TournamentParticipantEntry {
|
||||
gl?: number;
|
||||
seedRank?: number;
|
||||
finalRank?: number;
|
||||
preliminaryGroupId?: number;
|
||||
preliminaryGroupNo?: number;
|
||||
preliminaryRank?: number;
|
||||
preliminaryWin?: number;
|
||||
preliminaryDraw?: number;
|
||||
preliminaryLose?: number;
|
||||
preliminaryGl?: number;
|
||||
}
|
||||
|
||||
export interface TournamentMatchEntry {
|
||||
|
||||
@@ -186,6 +186,8 @@ export const applyPreBattleStage = async (
|
||||
gl: 0,
|
||||
seedRank: 0,
|
||||
finalRank: 0,
|
||||
preliminaryGroupId: entry.groupId,
|
||||
preliminaryGroupNo: entry.groupNo,
|
||||
}));
|
||||
await store.setParticipants(grouped);
|
||||
const nextState: TournamentState = {
|
||||
@@ -244,10 +246,17 @@ export const applyPreBattleStage = async (
|
||||
for (let groupId = 0; groupId < 8; groupId += 1) {
|
||||
const groupEntries = ranked.filter((entry) => entry.groupId === groupId);
|
||||
const ordered = sortByRanking(groupEntries);
|
||||
ordered.slice(0, 4).forEach((entry, idx) => {
|
||||
ordered.forEach((entry, idx) => {
|
||||
const target = ranked.find((item) => item.id === entry.id);
|
||||
if (target) {
|
||||
target.seedRank = idx + 1;
|
||||
target.preliminaryGroupId = groupId;
|
||||
target.preliminaryGroupNo = entry.groupNo;
|
||||
target.preliminaryRank = idx + 1;
|
||||
target.preliminaryWin = entry.win ?? 0;
|
||||
target.preliminaryDraw = entry.draw ?? 0;
|
||||
target.preliminaryLose = entry.lose ?? 0;
|
||||
target.preliminaryGl = entry.gl ?? 0;
|
||||
target.seedRank = idx < 4 ? idx + 1 : 0;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -195,17 +195,20 @@ export const assignManualApplicantGroup = (options: {
|
||||
extraSeed: `manual-group:${options.current.map((entry) => entry.id).join('-')}:${openGroupIds.join('-')}`,
|
||||
});
|
||||
const groupId = rng.choice(openGroupIds);
|
||||
const groupNo = groupCounts[groupId] ?? 0;
|
||||
|
||||
return {
|
||||
...options.applicant,
|
||||
groupId,
|
||||
groupNo: groupCounts[groupId] ?? 0,
|
||||
groupNo,
|
||||
win: 0,
|
||||
draw: 0,
|
||||
lose: 0,
|
||||
gl: 0,
|
||||
seedRank: 0,
|
||||
finalRank: 0,
|
||||
preliminaryGroupId: groupId,
|
||||
preliminaryGroupNo: groupNo,
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user