refactor(TournamentService): update participant ID handling for knockout matches
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 57s

This commit is contained in:
Torsten Schulz (local)
2026-09-16 07:29:19 +02:00
parent 31bcaa0877
commit c56d0793ad

View File

@@ -370,12 +370,12 @@ class TournamentService {
const perGroupRanked = relevantStage1Groups.map(g => ({
groupId: g.groupId,
classId: g.classId ?? null,
// WICHTIG:
// - Für interne Teilnehmer brauchen wir die ClubMember-ID (Member.id / TournamentMember.clubMemberId),
// nicht die TournamentMember.id.
// - Für externe Teilnehmer ist `id` die ExternalTournamentParticipant.id (bestehende Logik).
// `id` muss für K.-o.-Matches die Turnierteilnehmer-ID sein, weil
// getTournamentMatches() Spieler damit auflöst. Die Vereinsmitglied-ID
// behalten wir zusätzlich für einen möglichen Übergang in weitere Gruppen.
participants: (g.participants || []).map((p, index) => ({
id: p.isExternal ? p.id : (p.clubMemberId ?? p.member?.id ?? p.id),
id: p.id,
clubMemberId: p.isExternal ? null : p.clubMemberId,
isExternal: !!p.isExternal,
place: Number(p.position ?? index + 1),
points: Number(p.points ?? 0),
@@ -482,7 +482,8 @@ class TournamentService {
createdGroups.push(containerGroup);
const entrants = items.map(p => ({
// p.id wurde oben bereits als clubMemberId (intern) bzw. ExternalParticipant.id (extern) gemappt
// `id` ist die Turnierteilnehmer-ID; clubMemberId bleibt für
// etwaige spätere Gruppenübergänge separat erhalten.
id: Number(p.id),
isExternal: !!p.isExternal,
}));