update
This commit is contained in:
@@ -93,12 +93,13 @@ export async function chatBaustein({ topic, baustein, section, messages, provide
|
||||
|
||||
export async function pruefeBaustein({
|
||||
topic, baustein, section, provider,
|
||||
aktion = 'frage', frage = '', letzte_bewertung = '', score_vor_frage = 0, tier2 = false, messages = [],
|
||||
aktion = 'frage', frage = '', letzte_bewertung = '', score_vor_frage = 0, streak = 0,
|
||||
tier2 = false, tier3 = false, messages = [],
|
||||
}) {
|
||||
const res = await fetch(`${BASE}/bausteine/pruefung`, {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify({ topic, baustein, section, aktion, frage, letzte_bewertung, score_vor_frage, tier2, messages, provider }),
|
||||
body: JSON.stringify({ topic, baustein, section, aktion, frage, letzte_bewertung, score_vor_frage, streak, tier2, tier3, messages, provider }),
|
||||
})
|
||||
return jsonOrThrow(res)
|
||||
}
|
||||
|
||||
@@ -80,6 +80,8 @@ const pruefLoading = ref(false)
|
||||
const aktuelleFrage = ref('') // ankert Bewertung/Diskussion
|
||||
const letztesFeedback = ref('') // Kontext für die Diskussion über eine Bewertung
|
||||
const scoreVorFrage = ref(0) // Score, als die aktuelle Frage gestellt wurde → driftfreies (Re-)Bewerten
|
||||
const streak = ref(0) // aktuelle Folge korrekter Antworten im Baustein
|
||||
const streakVorFrage = ref(0) // Streak, als die aktuelle Frage gestellt wurde (driftfrei)
|
||||
const naechsteFrage = ref(null) // im Hintergrund vorbereitete nächste Frage (Prefetch)
|
||||
let prefetchPromise = null // laufender Hintergrund-Abruf (verhindert Doppel-Prefetch)
|
||||
const pruefMessagesEl = ref(null)
|
||||
@@ -134,6 +136,7 @@ function frageZeigen(text) {
|
||||
aktuelleFrage.value = text
|
||||
letztesFeedback.value = ''
|
||||
scoreVorFrage.value = st.value.gute_antworten
|
||||
streakVorFrage.value = streak.value
|
||||
pruefMessages.value.push({ role: 'assistant', kind: 'frage', content: text })
|
||||
pruefPhase.value = 'frage_offen'
|
||||
}
|
||||
@@ -237,7 +240,7 @@ function bewerten(res) {
|
||||
function antwortPayload() {
|
||||
return {
|
||||
aktion: 'antwort', frage: aktuelleFrage.value, score_vor_frage: scoreVorFrage.value,
|
||||
tier2: props.tier2, tier3: props.tier3,
|
||||
streak: streakVorFrage.value, tier2: props.tier2, tier3: props.tier3,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -245,12 +248,18 @@ function antwortPayload() {
|
||||
async function verdictPruefen() {
|
||||
const meine = ++pruefenRun
|
||||
const ziel = letzteFeedbackMsg
|
||||
const warAbsolviert = st.value.absolviert
|
||||
const warVerstanden = st.value.verstanden
|
||||
try {
|
||||
const res = await pruefeBaustein({
|
||||
topic: props.topic, baustein: props.baustein, section: props.section,
|
||||
provider: props.provider, messages: pruefDialog(), ...antwortPayload(), aktion: 'antwort_pruefen',
|
||||
})
|
||||
if (meine !== pruefenRun) return // eine neuere Bewertung läuft → diese verwerfen
|
||||
// Streak driftfrei aus streakVorFrage neu setzen; Reset beim ersten Erreichen von 3/10.
|
||||
let neu = res.bewertung === 'gut' ? streakVorFrage.value + 1 : 0
|
||||
if ((res.absolviert && !warAbsolviert) || (res.verstanden && !warVerstanden)) neu = 0
|
||||
streak.value = neu
|
||||
applyPruefung(res)
|
||||
if (ziel) {
|
||||
if (res.bewertung !== ziel.bewertung || (res.feedback && res.feedback !== ziel.content)) {
|
||||
|
||||
Reference in New Issue
Block a user