diff --git a/frontend/src/lib/stores/times.svelte.ts b/frontend/src/lib/stores/times.svelte.ts
index dd340ae..6c445c4 100644
--- a/frontend/src/lib/stores/times.svelte.ts
+++ b/frontend/src/lib/stores/times.svelte.ts
@@ -228,8 +228,18 @@ export class TimeStore {
this.records = next
}
- async applyCorrection(timeId: string, seconds: number) {
- return await api.collection('times').update(timeId, { correction: seconds })
+ /**
+ * Zeitkorrektur setzen, mit optionalem Grund.
+ *
+ * Der Grund steht im vorhandenen Feld `comment`. Eine Strafe ohne Grund
+ * ist nach dem Event nicht mehr zu verteidigen — Pflicht ist er trotzdem
+ * nicht: An der Strecke zaehlt, dass die Zahl stimmt.
+ */
+ async applyCorrection(timeId: string, seconds: number, comment?: string) {
+ return await api.collection('times').update(timeId, {
+ correction: seconds,
+ comment: comment?.trim() ?? '',
+ })
}
async updateStatus(timeId: string, status: TimeStatus) {
diff --git a/frontend/src/routes/dashboard/events/[id]/stages/[stageId]/+page.svelte b/frontend/src/routes/dashboard/events/[id]/stages/[stageId]/+page.svelte
index 0c2a57a..f6e03e6 100644
--- a/frontend/src/routes/dashboard/events/[id]/stages/[stageId]/+page.svelte
+++ b/frontend/src/routes/dashboard/events/[id]/stages/[stageId]/+page.svelte
@@ -56,8 +56,6 @@
const running = $derived(valid && stage ? times.runningByStage(stage.id, clock.now) : [])
const leaderboard = $derived(valid && stage ? times.getLeaderboard(stage.id) : [])
const unranked = $derived(valid && stage ? times.unrankedByStage(stage.id) : [])
- /** Alle gewerteten Zeiten dieser Stage — Ziel einer Strafe für alle. */
- const stageTimes = $derived(leaderboard)
/**
* Laufende und gewertete Zeiten in einer Liste: Wer gerade unterwegs ist,
@@ -97,38 +95,31 @@
// --- Strafzeiten ------------------------------------------------------
//
// Die Korrektur steckt als Sekunden an der Zeit (times.correction) und
- // wird auf die Dauer gerechnet. Zwei Wege dorthin: an einer Zeit einzeln,
- // das ist der Normalfall, und über alle Zeiten dieser Stage auf einmal —
- // etwa wenn eine Schikane für alle nicht zählte.
+ // wird auf die Dauer gerechnet; der Grund daneben im Feld `comment`.
+ // Immer an einer einzelnen Zeit — eine Strafe trifft einen Fahrer, und
+ // was fuer alle gleich gilt, ist keine Strafe, sondern eine andere Stage.
let penaltyDialog = $state(false)
let penaltyTime = $state
+ Optional, aber nach dem Event ist eine Strafe ohne Grund schwer zu + verteidigen. +
+{penaltyError}
{/if}