feat(marketing): Saving-Section + Landingpages + Pipeline Lessons-Learned [split-required]
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 35s
CI / test-python-voice (push) Successful in 33s
CI / test-bqas (push) Successful in 35s
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 35s
CI / test-python-voice (push) Successful in 33s
CI / test-bqas (push) Successful in 35s
Marketing-Website - Neue SavingsSection auf Homepage: "Compliance entdeckt sechsstellige Einsparungen". Pitch-Position der Cookie-Audit-Cost-Optimization-Story fuer DAX-Konzern-Sales (BMW-Case-Style: 90 Vendors -> 25 nach Konsolidierung, EUR 500k-3M / Jahr). - /savings-scan: Kostenloser 5-Min-Saving-Scan-Form (URL + E-Mail). Form-Submit ist Placeholder, soll an Compliance-Backend gehaengt werden. - /savings-methodik: 4-Stufen-Erklaerung der Cookie-Tier-Inferenz + ehrliche Caveats (Listpreise != Vertragspreise, Media-Spend nicht enthalten) + Datenquellen. - Content-de + Content-en in content.ts beide um savings-Block ergaenzt und Section-Numerierung angepasst (03=Savings, 04=Deterministic). - LOC-Split: savings-Inhalte (DE+EN, ~100 LOC) in content.savings.ts ausgelagert damit content.ts unter 500-LOC-Hard-Cap bleibt. Control-Pipeline - LESSONS-LEARNED-mc-check-types.md fuer die parallele CRA-MC-Generation. Erklaert die TEXT/PROCESS/REVIEW-Klassifikation die im Compliance-Repo retrofitted wurde. Verhindert dass CRA-MCs denselben Defekt bekommen. Mapping-Heuristik fuer verification_method -> check_type, plus Backfill-Workflow fuer ~62 ambiguous Eintraege. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,169 @@
|
||||
'use client'
|
||||
|
||||
import { useState } from 'react'
|
||||
import Navbar from '@/components/layout/Navbar'
|
||||
import Footer from '@/components/layout/Footer'
|
||||
import ChatFAB from '@/components/layout/ChatFAB'
|
||||
import PageHeader from '@/components/ui/PageHeader'
|
||||
import GlassCard from '@/components/ui/GlassCard'
|
||||
import FadeInView from '@/components/ui/FadeInView'
|
||||
import { Cookie, ShieldCheck, Mail, ArrowRight, CheckCircle2 } from 'lucide-react'
|
||||
|
||||
export default function SavingsScanPage() {
|
||||
const [url, setUrl] = useState('')
|
||||
const [email, setEmail] = useState('')
|
||||
const [submitting, setSubmitting] = useState(false)
|
||||
const [done, setDone] = useState(false)
|
||||
|
||||
async function handleSubmit(e: React.FormEvent) {
|
||||
e.preventDefault()
|
||||
if (!url || !email) return
|
||||
setSubmitting(true)
|
||||
try {
|
||||
// TODO: wire to compliance-check backend
|
||||
// For now: send to contact form / placeholder
|
||||
await new Promise(r => setTimeout(r, 800))
|
||||
setDone(true)
|
||||
} finally {
|
||||
setSubmitting(false)
|
||||
}
|
||||
}
|
||||
|
||||
return (
|
||||
<>
|
||||
<Navbar />
|
||||
<main>
|
||||
<div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
|
||||
<PageHeader
|
||||
tag="KOSTENLOSER SAVING-SCAN"
|
||||
title="In 5 Minuten zur"
|
||||
titleHighlight="sechsstelligen Saving-Schaetzung"
|
||||
subtitle="URL eingeben — wir analysieren alle Cookies, identifizieren redundante Anbieter und schaetzen jaehrliche Einsparung. Kostenlos, ohne Login, ohne Vertrieb-Termin."
|
||||
/>
|
||||
</div>
|
||||
|
||||
<section className="py-12 sm:py-16">
|
||||
<div className="max-w-3xl mx-auto px-4 sm:px-6 lg:px-8">
|
||||
{!done ? (
|
||||
<GlassCard>
|
||||
<form onSubmit={handleSubmit} className="space-y-5">
|
||||
<div>
|
||||
<label htmlFor="url" className="block text-sm font-medium text-white/70 mb-2">
|
||||
Website-URL <span className="text-red-400">*</span>
|
||||
</label>
|
||||
<input
|
||||
id="url"
|
||||
type="url"
|
||||
required
|
||||
placeholder="https://www.ihre-firma.de"
|
||||
value={url}
|
||||
onChange={e => setUrl(e.target.value)}
|
||||
className="w-full px-4 py-3 rounded-lg bg-white/[0.04] border border-white/10
|
||||
text-white placeholder-white/30 focus:border-emerald-400 focus:outline-none"
|
||||
/>
|
||||
<p className="mt-1 text-xs text-white/40">
|
||||
Wir crawlen die Startseite + automatisch erkennbare Unterseiten
|
||||
(DSI, Impressum, Cookie-Richtlinie).
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<label htmlFor="email" className="block text-sm font-medium text-white/70 mb-2">
|
||||
E-Mail fuer den Bericht <span className="text-red-400">*</span>
|
||||
</label>
|
||||
<input
|
||||
id="email"
|
||||
type="email"
|
||||
required
|
||||
placeholder="ihr.name@firma.de"
|
||||
value={email}
|
||||
onChange={e => setEmail(e.target.value)}
|
||||
className="w-full px-4 py-3 rounded-lg bg-white/[0.04] border border-white/10
|
||||
text-white placeholder-white/30 focus:border-emerald-400 focus:outline-none"
|
||||
/>
|
||||
<p className="mt-1 text-xs text-white/40">
|
||||
Bericht kommt als PDF + JSON. Die Mailadresse wird ausschliesslich
|
||||
fuer diesen Scan verwendet.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<button
|
||||
type="submit"
|
||||
disabled={submitting}
|
||||
className="inline-flex items-center gap-2 px-6 py-3 rounded-full
|
||||
bg-emerald-500 hover:bg-emerald-400 transition-colors
|
||||
text-enterprise-dark font-semibold disabled:opacity-50"
|
||||
>
|
||||
{submitting ? 'Wird gestartet …' : 'Saving-Scan starten'}
|
||||
<ArrowRight className="w-4 h-4" />
|
||||
</button>
|
||||
|
||||
<p className="text-xs text-white/40 pt-2">
|
||||
Wir analysieren ausschliesslich oeffentlich abrufbare Daten Ihrer Website.
|
||||
Keine Anmeldung, keine Daten werden gespeichert. Ergebnis innerhalb von
|
||||
~5 Minuten per E-Mail.
|
||||
</p>
|
||||
</form>
|
||||
</GlassCard>
|
||||
) : (
|
||||
<GlassCard>
|
||||
<div className="text-center py-6">
|
||||
<CheckCircle2 className="w-12 h-12 text-emerald-400 mx-auto mb-4" />
|
||||
<h3 className="text-xl font-bold mb-2">Scan gestartet</h3>
|
||||
<p className="text-white/60 mb-4">
|
||||
Wir analysieren Ihre Website jetzt. Der Bericht kommt in
|
||||
den naechsten 5 Minuten per E-Mail an <strong className="text-white/90">{email}</strong>.
|
||||
</p>
|
||||
<p className="text-xs text-white/40">
|
||||
Pruefen Sie auch Ihren Spam-Ordner.
|
||||
</p>
|
||||
</div>
|
||||
</GlassCard>
|
||||
)}
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section className="py-16">
|
||||
<div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
|
||||
<FadeInView>
|
||||
<div className="grid grid-cols-1 md:grid-cols-3 gap-6">
|
||||
<GlassCard>
|
||||
<Cookie className="w-8 h-8 text-emerald-400 mb-4" />
|
||||
<h3 className="text-lg font-bold mb-2">Was wir analysieren</h3>
|
||||
<ul className="text-sm text-white/60 space-y-2">
|
||||
<li>• Alle Cookies + Vendor-Identifikation</li>
|
||||
<li>• Funktionale Kategorisierung (Analytics, Werbung, CDN, …)</li>
|
||||
<li>• Redundanz-Detection ueber Kategorien</li>
|
||||
<li>• Cookie-Tiefenanalyse mit Tier-Inferenz</li>
|
||||
</ul>
|
||||
</GlassCard>
|
||||
<GlassCard delay={0.1}>
|
||||
<ShieldCheck className="w-8 h-8 text-emerald-400 mb-4" />
|
||||
<h3 className="text-lg font-bold mb-2">Was Sie bekommen</h3>
|
||||
<ul className="text-sm text-white/60 space-y-2">
|
||||
<li>• Geschaetzte jaehrliche Tooling-Kosten (Listpreis-Range)</li>
|
||||
<li>• Sparpotenzial pro Konsolidierungs-Kandidat</li>
|
||||
<li>• EU-Alternative pro US-Vendor</li>
|
||||
<li>• Schrems-II-Risiko-Bewertung</li>
|
||||
</ul>
|
||||
</GlassCard>
|
||||
<GlassCard delay={0.2}>
|
||||
<Mail className="w-8 h-8 text-emerald-400 mb-4" />
|
||||
<h3 className="text-lg font-bold mb-2">Was es kostet</h3>
|
||||
<ul className="text-sm text-white/60 space-y-2">
|
||||
<li>• <strong className="text-white">Erster Scan: kostenlos</strong></li>
|
||||
<li>• Kein Login, kein Vertriebs-Termin</li>
|
||||
<li>• Daten werden nicht gespeichert</li>
|
||||
<li>• PDF + JSON zum Download</li>
|
||||
</ul>
|
||||
</GlassCard>
|
||||
</div>
|
||||
</FadeInView>
|
||||
</div>
|
||||
</section>
|
||||
</main>
|
||||
<Footer />
|
||||
<ChatFAB />
|
||||
</>
|
||||
)
|
||||
}
|
||||
Reference in New Issue
Block a user