fix(pitch-deck): AppSec tab — remove Compliance USPs, reorder sections
All checks were successful
Build pitch-deck / build-push-deploy (push) Successful in 1m11s
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 34s
CI / test-python-voice (push) Successful in 35s
CI / test-bqas (push) Successful in 32s
All checks were successful
Build pitch-deck / build-push-deploy (push) Successful in 1m11s
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 34s
CI / test-python-voice (push) Successful in 35s
CI / test-bqas (push) Successful in 32s
- Removed USP section (GDPR, AI Act, CRA etc.) — these are Compliance, not AppSec - Removed Compliance-only features from APPSEC_FEATURES array - Reordered: Competitors → Effizienz-Kennzahlen → AppSec Features → Score Summary Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -404,15 +404,7 @@ interface AppSecFeature {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const APPSEC_FEATURES: AppSecFeature[] = [
|
const APPSEC_FEATURES: AppSecFeature[] = [
|
||||||
// ComplAI USPs — kein AppSec-Anbieter hat dies
|
// Pure AppSec Features only (Compliance USPs removed — belong on Compliance tabs)
|
||||||
{ de: 'DSGVO / GDPR Compliance', en: 'GDPR Compliance', bp: true, snyk: false, veracode: false, checkmarx: false, sonar: false, semgrep: false, pentera: false, invicti: false, intruder: false, isUSP: true },
|
|
||||||
{ de: 'AI Act Compliance', en: 'AI Act Compliance', bp: true, snyk: false, veracode: false, checkmarx: false, sonar: false, semgrep: false, pentera: false, invicti: false, intruder: false, isUSP: true },
|
|
||||||
{ de: 'CRA & NIS2 Compliance', en: 'CRA & NIS2 Compliance', bp: true, snyk: false, veracode: false, checkmarx: false, sonar: false, semgrep: false, pentera: false, invicti: false, intruder: false, isUSP: true },
|
|
||||||
{ de: '57 Compliance-Module (SDK)', en: '57 Compliance Modules (SDK)', bp: true, snyk: false, veracode: false, checkmarx: false, sonar: false, semgrep: false, pentera: false, invicti: false, intruder: false, isUSP: true },
|
|
||||||
{ de: 'Self-Hosted KI (On-Premise)', en: 'Self-Hosted AI (On-Premise)', bp: true, snyk: false, veracode: false, checkmarx: false, sonar: false, semgrep: false, pentera: false, invicti: false, intruder: false, isUSP: true },
|
|
||||||
{ de: 'PII-Redaction LLM Gateway', en: 'PII Redaction LLM Gateway', bp: true, snyk: false, veracode: false, checkmarx: false, sonar: false, semgrep: false, pentera: false, invicti: false, intruder: false, isUSP: true },
|
|
||||||
{ de: 'Firmware & Embedded-Security', en: 'Firmware & Embedded Security', bp: true, snyk: false, veracode: 'partial', checkmarx: false, sonar: false, semgrep: false, pentera: false, invicti: false, intruder: false, isUSP: true },
|
|
||||||
// Shared AppSec Features
|
|
||||||
{ de: 'SAST (Static Analysis)', en: 'SAST (Static Analysis)', bp: true, snyk: true, veracode: true, checkmarx: true, sonar: true, semgrep: true, pentera: false, invicti: false, intruder: false, isUSP: false },
|
{ de: 'SAST (Static Analysis)', en: 'SAST (Static Analysis)', bp: true, snyk: true, veracode: true, checkmarx: true, sonar: true, semgrep: true, pentera: false, invicti: false, intruder: false, isUSP: false },
|
||||||
{ de: 'DAST (Dynamic Analysis)', en: 'DAST (Dynamic Analysis)', bp: true, snyk: false, veracode: true, checkmarx: true, sonar: false, semgrep: false, pentera: true, invicti: true, intruder: true, isUSP: false },
|
{ de: 'DAST (Dynamic Analysis)', en: 'DAST (Dynamic Analysis)', bp: true, snyk: false, veracode: true, checkmarx: true, sonar: false, semgrep: false, pentera: true, invicti: true, intruder: true, isUSP: false },
|
||||||
{ de: 'SCA (Software Composition)', en: 'SCA (Software Composition)', bp: true, snyk: true, veracode: true, checkmarx: true, sonar: 'partial', semgrep: 'partial', pentera: false, invicti: false, intruder: false, isUSP: false },
|
{ de: 'SCA (Software Composition)', en: 'SCA (Software Composition)', bp: true, snyk: true, veracode: true, checkmarx: true, sonar: 'partial', semgrep: 'partial', pentera: false, invicti: false, intruder: false, isUSP: false },
|
||||||
@@ -814,33 +806,6 @@ export default function CompetitionSlide({ lang, features, competitors }: Compet
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{/* AppSec Feature Matrix */}
|
|
||||||
<div className="space-y-2">
|
|
||||||
<div>
|
|
||||||
<SectionHeader
|
|
||||||
label={lang === 'de' ? 'USP — nur COMPLAI' : 'USP — COMPLAI only'}
|
|
||||||
count={APPSEC_FEATURES.filter(f => f.isUSP).length}
|
|
||||||
open={openSections.has('appsec-usp')}
|
|
||||||
onToggle={() => toggleSection('appsec-usp')}
|
|
||||||
accent="text-indigo-400"
|
|
||||||
/>
|
|
||||||
{openSections.has('appsec-usp') && (
|
|
||||||
<AppSecFeatureTable features={APPSEC_FEATURES.filter(f => f.isUSP)} lang={lang} highlight />
|
|
||||||
)}
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<SectionHeader
|
|
||||||
label={lang === 'de' ? 'Alle AppSec Features' : 'All AppSec Features'}
|
|
||||||
count={APPSEC_FEATURES.length}
|
|
||||||
open={openSections.has('appsec-all')}
|
|
||||||
onToggle={() => toggleSection('appsec-all')}
|
|
||||||
/>
|
|
||||||
{openSections.has('appsec-all') && (
|
|
||||||
<AppSecFeatureTable features={APPSEC_FEATURES} lang={lang} />
|
|
||||||
)}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
{/* Efficiency Ratios — AppSec */}
|
{/* Efficiency Ratios — AppSec */}
|
||||||
<GlassCard className="!p-3 mt-4 mb-4" hover={false}>
|
<GlassCard className="!p-3 mt-4 mb-4" hover={false}>
|
||||||
<h4 className="text-xs font-semibold text-white/60 mb-2 flex items-center gap-1.5">
|
<h4 className="text-xs font-semibold text-white/60 mb-2 flex items-center gap-1.5">
|
||||||
@@ -879,6 +844,21 @@ export default function CompetitionSlide({ lang, features, competitors }: Compet
|
|||||||
</div>
|
</div>
|
||||||
</GlassCard>
|
</GlassCard>
|
||||||
|
|
||||||
|
{/* AppSec Feature Matrix */}
|
||||||
|
<div className="space-y-2 mt-4">
|
||||||
|
<div>
|
||||||
|
<SectionHeader
|
||||||
|
label={lang === 'de' ? 'Alle AppSec Features' : 'All AppSec Features'}
|
||||||
|
count={APPSEC_FEATURES.length}
|
||||||
|
open={openSections.has('appsec-all')}
|
||||||
|
onToggle={() => toggleSection('appsec-all')}
|
||||||
|
/>
|
||||||
|
{openSections.has('appsec-all') && (
|
||||||
|
<AppSecFeatureTable features={APPSEC_FEATURES} lang={lang} />
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
{/* Score Summary */}
|
{/* Score Summary */}
|
||||||
<div className="mt-4 flex items-center justify-center gap-4 flex-wrap">
|
<div className="mt-4 flex items-center justify-center gap-4 flex-wrap">
|
||||||
{[
|
{[
|
||||||
|
|||||||
Reference in New Issue
Block a user