docs(api): capture procedure-support pattern

This commit is contained in:
2026-03-31 20:17:09 +02:00
parent 2a0837f8d2
commit e375d634f6
@@ -0,0 +1,42 @@
# API Router Procedure-Support Pattern
Ziel: Top-Level-Router bleiben dünne tRPC-Kompositionsschichten. Orchestrierung, Audit-Logik und
zusammengehörige Input-Schemas wandern in ein benachbartes `*-procedure-support.ts` Modul.
## Struktur
- `router/<domain>.ts`
Enthält nur Procedure-Wiring, Rollen-Gates und die Delegation an benannte Support-Funktionen.
- `router/<domain>-procedure-support.ts`
Enthält:
- zusammengehörige `zod`-Input-Schemas für Router-Procedures
- DB-Orchestrierung und Guard-Checks
- Audit-Aufrufe
- kleine private Hilfsfunktionen wie `withAuditUser(...)`
- `router/<domain>-support.ts`
Bleibt für pure Builder-, Resolver- und Transform-Helfer reserviert.
## Teststrategie
- `__tests__/<domain>-support.test.ts`
Deckt reine Helper-Funktionen ab.
- `__tests__/<domain>-procedure-support.test.ts`
Deckt Orchestrierung, Audit-Snapshots und Guard-Verhalten ab.
- `__tests__/<domain>-router.test.ts`
Deckt echte `createCaller`-Pfade ab und hält den Router als dünne Integrationsschicht ehrlich.
## Guardrails
- Öffentliche Router-Contracts bleiben stabil.
- Keine Logik zurück in den Top-Level-Router ziehen.
- Vorhandene pure Support-Module weiterverwenden statt duplizieren.
- Slice-Tests gezielt fahren; globales `tsc --noEmit` nur dort nutzen, wo kein fremder Blocker aktiv ist.
## Referenz-Slices
- `rate-card`
- `effort-rule`
- `experience-multiplier`
- `management-level`
- `blueprint`
- `client`