Mirror Task 3 (leave provider) on the RTT side: accept an optional `?phaseId` query parameter and cap the exercise window to the phase boundaries when set. - Inject EmployeeContractPhaseResolver. - New helpers: resolveTargetPhase, clampYearToPhase, exerciseYearForDate. - resolveYear now takes the phase: default year falls back to the phase end date when phaseId is provided; explicit year is silently clamped to the phase range. - provide() narrows periodFrom / periodTo / limitDate to the phase end date for past phases. - Default behavior (no phaseId) unchanged. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
12 KiB
12 KiB