update
This commit is contained in:
@@ -98,8 +98,16 @@ let prefetchPromise = null // laufender Hintergrund-Abruf (verhindert Dopp
|
||||
|
||||
// Session-Cache: Prüfungs-Verlauf pro Baustein über Remounts hinweg halten (nur im Fokus,
|
||||
// dort läuft die Prüfung). Wiederherstellen beim Mount, bei jeder Änderung sichern.
|
||||
const pruefKey = `${props.topic}::${props.baustein}`
|
||||
function cacheSave() {
|
||||
if (props.mode !== 'full') return
|
||||
setPruef(pruefKey, {
|
||||
messages: pruefMessages.value, phase: pruefPhase.value,
|
||||
aktuelleFrage: aktuelleFrage.value, letztesFeedback: letztesFeedback.value,
|
||||
scoreVorFrage: scoreVorFrage.value, streakVorFrage: streakVorFrage.value,
|
||||
})
|
||||
}
|
||||
if (props.mode === 'full') {
|
||||
const pruefKey = `${props.topic}::${props.baustein}`
|
||||
const c = getPruef(pruefKey)
|
||||
if (c) {
|
||||
pruefMessages.value = c.messages
|
||||
@@ -109,13 +117,10 @@ if (props.mode === 'full') {
|
||||
scoreVorFrage.value = c.scoreVorFrage
|
||||
streakVorFrage.value = c.streakVorFrage
|
||||
}
|
||||
// watch sichert live; cacheSave() in pruefSenden fängt spät (post-unmount) eintreffende Antworten.
|
||||
watch(
|
||||
[pruefMessages, pruefPhase, aktuelleFrage, letztesFeedback, scoreVorFrage, streakVorFrage],
|
||||
() => setPruef(pruefKey, {
|
||||
messages: pruefMessages.value, phase: pruefPhase.value,
|
||||
aktuelleFrage: aktuelleFrage.value, letztesFeedback: letztesFeedback.value,
|
||||
scoreVorFrage: scoreVorFrage.value, streakVorFrage: streakVorFrage.value,
|
||||
}),
|
||||
cacheSave,
|
||||
{ deep: true },
|
||||
)
|
||||
}
|
||||
@@ -158,10 +163,11 @@ async function pruefSenden(payload, onOk) {
|
||||
if (run !== pruefRun) return
|
||||
onOk(res)
|
||||
applyPruefung(res)
|
||||
cacheSave() // auch wenn die Komponente schon unmountet ist (Watcher tot)
|
||||
pruefScroll()
|
||||
nextTick(() => pruefInputEl.value?.focus())
|
||||
} catch {
|
||||
if (run === pruefRun) pruefMessages.value.push({ role: 'assistant', kind: 'fehler', content: 'Hat nicht geklappt — bitte erneut.' })
|
||||
if (run === pruefRun) { pruefMessages.value.push({ role: 'assistant', kind: 'fehler', content: 'Hat nicht geklappt — bitte erneut.' }); cacheSave() }
|
||||
} finally {
|
||||
if (run === pruefRun) pruefLoading.value = false
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user