Rework core model: financial elements as plan-wide entities across phases; derived phase types (Erwerb/Pension/Misch) with retirement-capped durations and per-plan retirement age; AHV (gap years + couple ceiling), PK payout/annuity, 3a, real estate, other assets/debts; horizontal timeline with retirement markers; phase x element matrix with detail panel; savings/consumption quota + available-capital key figures with red status
Deploy App / deploy (push) Successful in 1m57s
Deploy App / deploy (push) Successful in 1m57s
This commit is contained in:
@@ -0,0 +1,73 @@
|
||||
-- Kern-Rework: finanzielle Elemente auf Plan-Ebene (JSON pro Phase/Uebergang).
|
||||
-- Fresh-Start (abgestimmt 13.07.2026): bestehende Test-Daten werden verworfen.
|
||||
|
||||
-- Alle bestehenden Daten entfernen (Cascade raeumt Plaene, Phasen, alte Element-Tabellen ab)
|
||||
DELETE FROM "Household";
|
||||
|
||||
-- Alte element-spezifische Tabellen entfernen
|
||||
DROP TABLE IF EXISTS "PhaseTransitionItem" CASCADE;
|
||||
DROP TABLE IF EXISTS "PhaseTransition" CASCADE;
|
||||
DROP TABLE IF EXISTS "IncomeEntry" CASCADE;
|
||||
DROP TABLE IF EXISTS "ExpenseEntry" CASCADE;
|
||||
DROP TABLE IF EXISTS "Security" CASCADE;
|
||||
DROP TABLE IF EXISTS "RealEstate" CASCADE;
|
||||
DROP TABLE IF EXISTS "OneTimeEvent" CASCADE;
|
||||
DROP TABLE IF EXISTS "RetirementInfo" CASCADE;
|
||||
|
||||
-- Phase: nicht mehr benoetigte Spalten entfernen (VOR dem Drop der genutzten Enums)
|
||||
ALTER TABLE "Phase" DROP COLUMN IF EXISTS "incomeMode";
|
||||
ALTER TABLE "Phase" DROP COLUMN IF EXISTS "incomingCapital";
|
||||
|
||||
-- Alte Enums entfernen (jetzt von keiner Spalte mehr referenziert)
|
||||
DROP TYPE IF EXISTS "IncomeMode";
|
||||
DROP TYPE IF EXISTS "OwnerTag";
|
||||
DROP TYPE IF EXISTS "OneTimeEventType";
|
||||
DROP TYPE IF EXISTS "TransitionDecision";
|
||||
DROP TYPE IF EXISTS "PositionType";
|
||||
|
||||
-- Plan: plan-spezifische Pensionsalter-Overrides
|
||||
ALTER TABLE "Plan" ADD COLUMN "retirementAgeA" INTEGER;
|
||||
ALTER TABLE "Plan" ADD COLUMN "retirementAgeB" INTEGER;
|
||||
|
||||
-- Neue Enums
|
||||
CREATE TYPE "OwnerRole" AS ENUM ('PERSON_A', 'PERSON_B', 'HOUSEHOLD');
|
||||
CREATE TYPE "ElementCategory" AS ENUM ('INCOME', 'EXPENSE', 'AHV', 'PENSION_FUND', 'PILLAR_3A', 'REAL_ESTATE', 'OTHER_ASSET', 'OTHER_DEBT');
|
||||
|
||||
-- FinancialElement
|
||||
CREATE TABLE "FinancialElement" (
|
||||
"id" TEXT NOT NULL,
|
||||
"planId" TEXT NOT NULL,
|
||||
"category" "ElementCategory" NOT NULL,
|
||||
"name" TEXT NOT NULL,
|
||||
"ownerRole" "OwnerRole",
|
||||
"orderIndex" INTEGER NOT NULL DEFAULT 0,
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
CONSTRAINT "FinancialElement_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- ElementPhaseValue
|
||||
CREATE TABLE "ElementPhaseValue" (
|
||||
"id" TEXT NOT NULL,
|
||||
"elementId" TEXT NOT NULL,
|
||||
"phaseId" TEXT NOT NULL,
|
||||
"data" JSONB NOT NULL,
|
||||
CONSTRAINT "ElementPhaseValue_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
CREATE UNIQUE INDEX "ElementPhaseValue_elementId_phaseId_key" ON "ElementPhaseValue"("elementId", "phaseId");
|
||||
|
||||
-- ElementTransitionValue
|
||||
CREATE TABLE "ElementTransitionValue" (
|
||||
"id" TEXT NOT NULL,
|
||||
"elementId" TEXT NOT NULL,
|
||||
"fromPhaseId" TEXT NOT NULL,
|
||||
"data" JSONB NOT NULL,
|
||||
CONSTRAINT "ElementTransitionValue_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
CREATE UNIQUE INDEX "ElementTransitionValue_elementId_fromPhaseId_key" ON "ElementTransitionValue"("elementId", "fromPhaseId");
|
||||
|
||||
-- Foreign Keys
|
||||
ALTER TABLE "FinancialElement" ADD CONSTRAINT "FinancialElement_planId_fkey" FOREIGN KEY ("planId") REFERENCES "Plan"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
ALTER TABLE "ElementPhaseValue" ADD CONSTRAINT "ElementPhaseValue_elementId_fkey" FOREIGN KEY ("elementId") REFERENCES "FinancialElement"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
ALTER TABLE "ElementPhaseValue" ADD CONSTRAINT "ElementPhaseValue_phaseId_fkey" FOREIGN KEY ("phaseId") REFERENCES "Phase"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
ALTER TABLE "ElementTransitionValue" ADD CONSTRAINT "ElementTransitionValue_elementId_fkey" FOREIGN KEY ("elementId") REFERENCES "FinancialElement"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
ALTER TABLE "ElementTransitionValue" ADD CONSTRAINT "ElementTransitionValue_fromPhaseId_fkey" FOREIGN KEY ("fromPhaseId") REFERENCES "Phase"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
Reference in New Issue
Block a user