Files
breakpilot-compliance/admin-compliance/components/sdk/compliance-optimizer/OptimizerUpsellCard.tsx
Benjamin Admin 5d53acf5dc
Some checks failed
Build + Deploy / build-admin-compliance (push) Successful in 2m17s
Build + Deploy / build-backend-compliance (push) Successful in 3m22s
Build + Deploy / build-ai-sdk (push) Successful in 1m1s
Build + Deploy / build-developer-portal (push) Successful in 1m21s
Build + Deploy / build-tts (push) Failing after 1m32s
Build + Deploy / build-document-crawler (push) Successful in 37s
Build + Deploy / build-dsms-gateway (push) Successful in 24s
CI / branch-name (push) Has been skipped
Build + Deploy / trigger-orca (push) Has been skipped
CI / guardrail-integrity (push) Has been skipped
CI / loc-budget (push) Failing after 17s
CI / secret-scan (push) Has been skipped
CI / go-lint (push) Has been skipped
CI / python-lint (push) Has been skipped
CI / nodejs-lint (push) Has been skipped
CI / nodejs-build (push) Successful in 2m55s
CI / dep-audit (push) Has been skipped
CI / sbom-scan (push) Has been skipped
CI / test-go (push) Failing after 59s
CI / test-python-backend (push) Successful in 42s
CI / test-python-document-crawler (push) Successful in 35s
CI / test-python-dsms-gateway (push) Successful in 26s
CI / validate-canonical-controls (push) Successful in 18s
feat: Upselling-Funnel Assessment → Compliance Optimizer
Verbindet das kostenlose UCCA Assessment mit dem bezahlten
Compliance Optimizer durch gezielte CTAs:

- OptimizerUpsellCard: Kontextabhaengig (CONDITIONAL→prominent, YES→dezent)
- Assessment Detail: "Optimieren" Button + CTA-Block nach Ergebnis
- Advisory Board ResultView: CTA nach Wizard-Abschluss
- Optimizer "new": Auto-Submit bei ?from_assessment={id}
- Optimizer Liste + Detail: Links zum Quell-Assessment

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-23 12:28:49 +02:00

63 lines
2.3 KiB
TypeScript

'use client'
import Link from 'next/link'
interface OptimizerUpsellCardProps {
feasibility: string
assessmentId: string
riskScore?: number
}
export function OptimizerUpsellCard({ feasibility, assessmentId, riskScore }: OptimizerUpsellCardProps) {
const isRestricted = feasibility === 'CONDITIONAL' || feasibility === 'NO'
if (isRestricted) {
return (
<div className="bg-amber-50 border-2 border-amber-300 rounded-xl p-5">
<div className="flex items-start gap-3">
<span className="text-2xl">📊</span>
<div className="flex-1">
<h3 className="text-base font-semibold text-amber-900">
{feasibility === 'NO' ? 'Use Case aktuell nicht umsetzbar' : 'Use Case eingeschraenkt machbar'}
</h3>
<p className="text-sm text-amber-800 mt-1">
Der <strong>Compliance Optimizer</strong> zeigt Ihnen die optimale Konfiguration,
um den regulatorischen Spielraum maximal auszunutzen ohne Grenzen zu ueberschreiten.
</p>
{riskScore != null && riskScore >= 50 && (
<p className="text-xs text-amber-700 mt-1">
Risiko-Score {riskScore}/100 besonders hohes Optimierungspotenzial.
</p>
)}
<Link
href={`/sdk/compliance-optimizer/new?from_assessment=${assessmentId}`}
className="inline-flex items-center gap-1 mt-3 px-4 py-2 bg-blue-600 text-white text-sm font-medium rounded-lg hover:bg-blue-700 transition-colors"
>
Jetzt optimieren
</Link>
</div>
</div>
</div>
)
}
return (
<div className="bg-blue-50 border border-blue-200 rounded-xl p-4">
<div className="flex items-center justify-between">
<div>
<h3 className="text-sm font-medium text-blue-900">Regulatorischen Spielraum pruefen</h3>
<p className="text-xs text-blue-700 mt-0.5">
Pruefen Sie ob Sie den regulatorischen Spielraum noch besser nutzen koennen.
</p>
</div>
<Link
href={`/sdk/compliance-optimizer/new?from_assessment=${assessmentId}`}
className="text-sm text-blue-600 hover:underline whitespace-nowrap"
>
Optional optimieren
</Link>
</div>
</div>
)
}