aYOUne

Changelog

Was sich verändert hat — gruppiert nach Release, filterbar nach Komponente und Repository.

Ohne Meilenstein 1
Neu dispatch

Verteiler-Zweig `dispatch-benefit-receipts` (Glied C)

Faechert den Monats-Auftrag HR_BENEFIT_RECEIPTS_MONTHLY in die Kohorte auf und
stellt je Treffer einen regulaeren render-employee-certificate-Job ein. Damit
entstehen die Bestaetigungen mit den ECHTEN Werten der Personalakte statt mit
Aufruf-Parametern — der Grund, warum der Takt bis zur Sachbezugs-Definition
abgeschaltet angemeldet war.

🔴 DERSELBE idempotencyKey wie der Hand-Massenlauf
(`Employees:<id>:benefit-in-kind-receipt:pdf:<period>`) — keine Kosmetik, sondern
die Zusage, dass Takt und Handgriff sich nicht doppeln. Der Hand-Weg bleibt als
Ausnahme-Werkzeug bestehen.

🔴 Ein VERTEILER, kein Renderer: der Auftrag traegt weder renderID noch
sourceEntityType, steht deshalb oben bei `stamp-signature`. Unten waere er mit
"Unsupported sourceEntityType" abgewiesen worden.

Die drei Regeln, an denen ein Fehler teuer waere, liegen in der puren Haelfte und
sind einzeln geprobt:
- Zweckbindung PFLICHT (§ 2 Abs. 1 Nr. 10 ZAG) — ohne sie ist der Gutschein eine
Geldleistung und ein Beleg mit dem Freigrenzen-Text eine FALSCHE Steuer-Aussage.
- Freigrenze (§ 8 Abs. 2 S. 11 EStG) UEBERSPRINGT, wirft nicht — ein Wurf liesse
den Monats-Lauf fuer ALLE Mandanten sterben. Genau auf 50,00 € ist noch tragbar.
- Ein FEHLENDES Datum ist offen, nicht ungueltig — sonst fiele jede Zuordnung ohne
Enddatum aus dem Takt, und das waeren nach Bauart fast alle.

Mandanten-uebergreifend (Plattform-Takt), anders als der hr-api-Hand-Lauf. Mehrere
tragbare Zuordnungen: die hoechste gewinnt, es wird NICHT summiert — die
Bestaetigung beschreibt EINE Zuwendung.

⚠ `npm run build` ist hier `tsc || exit 0` und schluckt Fehler; separat mit
`npx tsc --noEmit` geprueft (0 Fehler). Proben 281/281.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PmMj9oQCU9nxusjcbD8Dp8