Vertriebsunterstützung an Reisezeit koppeln

- Reisezeit 0 -> Vertriebsunterstützung 0
- Reisezeit < 2h -> Vertriebsunterstützung = Reisezeit (Feld gesperrt)
- Reisezeit >= 2h -> Vertriebsunterstützung 2h, aber editierbar
- Regel zentral in lib/calc.ts (applyVertriebsregel), im Formular interaktiv
  und in der API-Validierung erzwungen

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-22 10:23:07 +02:00
parent 9ee78d2dcf
commit 1e221a3c2c
3 changed files with 54 additions and 7 deletions
+5 -2
View File
@@ -1,5 +1,5 @@
import { ORTE, type ArbeitszeitInput, type Ort } from '@/types/arbeitszeit';
import { parseHM } from './calc';
import { parseHM, applyVertriebsregel } from './calc';
/**
* Validiert und normalisiert einen JSON-Body zu einem ArbeitszeitInput.
@@ -25,10 +25,13 @@ export function parseArbeitszeitInput(body: unknown): ArbeitszeitInput {
}
const reisezeit = toNumber(b.reisezeit, 0);
const vertriebsunterstuetzung = toNumber(b.vertriebsunterstuetzung, 2);
let vertriebsunterstuetzung = toNumber(b.vertriebsunterstuetzung, 2);
if (reisezeit < 0 || vertriebsunterstuetzung < 0) {
throw new Error('Zeitwerte dürfen nicht negativ sein.');
}
// Regel: Vertriebsunterstützung an die Reisezeit koppeln.
// 0h ⇒ 0; <2h ⇒ = Reisezeit; ≥2h ⇒ bereitgestellter Wert (änderbar, default 2).
vertriebsunterstuetzung = applyVertriebsregel(reisezeit, vertriebsunterstuetzung);
const kommentar = String(b.kommentar ?? '').slice(0, 500);