Correcte antwoorden kunnen meerdere keren worden ingediend tijdens feedbackfase #2

Open
opened 2026-06-21 19:59:27 +02:00 by ben · 0 comments

Wanneer een gebruiker een correct antwoord invoert, verschijnt er kort een "Goed!"-melding voordat de volgende vraag wordt geladen.

Tijdens deze feedbackfase blijft het invoerveld echter actief. Hierdoor kan de gebruiker meerdere keren op Enter drukken, waardoor hetzelfde correcte antwoord meerdere keren wordt geregistreerd.

Gevolgen:

Kunstmatig hoge scores mogelijk.
Verkeerde sessiestatistieken.
Onjuiste SRS-voortgang.
Mogelijke vervuiling van synchronisatiedata.

Reproductiestappen:

Open een woordenlijst.
Voer een correct antwoord in.
Druk herhaaldelijk op Enter terwijl de "Goed!"-melding zichtbaar is.
Observeer dat meerdere correcte antwoorden worden geregistreerd.

Gewenst gedrag:
Na het indienen van een antwoord moet verdere invoer tijdelijk worden geblokkeerd totdat de feedbackfase is afgelopen en de volgende vraag wordt geladen.

Mogelijke oplossing:
Introduceer een isSubmitting of isTransitioning statusflag.

Pseudo-code:

if (isTransitioning) return;

isTransitioning = true;

checkAnswer();

setTimeout(() => {
loadNextQuestion();
isTransitioning = false;
}, 1000);

Daarnaast kan het invoerveld tijdelijk worden uitgeschakeld tijdens de feedbackfase.

Wanneer een gebruiker een correct antwoord invoert, verschijnt er kort een "Goed!"-melding voordat de volgende vraag wordt geladen. Tijdens deze feedbackfase blijft het invoerveld echter actief. Hierdoor kan de gebruiker meerdere keren op Enter drukken, waardoor hetzelfde correcte antwoord meerdere keren wordt geregistreerd. Gevolgen: Kunstmatig hoge scores mogelijk. Verkeerde sessiestatistieken. Onjuiste SRS-voortgang. Mogelijke vervuiling van synchronisatiedata. Reproductiestappen: Open een woordenlijst. Voer een correct antwoord in. Druk herhaaldelijk op Enter terwijl de "Goed!"-melding zichtbaar is. Observeer dat meerdere correcte antwoorden worden geregistreerd. Gewenst gedrag: Na het indienen van een antwoord moet verdere invoer tijdelijk worden geblokkeerd totdat de feedbackfase is afgelopen en de volgende vraag wordt geladen. Mogelijke oplossing: Introduceer een isSubmitting of isTransitioning statusflag. Pseudo-code: if (isTransitioning) return; isTransitioning = true; checkAnswer(); setTimeout(() => { loadNextQuestion(); isTransitioning = false; }, 1000); Daarnaast kan het invoerveld tijdelijk worden uitgeschakeld tijdens de feedbackfase.
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: DEROO/woordjes#2