Constructor
new AssessmentEngine(catalog)
- Source:
Example
const engine = await AssessmentEngine.create();
while (engine.hasNext()) {
const q = engine.getNextQuestion();
// ... question UI anzeigen ...
const result = engine.submitAnswer(selectedIndex);
// result.correct, result.explanation, result.funFact
}
const scores = engine.getResults();
// { history: 0.75, math: 0.5, ... }
Parameters:
| Name | Type | Description |
|---|---|---|
catalog |
Object | — Geparste assessment-questions.json |
Members
_asked :Set.<string>
- Description:
Bereits gestellte Frage-IDs
- Source:
Bereits gestellte Frage-IDs
Type:
- Set.<string>
_catalog :Object
- Description:
Rohdaten
- Source:
Rohdaten
Type:
- Object
_categoryIndex :number
- Description:
Aktuelle Kategorie (Index in _categoryOrder)
- Source:
Aktuelle Kategorie (Index in _categoryOrder)
Type:
- number
_categoryOrder :Array.<string>
- Description:
Gemischte Kategorie-Reihenfolge
- Source:
Gemischte Kategorie-Reihenfolge
Type:
- Array.<string>
_currentDifficulty :number
- Description:
Aktuelle adaptive Schwierigkeit
- Source:
Aktuelle adaptive Schwierigkeit
Type:
- number
_currentOptionMap :Array.<number>
- Description:
Aktuelle Mapping: shuffledIndex → originalIndex
- Source:
Aktuelle Mapping: shuffledIndex → originalIndex
Type:
- Array.<number>
_currentQuestion :Object|null
- Description:
Aktuell angezeigte Frage (mit gemischten Optionen)
- Source:
Aktuell angezeigte Frage (mit gemischten Optionen)
Type:
- Object | null
_finished :boolean
- Description:
Ob der Test beendet ist
- Source:
Ob der Test beendet ist
Type:
- boolean
_pool :Map.<string, Array.<Object>>
- Description:
Kategorie → verfügbare Fragen (nach Difficulty gruppiert)
- Source:
Kategorie → verfügbare Fragen (nach Difficulty gruppiert)
Type:
- Map.<string, Array.<Object>>
_questionInCategory :number
- Description:
Fragen-Zähler in aktueller Kategorie
- Source:
Fragen-Zähler in aktueller Kategorie
Type:
- number
_scores :Object.<string, Object>
- Description:
Kategorie → Tracking-Daten
- Source:
Kategorie → Tracking-Daten
Type:
- Object.<string, Object>
_totalAsked :number
- Description:
Gesamtanzahl gestellter Fragen
- Source:
Gesamtanzahl gestellter Fragen
Type:
- number
Methods
getDetailedStats() → {Object}
- Description:
Gibt detaillierte Statistiken zurück.
- Source:
Returns:
- Type
- Object
getLevel() → {'beginner'|'intermediate'|'advanced'}
- Description:
Berechnet das Gesamtlevel basierend auf den Scores.
- Source:
Returns:
- Type
- 'beginner' | 'intermediate' | 'advanced'
getNextQuestion() → {Object|null}
- Description:
Gibt die nächste Frage zurück (mit gemischten Antwortoptionen).
- Source:
Returns:
Frage-Objekt mit:
- id, question, options (gemischt!), category, difficulty
- categoryLabel, progress { current, total, categoryProgress }
- Type
- Object | null
getProgressPercent() → {number}
- Description:
Aktueller Fortschritt als Prozentwert.
- Source:
Returns:
0–100
- Type
- number
getRecommendedTopics() → {Array.<string>}
- Description:
Gibt empfohlene Themen zurück (basierend auf guten Scores).
- Source:
Returns:
Topic-Tags für die Content-Registry
- Type
- Array.<string>
getResults() → {Object.<string, number>}
- Description:
Gibt die Ergebnis-Scores pro Kategorie zurück (0.0–1.0).
Score-Berechnung berücksichtigt nicht nur Korrektheit, sondern auch die erreichte Schwierigkeitsstufe:
- Diff 1 richtig = 0.25
- Diff 2 richtig = 0.50
- Diff 3 richtig = 0.75
- Diff 4 richtig = 1.00
- Falsche Antworten = 0
- Source:
Returns:
Kategorie → Score
- Type
- Object.<string, number>
getTotalEstimate() → {number}
- Description:
Geschätzte Gesamtanzahl der Fragen.
- Source:
Returns:
- Type
- number
getWeakCategories() → {Array.<string>}
- Description:
Gibt Kategorien zurück, in denen der Nutzer schwach ist.
- Source:
Returns:
Kategorie-Keys mit Score < 0.4
- Type
- Array.<string>
hasNext() → {boolean}
- Description:
Gibt zurück, ob noch Fragen übrig sind.
- Source:
Returns:
- Type
- boolean
isFinished() → {boolean}
- Description:
Ob der Test abgeschlossen ist.
- Source:
Returns:
- Type
- boolean
submitAnswer(selectedIndex) → {Object}
- Description:
Übermittelt die Antwort des Nutzers.
- Source:
Parameters:
| Name | Type | Description |
|---|---|---|
selectedIndex |
number | — 0-basierter Index der gewählten Option (im gemischten Array) |
Returns:
Ergebnis:
- correct {boolean}
- correctIndex {number} — Index der richtigen Antwort im gemischten Array
- explanation {string}
- funFact {string|null}
- difficulty {number} — Schwierigkeit der beantworteten Frage
- nextDifficulty {number} — Nächste adaptive Schwierigkeit
- Type
- Object
(async, static) create(basePathopt) → {Promise.<AssessmentEngine>}
- Description:
Erstellt eine neue Engine und lädt den Fragenkatalog.
- Source:
Parameters:
| Name | Type | Attributes | Default | Description |
|---|---|---|---|---|
basePath |
string |
<optional> |
''
|
— Basis-Pfad für fetch |
Returns:
- Type
- Promise.<AssessmentEngine>
(static) fromCatalog(catalog) → {AssessmentEngine}
- Description:
Erstellt eine Engine mit bereits geladenem Katalog.
- Source:
Parameters:
| Name | Type | Description |
|---|---|---|
catalog |
Object | — Geparste assessment-questions.json |
Returns:
- Type
- AssessmentEngine