-- Gespeicherte Analysen (SPEZIFIKATION 3.10). -- -- Eingefroren werden EINGABEN und ERGEBNIS als Zahlen -- nicht als Bild. Beim Oeffnen wird -- nichts neu gerechnet, die gespeicherten Werte werden nur gezeichnet. Zahlen statt Pixel, -- weil der spaetere PDF-Bericht (Roadmap Nr. 11) daraus vektoriell und in Druckaufloesung -- zeichnen kann; ein Bildschirm-Bitmap waere im Druck unscharf und im Format fix. -- -- Bewusst NICHT gespeichert wird `finalWealthSorted` aus der Monte-Carlo-Simulation: ein -- Eintrag je Lauf, bei 10'000 Laeufen also megabyteweise. Fuer die Anzeige genuegen die -- abgelesenen Wahrscheinlichkeiten und die Baender. CREATE TABLE "SavedAnalysis" ( "id" TEXT NOT NULL, "planId" TEXT NOT NULL, "name" TEXT NOT NULL, -- CHART | MONTE_CARLO | SENSITIVITY. Als Text statt Enum, damit spaetere Typen (etwa -- ein Berichts-Zusammenzug) keine Schema-Migration brauchen. "type" TEXT NOT NULL, -- Kerndaten fuer die Liste, denormalisiert: So laesst sich die Uebersicht anzeigen, ohne -- die (groesseren) JSON-Felder zu laden. "scenarioName" TEXT, "versionLabel" TEXT, "metric" TEXT NOT NULL DEFAULT 'nominal', "source" TEXT NOT NULL DEFAULT 'PLAN', "summary" TEXT, "inputs" JSONB NOT NULL DEFAULT '{}', "result" JSONB NOT NULL DEFAULT '{}', "createdById" TEXT NOT NULL, "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, CONSTRAINT "SavedAnalysis_pkey" PRIMARY KEY ("id") ); CREATE INDEX "SavedAnalysis_planId_createdAt_idx" ON "SavedAnalysis"("planId", "createdAt"); ALTER TABLE "SavedAnalysis" ADD CONSTRAINT "SavedAnalysis_planId_fkey" FOREIGN KEY ("planId") REFERENCES "Plan"("id") ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE "SavedAnalysis" ADD CONSTRAINT "SavedAnalysis_createdById_fkey" FOREIGN KEY ("createdById") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;