Pensionierungs-Bildschirm, Ampel mit drei Zustaenden, Planungshorizont

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-26 13:37:08 +02:00
parent 9907fda6f4
commit 1865db5de7
12 changed files with 1181 additions and 130 deletions
+9
View File
@@ -1,7 +1,9 @@
import { Prisma } from "@/generated/prisma/client";
import { prisma } from "@/lib/db";
import { cashTransitionSchema, phaseDataSchema, transitionDataSchema } from "@/lib/elements";
import { retirementDecisionSchema } from "@/lib/retirement-decision";
import type { CashTransitionData, PhaseData, TransitionData } from "@/lib/elements";
import type { RetirementDecision } from "@/lib/retirement-decision";
import type { PlanInput } from "@/lib/types";
export const planInclude = {
@@ -29,6 +31,11 @@ function parseTransitionData(raw: unknown): TransitionData {
return parsed.success ? parsed.data : {};
}
function parseRetirementDecision(raw: unknown): RetirementDecision {
const parsed = retirementDecisionSchema.safeParse(raw);
return parsed.success ? parsed.data : {};
}
function parseCashTransition(raw: unknown): CashTransitionData {
const parsed = cashTransitionSchema.safeParse(raw);
return parsed.success ? parsed.data : {};
@@ -53,6 +60,7 @@ export function toPlanInput(plan: PlanWithRelations): PlanInput {
name: hh?.name ?? null,
age: hh?.age ?? 0,
retirementAge: p.retirementAge,
planningHorizonAge: p.planningHorizonAge,
};
}),
phases: plan.phases.map((phase) => ({
@@ -76,6 +84,7 @@ export function toPlanInput(plan: PlanWithRelations): PlanInput {
orderIndex: e.orderIndex,
phaseValues,
transitionValues,
retirementDecision: parseRetirementDecision(e.retirementDecision),
sourceElementId: e.sourceElementId,
};
}),