feat: Phase 5+6 — Finanzplan Bridge + Financials-Slide Sync

- Adapter: fp_* Tabellen → FMResult Interface (60 Monate)
- Compute-Endpoint: source=finanzplan delegiert an Finanzplan-Engine
- useFinancialModel Hook: computeFromFinanzplan() + finanzplanResults
- FinancialsSlide: Toggle "Szenario-Modell" vs "Finanzplan (Excel)"
- Gruendungsdatum fix: EK+FK auf Aug (m8), Raumkosten ab Aug
- Startup-Preisstaffel: <10 MA ab 3.600 EUR/Jahr, 14-Tage-Test

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Benjamin Admin
2026-03-26 20:15:30 +01:00
parent a58cd16f01
commit a01e6cb88e
4 changed files with 178 additions and 5 deletions

View File

@@ -1,10 +1,26 @@
import { NextRequest, NextResponse } from 'next/server'
import pool from '@/lib/db'
import { computeFinanzplan } from '@/lib/finanzplan/engine'
import { finanzplanToFMResults } from '@/lib/finanzplan/adapter'
export async function POST(request: NextRequest) {
try {
const body = await request.json()
const { scenarioId } = body
const { scenarioId, source } = body
// If source=finanzplan, use the Finanzplan engine instead
if (source === 'finanzplan') {
try {
// First run the Finanzplan compute engine
await computeFinanzplan(pool, scenarioId || undefined)
// Then adapt results to FMResult format
const result = await finanzplanToFMResults(pool, scenarioId || undefined)
return NextResponse.json(result)
} catch (error) {
console.error('Finanzplan compute error:', error)
return NextResponse.json({ error: 'Finanzplan computation failed: ' + String(error) }, { status: 500 })
}
}
if (!scenarioId) {
return NextResponse.json({ error: 'scenarioId is required' }, { status: 400 })