// Domain-Typen fuer Berechnungslogik und API-Payloads. Entkoppelt von den generierten // Prisma-Typen, damit die Berechnung unabhaengig testbar bleibt. // // V3-Rework: Das Grundprofil (Haushaltsform, Personen, Inflation) liegt neu direkt am Plan. import type { ElementCategory, OwnerRole, PhaseData, TransitionData } from "@/lib/elements"; export type HouseholdType = "SINGLE" | "COUPLE"; export type PersonRole = "PERSON_A" | "PERSON_B"; export interface PersonInput { id: string; role: PersonRole; age: number; retirementAge: number; } export interface PhaseInput { id: string; sequenceNumber: number; name: string; durationYears: number; inflationRate: number | null; } export interface ElementInput { id: string; category: ElementCategory; name: string; ownerRole: OwnerRole | null; orderIndex: number; // Werte je Phase (Key = phaseId) bzw. je Uebergang (Key = fromPhaseId). phaseValues: Record; transitionValues: Record; } // Ein Plan ist selbsttragend: er traegt sein eigenes Grundprofil (Haushaltsform, Personen, // Inflationsannahme) plus die Phasenkette und die finanziellen Elemente. export interface PlanInput { id: string; name: string; householdType: HouseholdType; inflationRateDefault: number; persons: PersonInput[]; phases: PhaseInput[]; elements: ElementInput[]; }