feat(pitch-deck): pipeline stats from DB on Folie 2 + Optimizer on Folie 5 + quote fix
All checks were successful
Build pitch-deck / build-push-deploy (push) Successful in 1m9s
CI / go-lint (push) Has been skipped
CI / python-lint (push) Has been skipped
CI / nodejs-lint (push) Has been skipped
CI / test-go-consent (push) Successful in 32s
CI / test-python-voice (push) Successful in 35s
CI / test-bqas (push) Successful in 33s
All checks were successful
Build pitch-deck / build-push-deploy (push) Successful in 1m9s
CI / go-lint (push) Has been skipped
CI / python-lint (push) Has been skipped
CI / nodejs-lint (push) Has been skipped
CI / test-go-consent (push) Successful in 32s
CI / test-python-voice (push) Successful in 35s
CI / test-bqas (push) Successful in 33s
Folie 2 (Executive Summary): - KPIs (Controls, Regulations) now from pitch_pipeline_stats DB - "110 Gesetze" → dynamic from DB (380+) Folie 5 (Solution): - Added Compliance Optimizer banner below 3 pillars - "Nicht nur erlaubt/verboten — maximale Ausgestaltung jedes KI-Use-Cases" USP Slide: - Quote fix: "wie weit du maximal gehen kannst" (was: "wie du maximal weit gehen kannst") Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
'use client'
|
||||
|
||||
import { useCallback } from 'react'
|
||||
import { useCallback, useEffect, useState } from 'react'
|
||||
import { Language, PitchData } from '@/lib/types'
|
||||
import { t, formatEur } from '@/lib/i18n'
|
||||
import { useFpKPIs } from '@/lib/hooks/useFpKPIs'
|
||||
@@ -25,6 +25,12 @@ export default function ExecutiveSummarySlide({ lang, data, investorId, preferre
|
||||
// Unternehmensentwicklung from fp_* tables (source of truth)
|
||||
const { kpis: fpKPIs } = useFpKPIs(isWandeldarlehen)
|
||||
|
||||
// Pipeline stats from DB
|
||||
const [pipelineStats, setPipelineStats] = useState<Record<string, { value: number }>>({})
|
||||
useEffect(() => {
|
||||
fetch('/api/pipeline-stats', { cache: 'no-store' }).then(r => r.json()).then(setPipelineStats).catch(() => {})
|
||||
}, [])
|
||||
|
||||
const funding = data.funding
|
||||
const amount = funding?.amount_eur || 0
|
||||
const amountLabel = amount >= 1_000_000
|
||||
@@ -382,8 +388,8 @@ export default function ExecutiveSummarySlide({ lang, data, investorId, preferre
|
||||
<FadeInView delay={0.25} className="mb-4">
|
||||
<div className="grid grid-cols-3 md:grid-cols-6 gap-2">
|
||||
{[
|
||||
{ value: '25.000+', label: es.controls, icon: Shield, color: '#6366f1' },
|
||||
{ value: '110', label: es.regulations, icon: Brain, color: '#60a5fa' },
|
||||
{ value: pipelineStats.unique_controls ? `${Math.round(pipelineStats.unique_controls.value / 1000)}k+` : '25k+', label: es.controls, icon: Shield, color: '#6366f1' },
|
||||
{ value: pipelineStats.legal_sources ? `${pipelineStats.legal_sources.value}+` : '380+', label: es.regulations, icon: Brain, color: '#60a5fa' },
|
||||
{ value: '10', label: es.industries, icon: Target, color: '#34d399' },
|
||||
{ value: '500K+', label: es.linesOfCode, icon: Cpu, color: '#fbbf24' },
|
||||
{ value: '80%', label: de ? 'Zeitersparnis bei\nCompliance-Prüfungen' : 'Time saved on\ncompliance checks', icon: TrendingUp, color: '#10b981' },
|
||||
|
||||
Reference in New Issue
Block a user