Scoring-Methodik
Überblick: Dreistufige Berechnung
Der Gesamt-Score entsteht in drei Schritten:
Schritt 1: Fragen-Scoring
Jede Frage hat 2–5 Antwortoptionen. Jede Option hat einen festen Punktwert zwischen 0 und 100, der den Digitalisierungsgrad dieser Antwort widerspiegelt. Diese Werte sind in data/fragen.json hinterlegt.
Beispiel — Frage 1.1: „Wie erstellen Sie Rechnungen und Angebote?"
| Antwort | Punkte | Begründung |
|---|---|---|
| Handschriftlich / Word | 0 | Keine Digitalisierung |
| Excel-Vorlage | 25 | Grundlegende Digitalisierung ohne Automatisierung |
| Faktura-Software | 75 | Professionelle Lösung mit Automatisierungspotenzial |
| Voll integriert mit CRM | 100 | Maximale Integration und Automatisierung |
Schritt 2: Kategorie-Score-Berechnung
Der Kategorie-Score normiert die erreichten Punkte auf das tatsächlich erreichbare Maximum der beantworteten Fragen. Nicht beantwortete Fragen werden nicht bestraft.
Konkretes Rechenbeispiel — Kategorie „Verwaltung & Buchhaltung" (3 von 11 Fragen beantwortet):
Frage 1.1 → Antwort: Faktura-Software → 75 Punkte (MaxMöglich: 100)
Frage 1.2 → Antwort: Excel-Vorlage → 25 Punkte (MaxMöglich: 100)
Frage 1.4 → Antwort: Voll integriert → 100 Punkte (MaxMöglich: 100)
KategorieScore = (75 + 25 + 100) / (100 + 100 + 100) × 100
= 200 / 300 × 100
= 66,7 → gerundet: 67Schritt 3: Gesamt-Score mit Branchengewichtung
Die 10 Kategorie-Scores werden nicht einfach gemittelt, sondern branchenspezifisch gewichtet. Ein Steuerberater bekommt beispielsweise höheres Gewicht auf IT-Sicherheit und Compliance als ein Online-Händler.
Alle Gewichte einer Branche summieren sich auf 1,0 (100 %). Wurden die Gewichte vom Nutzer manuell angepasst, gelten die Custom-Gewichte statt der Branchenstandards.
Kategorie Score Gewicht Beitrag ───────────────────────────────────────────────────── Verwaltung & Buchhaltung 67 11% 7,37 Kundenmanagement 40 10% 4,00 Kommunikation 55 11% 6,05 IT-Sicherheit 30 14% 4,20 Dokumentenmanagement 20 17% 3,40 Online-Präsenz 15 7% 1,05 Compliance & Recht 22 11% 2,42 Digitale Strategie 10 8% 0,80 Unternehmenskultur 35 7% 2,45 Nachhaltigkeit 25 4% 1,00 ───────────────────────────────────────────────────── GesamtScore 32,74 → 33
Implementierung (Quellcode-Auszug)
Die Berechnung ist vollständig in src/utils/scoring.ts implementiert. Die Scoring-Berechnung erfolgt transparent und nachvollziehbar nach dem folgenden Algorithmus.
// src/utils/scoring.ts (vereinfacht)
function berechneKategorieScore(antworten, kategorie) {
const beantwortet = kategorie.fragen.filter(f => antworten[f.id] !== undefined);
if (beantwortet.length === 0) return 0;
const summe = beantwortet.reduce((s, f) => s + antworten[f.id], 0);
const maxScore = beantwortet.reduce((s, f) => s + Math.max(...f.optionen.map(o => o.score)), 0);
return Math.round((summe / maxScore) * 100);
}
function berechneGesamtScore(antworten, kategorien, gewichte, korrekturfaktor) {
const kategorieScores = {};
for (const kat of kategorien) {
kategorieScores[kat.id] = berechneKategorieScore(antworten, kat);
}
// Gewichte auf Summe 1.0 normalisieren (auch bei eigenen Gewichten)
const katIds = Object.keys(kategorieScores);
const gewichtSumme = katIds.reduce((s, id) => s + (gewichte[id] ?? 0), 0);
const normFaktor = gewichtSumme > 0 ? 1 / gewichtSumme : 0;
let gewichteterScore = 0;
for (const [katId, score] of Object.entries(kategorieScores)) {
gewichteterScore += score * (gewichte[katId] ?? 0) * normFaktor;
}
// Schnell-Check-Korrekturfaktor + Begrenzung auf 0–100
const gesamt = Math.min(100, Math.max(0, Math.round(gewichteterScore * (korrekturfaktor ?? 1))));
return { gesamt, kategorieScores };
}