/* Seite KI-Server (ki-server.html): lokale KI-Server für KMU – Planung, Beschaffung, Aufbau, Betreuung. Preise und Kostenrechner aus angebote.js; Bausteine aus seiten-bausteine.jsx. Hauptargument ist die Datenhoheit; Kosten werden nur mit offenen Annahmen verglichen (Spec Abschnitt 10). Spec: docs/superpowers/specs/2026-10-08-neue-leistungsseiten-design.md, Abschnitt 5 */ // Kostenrechner (Spec 5.2) als reine Funktion – im Browser direkt prüfbar: // kiKostenVergleich({ nutzer: 25, cloudPreis: 21, jahre: 3 }) // urteil: "lokal" (über 10 % günstiger), "gleich" (±10 %), "cloud" (über 10 % teurer), "anfrage" (über 150 Nutzer) function kiKostenVergleich({ nutzer, cloudPreis, jahre }, ki = window.SAWORA_ANGEBOTE.kiServer) { const n = Math.min(250, Math.max(5, Math.round(Number(nutzer) || 0))); // Leeres Preisfeld (während der Eingabe) = Standardpreis, sonst zeigte der Rechner kurz ein Ergebnis mit 5 € const preis = String(cloudPreis).trim() === "" ? ki.cloudPreisStandard : Number(String(cloudPreis).replace(",", ".")) || 0; const p = Math.min(100, Math.max(5, preis)); const monate = Number(jahre) === 5 ? 60 : 36; const cloud = n * p * monate; const paket = ki.pakete.find((x) => n <= x.nutzerBis) || null; if (!paket) return { n, p, monate, cloud, paket: null, lokal: null, strom: null, abweichung: null, urteil: "anfrage" }; const strom = (paket.stromWatt / 1000) * 24 * 365 * (monate / 12) * ki.strompreisKwh; const lokal = paket.einmaligAb + paket.betreuungAb * monate + strom; const abweichung = (lokal - cloud) / cloud; const urteil = abweichung < -0.1 ? "lokal" : abweichung > 0.1 ? "cloud" : "gleich"; return { n, p, monate, cloud, paket, lokal, strom, abweichung, urteil }; } // Nutzerzahl → Auswahl im Anfrageformular const NUTZER_SPANNEN = [[25, "bis 25"], [50, "26–50"], [150, "51–150"], [Infinity, "über 150"]]; const nutzerSpanne = (n) => NUTZER_SPANNEN.find(([max]) => n <= max)[1]; const KI_GRUENDE = [ { Icon: Lock, titel: "Datenhoheit", text: "Ihre Daten verlassen Ihr Netzwerk nicht. Kein Cloud-Anbieter liest mit – wichtig für DSGVO, Berufsgeheimnis und Geschäftsgeheimnisse." }, { Icon: Receipt, titel: "Kein Preis pro Nutzer", text: "Einmal anschaffen, monatlich betreuen lassen. Mehr Mitarbeiter mit KI-Zugang kosten nicht mehr – bis zur Leistungsgrenze des Pakets." }, { Icon: WifiOff, titel: "Unabhängigkeit", text: "Offene KI-Modelle auf Ihrer eigenen Hardware. Kein Anbieter kann Preise erhöhen oder Funktionen abschalten – und es läuft auch ohne Internet." }, ]; const KI_EINSATZ = [ { Icon: MessageSquare, titel: "Eigener Chat-Assistent", text: "Wie ChatGPT, nur auf Ihrem Server: Fragen stellen, Texte entwerfen, übersetzen." }, { Icon: Search, titel: "Firmenwissen durchsuchen", text: "Handbücher, Angebote, Verträge: Die KI findet Antworten in Ihren eigenen Dokumenten." }, { Icon: FileText, titel: "Texte und Protokolle", text: "Angebote, E-Mails und Besprechungsprotokolle in Minuten statt Stunden." }, { Icon: Smartphone, titel: "Zugriff von unterwegs", text: "Sicher per VPN-Tunnel – aus dem Büro, dem Homeoffice oder von der Baustelle." }, ]; const KI_SCHRITTE = [ { when: "Schritt 01 · kostenlos", title: "Beratung & Planung", body: "Wir klären Anwendungsfälle, Nutzerzahl und Daten – und rechnen ehrlich, ob lokal oder Cloud für Sie besser passt.", cta: "#anfrage", ctaLabel: "Erstgespräch anfragen" }, { when: "Schritt 02 · nach Freigabe", title: "Beschaffung", body: "Wir besorgen Server, Grafikkarten und Zubehör zu tagesaktuellen Preisen. Sie bekommen vorher ein festes Angebot." }, { when: "Schritt 03 · vor Ort", title: "Aufbau & Einrichtung", body: "Rack, Netzwerk, Firewall und VPN-Tunnel; KI-Modelle, Chat-Oberfläche und Benutzerkonten – fertig eingerichtet." }, { when: "Schritt 04 · laufend", title: "Betreuung", body: "Updates, neue Modelle, Überwachung und Hilfe bei Fragen – mit Auftragsverarbeitungsvertrag für den Wartungszugriff." }, ]; const KI_FAQ = [ { q: "Ist ein eigener KI-Server günstiger als die Cloud?", a: "Das hängt von Nutzerzahl und Laufzeit ab. Ein eigener Server kann günstiger, etwa gleich teuer oder teurer sein – am günstigsten wird er, wenn ein Paket gut ausgelastet ist und Sie ihn mehrere Jahre nutzen. Rechnen Sie es oben im Kostenrechner mit Ihren Zahlen nach. Der wichtigste Grund für einen eigenen Server bleibt: Ihre Daten bleiben im Haus." }, { q: "Welche KI-Modelle laufen darauf?", a: "Offene Modelle, die Sie ohne Lizenzkosten pro Nutzer betreiben können, zum Beispiel aus den Familien Llama, Mistral, Qwen oder gpt-oss. Welches Modell passt, hängt von Ihren Aufgaben und der Hardware ab – das klären wir im Erstgespräch." }, { q: "Wie viel Platz und Strom braucht das?", a: "Das Kompakt-Paket ist kaum größer als ein Buch und braucht im Mittel etwa 100 Watt. Team läuft als Workstation im Büro oder Serverraum (rund 400 Watt). Business gehört in einen Serverschrank mit USV und braucht im Mittel etwa 1,5 kW – den Platz planen wir mit Ihnen." }, { q: "Was passiert bei einem Ausfall?", a: "Mit Betreuungsvertrag überwachen wir den Server, spielen Updates ein und kümmern uns über die Herstellergarantie um Ersatzteile. Konfiguration und Daten sichern wir regelmäßig, damit nach einem Defekt schnell wieder alles läuft." }, { q: "Ist das DSGVO-konform?", a: "Ihre Daten verlassen Ihr Netzwerk nicht – das ist die beste Grundlage. Für unseren Wartungszugriff schließen wir einen Auftragsverarbeitungsvertrag. Ob Ihr konkreter Einsatz datenschutzrechtlich passt, klären Sie am besten mit Ihrem Datenschutzbeauftragten; wir liefern dafür die technischen Angaben." }, { q: "Gibt es eine Förderung?", a: "Für Unternehmen in NRW fördert das Programm NRW.BANK.Impuls KI die Beratung mit 50 % (höchstens 25.000 €). Der Kauf der Hardware wird nicht gefördert. Aktuell können keine Anträge gestellt werden, weil die verfügbaren Mittel ausgeschöpft sind. Wir behalten das Programm im Blick und sagen Ihnen im Erstgespräch, ob und wann ein Antrag für Sie in Frage kommt." }, ]; // Paketkarten im Stil der Preiskarten (preise.html); das vom Rechner gewählte Paket ist hervorgehoben function KiPakete({ ki, passend, onWaehlen }) { return ( Drei Größen, klare Preise.} lead="Jedes Paket inklusive Hardware, Planung und Einrichtung – mit Chat-Oberfläche, Benutzerkonten und VPN-Zugang. Die Betreuung läuft monatlich." >
{ki.pakete.map((p, i) => { const match = passend === p.id; return (
Bis {p.nutzerBis} Nutzer {match && Passt zu Ihrer Nutzerzahl}

{p.name}

{p.hardware}

einmalig ab
{formatEuro(p.einmaligAb)}
netto, inkl. Hardware, Planung und Einrichtung
Betreuung ab {formatEuro(p.betreuungAb)} netto / Monat
); })}

{ki.hinweis}

); } // Mobbin-Pattern: Rechner mit Reglern links, Ergebnis-Panel rechts -> MOBBIN-PATTERNS.md, Abschnitt 17 function KostenRechner({ ki, eingabe, setEingabe, onAnfrage }) { const r = kiKostenVergleich(eingabe, ki); const euro = (x) => formatEuro(Math.round(x)); const jahre = r.monate / 12; const groesster = Math.max(r.cloud, r.lokal || 0); const breite = (x) => Math.max(4, Math.round((x / groesster) * 100)) + "%"; const strompreis = ki.strompreisKwh.toLocaleString("de-DE", { minimumFractionDigits: 2 }) + " €"; const urteil = { lokal: <>Über {jahre} Jahre spart ein eigener Server ca. {euro(r.cloud - r.lokal)} – und Ihre Daten bleiben im Haus., gleich: <>Über {jahre} Jahre etwa gleich teuer – aber Ihre Daten bleiben im Haus., cloud: <>Bei {r.n} Nutzern ist die Cloud über {jahre} Jahre ca. {euro((r.lokal || 0) - r.cloud)} günstiger. Ein eigener Server lohnt sich für Sie vor allem wegen Datenschutz und Unabhängigkeit., anfrage: <>Für mehr als {ki.pakete[ki.pakete.length - 1].nutzerBis} Nutzer planen wir den Ausbau individuell – wir rechnen ihn gern mit Ihnen durch., }[r.urteil]; return ( Cloud oder eigener Server? Ehrlich gerechnet.} lead="Der Rechner vergleicht ein Cloud-Abo mit dem passenden Paket – auch dann, wenn die Cloud günstiger ist. Alle Annahmen stehen darunter." >
setEingabe({ ...eingabe, nutzer: e.target.value })} aria-label="Nutzerzahl" aria-valuetext={r.n + " Nutzer"} /> setEingabe({ ...eingabe, nutzer: e.target.value })} onBlur={() => setEingabe({ ...eingabe, nutzer: r.n })} />
setEingabe({ ...eingabe, cloudPreis: e.target.value })} onBlur={() => setEingabe({ ...eingabe, cloudPreis: String(r.p) })} aria-describedby="rechner-preis-hinweis" />

{ki.cloudPreisHinweis}

Zeitraum
{[3, 5].map((j) => ( ))}

Server-Hardware hält in der Regel 4–5 Jahre.

Ergebnis über {jahre} Jahre
Cloud-Abo ({r.n} × {formatEuro(r.p)} × {r.monate} Monate)
{euro(r.cloud)}
Eigener Server{r.paket ? " (Paket " + r.paket.name + ")" : ""}
{r.paket ? euro(r.lokal) : "auf Anfrage"}
{r.paket && <>

{formatEuro(r.paket.einmaligAb)} einmalig + {formatEuro(r.paket.betreuungAb)} × {r.monate} Monate Betreuung + ca. {euro(r.strom)} Strom

}

{urteil}

Alle Beträge netto. Eigener Server: Ab-Preise des Pakets für bis zu {r.paket ? r.paket.nutzerBis : ki.pakete[ki.pakete.length - 1].nutzerBis} Nutzer; Strom geschätzt mit {r.paket ? r.paket.stromWatt.toLocaleString("de-DE") : "–"} W im Mittel und {strompreis} pro kWh. Ohne API- und Volumenkosten der Cloud. Cloud-Preise Stand 10/2026, ohne Gewähr.

); } function KiServerPage() { const ki = (window.SAWORA_ANGEBOTE || {}).kiServer; const [vorauswahl, setVorauswahl] = useState(null); const [eingabe, setEingabe] = useState({ nutzer: 25, cloudPreis: String(ki ? ki.cloudPreisStandard : 21), jahre: 3 }); const passend = ki ? (kiKostenVergleich(eingabe, ki).paket || {}).id : null; const anfragen = (werte) => { setVorauswahl(werte); scrollToId("anfrage"); }; return ( KI im eigenen Haus. Ihre Daten bleiben bei Ihnen.} lead="Wir planen, beschaffen, richten ein und betreuen KI-Server für Ihr Unternehmen – mit sicherem Zugriff per VPN und ohne dass Daten Ihr Netzwerk verlassen." actions={Erstgespräch anfragen } facts={[["Daten verlassen Ihr Netzwerk nicht", "primary"], ["Planung bis Betreuung", "secondary"], ["Kosten unabhängig von der Nutzerzahl", "primary"], ["Beratung in NRW förderfähig", "secondary"]]} /> Ihre KI. Ihre Hardware. Ihre Daten.} lead="Cloud-KI schickt jede Frage und jedes Dokument an fremde Server. Ein eigener KI-Server arbeitet in Ihrem Netzwerk." > Das kann Ihr KI-Server.} lead="Eingerichtet für die Aufgaben, die in Ihrem Alltag Zeit kosten – und für alle Mitarbeiter mit eigenem Zugang." > Von der Planung bis zum laufenden Betrieb.} lead="Vier Etappen, ein Ansprechpartner – um die Technik müssen Sie sich nicht kümmern." /> {ki ? ( <> anfragen({ paket: p.name })} /> anfragen({ nutzer: nutzerSpanne(r.n), paket: r.paket ? r.paket.name : "Noch offen" })} /> ) : ( Preise auf Anfrage.} lead="Schreiben Sie uns kurz, wie viele Personen die KI nutzen sollen – Sie bekommen ein individuelles Angebot." /> )} Lassen Sie uns Ihren KI-Server planen.} lead="Kurz die Eckdaten – wir melden uns innerhalb von 24 Stunden für ein kostenloses Erstgespräch." felder={[ { name: "nutzer", label: "Wie viele Personen sollen die KI nutzen?", art: "select", optionen: NUTZER_SPANNEN.map(([, t]) => t) }, { name: "paket", label: "Paket", art: "select", optionen: [...(ki ? ki.pakete.map((p) => p.name) : []), "Noch offen"] }, { name: "nachricht", label: "Wofür möchten Sie KI einsetzen? (optional)", art: "textarea", placeholder: "z. B. Angebote schreiben, interne Dokumente durchsuchen, Protokolle zusammenfassen" }, ]} vorauswahl={vorauswahl} /> ); } Object.assign(window, { kiKostenVergleich }); window.SAWORA_SEITEN = Object.assign(window.SAWORA_SEITEN || {}, { "ki-server": KiServerPage });