Fix: Server/Client-Grenze -- Uebergangsregeln nach lib verschoben
Deploy App / deploy (push) Successful in 1m5s

Ursache des 500 (danke fuer die Meldung): lib/decisions.ts importierte
isTransitionAnswered und isCashTransitionAnswered aus der CLIENT-
Komponente ElementDetail. Der PDF-Bericht laeuft serverseitig und brach
deshalb ab: "Attempted to call isCashTransitionAnswered() from the server
but it is on the client."

Die fuenf reinen Uebergangs-Regeln liegen jetzt in lib/transitions.ts;
ElementDetail reicht sie nur noch weiter, damit bestehende Importe
unveraendert bleiben.

Neuer Waechter-Test: kein Modul unter src/lib darf aus src/components
importieren. Gegen den echten Fehler verifiziert -- er schlaegt an.
Weder tsc noch der Build hatten das gemeldet, nur die Produktion.

225 Tests.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-07-21 10:15:54 +02:00
parent 8b50f8d4ae
commit c429624635
4 changed files with 150 additions and 66 deletions
+4 -1
View File
@@ -4,7 +4,10 @@
// und zwei Umsetzungen derselben Regel driften garantiert auseinander. Deshalb hier als
// reine Funktion, die beide benutzen.
import { isCashTransitionAnswered, isTransitionAnswered } from "@/components/ElementDetail";
// WICHTIG: aus lib/transitions, NICHT aus der Client-Komponente ElementDetail. Ein Import
// von dort macht diese Datei serverseitig unbenutzbar ("Attempted to call ... from the
// server but it is on the client") -- genau daran scheiterte der PDF-Bericht.
import { isCashTransitionAnswered, isTransitionAnswered } from "@/lib/transitions";
import type { ElementCategory } from "@/lib/elements";
import type { ElementInput, PlanInput } from "@/lib/types";
import type { PhaseComputed, PlanComputed } from "@/lib/calculations";