fix: 토너먼트 예선 8명 기록을 보존

This commit is contained in:
2026-08-17 15:28:29 +00:00
parent 50e7d894e4
commit 15c5c1c98f
6 changed files with 63 additions and 9 deletions
@@ -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({
+7
View File
@@ -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 {
+11 -2
View File
@@ -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;
}
});
}
+4 -1
View File
@@ -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,
};
};